You are on page 1of 9

2008

Lotus Notes ve .NET

Dr. Kerem Kseolu



10/27/2008

zet
Bu dkman ierisinde, Lotus Notes ile veri alverii yapabilen .NET uygulamalarnn nasl
gelitirilebileceine dair baz anahtar noktalar bulunmaktadr.

Lotus Hazrlklar
Kullanc Hesabnn Ayarlanmas
Lotus Notes ierisinde, File Tools User ID mensne girin. Burada, entegrasyon ilerinde
kullanlacak User iin aadaki kutucuun iaretlenmi olmas gerekmektedir.

Veritabanndaki Alanlar Grmek


Lotus Notes veritabanndaki alanlarn teknik isimlerini ve detaylarn grmek iin, ncelikle veritaban
dosyasn an. Karnza kaytlar geldiinde, herhangi bir kayda sa tklayn ve Document
Properties... mensne girin.


Bu ekilde alacak olan pencere zerinde, veritabanndaki alanlarn teknik isimlerini ve semi
olduunuz dkmandaki deerleri grebilirsiniz.


Bu alanlara, .NET ierisindeki eriim srasnda ihtiyacnz olacak.

.NET Hazrlklar
Makinanza Lotus Notesu kurduktan sonra Visual Studio ierisinde ilk yapmanz gereken ey,
projenize Add Reference mens ile (COM tipindeki) Lotus Domino Objects referansn eklemektir.

Veritabanndaki Kaytlara Eriim


Tm Kaytlar Listelemek
Aadaki rnek .NET kodu, bir Lotus Notes veritabanndaki tm kaytlar listeleyecektir. Ayn rnek
ierisinde, $Revisions gibi birden fazla kayt ieren alanlarn nasl okunabileceini de grebilirsiniz.
static void listEquipments()
{
Domino.NotesSessionClass session = new Domino.NotesSessionClass();
session.Initialize("pass");
Domino.NotesDatabaseClass database = (Domino.NotesDatabaseClass)session.GetDatabase("",
"Equipment.nsf", false);
Domino.NotesDocumentCollection ndc =
(Domino.NotesDocumentCollection)database.AllDocuments;
for (int n = 0; n < ndc.Count; n++)
{
Domino.NotesDocumentClass doc = (Domino.NotesDocumentClass)ndc.GetNthDocument(n);
String outs = "";
String s = (String)((Object[])doc.GetItemValue("txtartbenenn"))[0];
s += ":" + (String)((Object[])doc.GetItemValue("txtfabriknr"))[0];
try {
int x = ((Object[])doc.GetItemValue("$Revisions")).Length;
DateTime d = (DateTime)((Object[])doc.GetItemValue("$Revisions"))[x - 1];
if (limit >= d) count++;
outs = s + " - " + d;
}
catch(Exception ex) {
outs = s;
}
}

Console.WriteLine(count.ToString() + " dkman");


Console.WriteLine("Bitti");
Console.ReadKey();

Baz Kaytlar Listelemek


Belli bir koula bal olarak kaytlar eken rnek bir kodu aada bulabilirsiniz.
static void listEquipments()
{
Domino.NotesSessionClass session = new Domino.NotesSessionClass();
session.Initialize("pass");
Domino.NotesDatabaseClass database = (Domino.NotesDatabaseClass)session.GetDatabase("",
"Equipment.nsf", false);
Console.WriteLine(database.Title);
Domino.NotesDocumentCollection ndc =
(Domino.NotesDocumentCollection)database.Search("txtartbenenn = 'C450'", null, 1);
for (int n = 0; n < ndc.Count; n++)
{
Domino.NotesDocumentClass doc = (Domino.NotesDocumentClass)ndc.GetNthDocument(n);
String outs = "";
String s = (String)((Object[])doc.GetItemValue("txtartbenenn"))[0];
s += ":" + (String)((Object[])doc.GetItemValue("txtfabriknr"))[0];
Console.WriteLine(s);
}

Console.WriteLine("Bitti");
Console.ReadKey();

Yeni Kayt Yaratmak


Aada, yeni kayt yaratan rnek bir kod bulabilirsiniz.
static void createName()
{
Domino.NotesSessionClass session = new Domino.NotesSessionClass();
session.Initialize("pass");
Domino.NotesDatabaseClass database = (Domino.NotesDatabaseClass)session.GetDatabase("",
"names.nsf", false);
Console.WriteLine(database.Title);
Domino.NotesDocumentClass doc = (Domino.NotesDocumentClass)database.CreateDocument();
doc.AppendItemValue("FirstName", "Kerem.NET");
doc.AppendItemValue("Form", "Person");
doc.AppendItemValue("FullName", "Kerem.NET Koseoglu");
doc.AppendItemValue("LastName", "Koseoglu");
doc.AppendItemValue("Logo", "beach");
doc.AppendItemValue("NameDisplayPref", "1");
doc.AppendItemValue("Type", "Person");
doc.Save(false, false, false);
}

Mevcut Kayd Gncellemek


Aada, mevcut kayd gncelleyen rnek bir kod bulabilirsiniz.
doc = (Domino.NotesDocumentClass)docs.GetNthDocument(m);
doc.ReplaceItemValue("anzeige1", "KK anzeige1");
doc.ReplaceItemValue("anzeige2", "KK anzeige2");
doc.ReplaceItemValue("anzeige3", "KK anzeige3");
doc.ReplaceItemValue("city", "KK city");
doc.ReplaceItemValue("anzeige3", "KK anzeige3");
doc.ReplaceItemValue("FORM", "frm_eq");
doc.ReplaceItemValue("KundenInfo", "KK KundenInfo");
doc.ReplaceItemValue("numeqicon", "78");
doc.ReplaceItemValue("numeqnr", Sap.shiftLeft(E[n].EQUNR, "0"));
doc.ReplaceItemValue("numsort", "2");
doc.ReplaceItemValue("SalesOfficeTemp", "TR 001");
doc.ReplaceItemValue("state", "KK state");
doc.ReplaceItemValue("txtartbenenn", E[n].EQKTX);
doc.ReplaceItemValue("txtartpkid", E[n].ZZPMSID);
doc.ReplaceItemValue("txtartsachnr", "KK txtartsachnr");

doc.ReplaceItemValue("txtfabriknr", "KK txtfabriknr");


doc.ReplaceItemValue("txtkdinventamr", "KK txtkdinventamr");
doc.ReplaceItemValue("txtkdkrzbez", "KK txtkdkrzbez");
doc.ReplaceItemValue("txtkdnr", "KK txtkdnr");
doc.Save(false, false, false);

View armak
Viewn Yaratlmas
Lotus Notesta zerinde altnz veritabann an. Create View mensne girin.


Viewa uygun bir isim verin ve forml ierisinde form ismi olarak veritabannda geerli olan
formlardan birini verdiinizden emin olun. Eer form adn bilmiyorsanz, yaratlm olan dier
Viewlar rnek alabilirsiniz.
OK dmesine baktnzda View yaratlacaktr. Bu View amak iin, Lotus Notesun View Go To
mensne girin. Bu listede, yaratm olduunuz Viewu sein.


Bunu yaptnzda; View karnza (muhtemelen ii bo bir ekilde) alacaktr.


Viewun detaylarn dzenlemek iin Actions View Options Design mensne girin. Bu
pencerede Viewun grntlenecek alanlarn seebilir, hesaplama yapmaya dayanan yeni alanlar
tanmlayabilir veya seim koullarn belirleyebilirsiniz.


Yeni Alan Tanmlamak
rnek olarak bu Viewa yeni bir alan ekleyelim. Stunlarn olduu blgeye sa tklayn ve Insert New
Column komutunu sein.

Aadaki blgede yeni stunun ieriine ne geleceini belirleyebilirsiniz. Burada bir fonksiyon,
veritabna alan veya forml seilebilir. Biz bu rnekte bir alan setik.
Burada tanmlayacanz alanlar, sadece ekran grnts iindir. .NET ierisinden View
ardnzda, burada bulunmayan veritaban alanlarna da eriebilirsiniz.
Yeni Koul Tanmlamak
Bu ilem iin, sol mendeki View blmne girmelisiniz.


rneimizde; sadece son 30 gndr yaratlm / deimi verilere erimek istediimizi varsayalm. Bu
durumda forml u hale getirmeliyiz:
SELECT (form="frm_eq" | Form="frm_ueq") & !@IsAvailable($Conflict)
& @Modified >= @Adjust(@Today; 0; 0; -30; 0; 0; 0)


Viewu Test Etmek
Viewu kaydettikten sonra Design Preview in Notes mensnden sonularn grebilirsiniz.
Alternatif olarak; normal ekranda View Go To... mensne de girebilirsiniz.

Viewun .NET inden arlmas


Aada, Viewu aran rnek bir kod bulabilirsiniz.
static void listEquipmentsView()
{
Domino.NotesSessionClass session = new Domino.NotesSessionClass();
session.Initialize("pass");
Domino.NotesDatabaseClass database =
(Domino.NotesDatabaseClass)session.GetDatabase("", "Equipment.nsf", false);
Console.WriteLine(database.Title);
Domino.NotesViewClass view = (Domino.NotesViewClass)database.GetView("KEREMTEST");
for (int n = 0; n <= view.AllEntries.Count; n++)
{
Domino.NotesDocumentClass doc =
(Domino.NotesDocumentClass)view.GetNthDocument(n);
if (doc != null)
{
String outs = "";
String s = (String)((Object[])doc.GetItemValue("txtartbenenn"))[0];
s += ":" + (String)((Object[])doc.GetItemValue("txtfabriknr"))[0];
Console.WriteLine(s);
}
}

Console.WriteLine("Bitti");
Console.ReadKey();

You might also like