ݺߣ

ݺߣShare a Scribd company logo
2008
Dr. KeremKöseoğlu
10/27/2008
Lotus Notes ve .NET
Özet
Bu dökümaniçerisinde,LotusNotesileveri alışverişiyapabilen .NETuygulamalarınınnasıl
geliştirilebileceğine dairbazıanahtar noktalarbulunmaktadır.
Lotus Hazırlıkları
Kullanıcı Hesabının Ayarlanması
Lotus Notesiçerisinde,File Tools User ID menüsüne girin.Burada,entegrasyonişlerinde
kullanılacakUseriçinaşağıdaki kutucuğunişaretlenmişolmasıgerekmektedir.
Veritabanındaki Alanları Görmek
Lotus Notesveritabanındaki alanlarınteknikisimlerini ve detaylarınıgörmekiçin,öncelikle veritabanı
dosyasınıaçın. Karşınıza kayıtlargeldiğinde,herhangi birkaydasağtıklayınve “Document
Properties...”menüsüne girin.
Bu şekilde açılacakolanpencere üzerinde,veritabanındaki alanlarınteknikisimlerini ve seçmiş
olduğunuzdökümandaki değerleri görebilirsiniz.
Bu alanlara,.NETiçerisindeki erişimsırasındaihtiyacınızolacak.
.NET Hazırlıkları
Makinanıza LotusNotes’ukurduktansonraVisual Studioiçerisinde ilkyapmanızgerekenşey,
projenize AddReference menüsüile (COMtipindeki)“LotusDominoObjects”referansınıeklemektir.
Veritabanındaki KayıtlaraErişim
Tüm Kayıtları Listelemek
Aşağıdaki örnek.NETkodu,bir LotusNotesveritabanındaki tümkayıtlarılisteleyecektir. Aynıörnek
içerisinde,“$Revisions”gibi birdenfazlakayıtiçerenalanlarınnasıl okunabileceğinide görebilirsiniz.
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() + " döküman");
Console.WriteLine("Bitti");
Console.ReadKey();
}
Bazı Kayıtları Listelemek
Belli birkoşulabağlıolarakkayıtları çekenörnekbirkoduaşağıda 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 Kayıt Yaratmak
Aşağıda,yeni kayıt yaratanörnekbir kodbulabilirsiniz.
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ı Güncellemek
Aşağıda, mevcutkaydı güncelleyenörnekbirkodbulabilirsiniz.
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 Çağırmak
View’ın Yaratılması
Lotus Notes’taüzerinde çalıştığınızveritabanınıaçın.Create  View menüsüne girin.
View’auygunbirisimverinve formül içerisindeformismi olarakveritabanındageçerli olan
formlardanbirini verdiğinizdeneminolun.Eğerformadınıbilmiyorsanız,yaratılmışolandiğer
View’larıörnekalabilirsiniz.
“OK” düğmesine baktığınızdaViewyaratılacaktır.BuView’ıaçmakiçin,LotusNotes’unView  GoTo
menüsüne girin.Bulistede,yaratmışolduğunuzView’useçin.
Bunuyaptığınızda; Viewkarşınıza(muhtemeleniçi boşbirşekilde) açılacaktır.
View’undetaylarınıdüzenlemekiçinActions  View Options  Designmenüsüne girin.Bu
pencerede View’ungörüntülenecekalanlarınıseçebilir,hesaplamayapmayadayananyeni alanlar
tanımlayabilirveyaseçimkoşullarınıbelirleyebilirsiniz.
YeniAlanTanımlamak
Örnekolarakbu View’ayeni biralanekleyelim.Sütunlarınolduğubölgeyesağtıklayınve InsertNew
Columnkomutunuseçin.
Aşağıdaki bölgede yenisütununiçeriğine ne geleceğini belirleyebilirsiniz.Buradabirfonksiyon,
veritabnaıalanıveyaformül seçilebilir.Bizbuörnekte biralanseçtik.
Burada tanımlayacağınızalanlar,sadece ekrangörüntüsüiçindir..NETiçerisindenView’ı
çağırdığınızda, buradabulunmayanveritabanıalanlarınadaerişebilirsiniz.
YeniKoşul Tanımlamak
Bu işlemiçin,sol menüdeki“View”bölümüne girmelisiniz.
Örneğimizde;sadece son30 gündüryaratılmış/ değişmişverilereerişmekistediğimizi varsayalım.Bu
durumdaformülüşuhale getirmeliyiz:
SELECT (form="frm_eq"|Form="frm_ueq") &!@IsAvailable($Conflict)
& @Modified>= @Adjust(@Today;0;0; -30; 0; 0; 0)
View’uTestEtmek
View’ukaydettiktensonraDesign  PreviewinNotesmenüsündensonuçlarınıgörebilirsiniz.
Alternatif olarak;normal ekrandaView  GoTo...menüsüne de girebilirsiniz.
View’un .NET İçinden Çağırılması
Aşağıda,View’uçağıranörnekbir 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();
}

More Related Content

Lotus Notes - .NET entegrasyonu

  • 2. Özet Bu dökümaniçerisinde,LotusNotesileveri alışverişiyapabilen .NETuygulamalarınınnasıl geliştirilebileceğine dairbazıanahtar noktalarbulunmaktadır. Lotus Hazırlıkları Kullanıcı Hesabının Ayarlanması Lotus Notesiçerisinde,File Tools User ID menüsüne girin.Burada,entegrasyonişlerinde kullanılacakUseriçinaşağıdaki kutucuğunişaretlenmişolmasıgerekmektedir. Veritabanındaki Alanları Görmek Lotus Notesveritabanındaki alanlarınteknikisimlerini ve detaylarınıgörmekiçin,öncelikle veritabanı dosyasınıaçın. Karşınıza kayıtlargeldiğinde,herhangi birkaydasağtıklayınve “Document Properties...”menüsüne girin.
  • 3. Bu şekilde açılacakolanpencere üzerinde,veritabanındaki alanlarınteknikisimlerini ve seçmiş olduğunuzdökümandaki değerleri görebilirsiniz. Bu alanlara,.NETiçerisindeki erişimsırasındaihtiyacınızolacak. .NET Hazırlıkları Makinanıza LotusNotes’ukurduktansonraVisual Studioiçerisinde ilkyapmanızgerekenşey, projenize AddReference menüsüile (COMtipindeki)“LotusDominoObjects”referansınıeklemektir.
  • 4. Veritabanındaki KayıtlaraErişim Tüm Kayıtları Listelemek Aşağıdaki örnek.NETkodu,bir LotusNotesveritabanındaki tümkayıtlarılisteleyecektir. Aynıörnek içerisinde,“$Revisions”gibi birdenfazlakayıtiçerenalanlarınnasıl okunabileceğinide görebilirsiniz. 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() + " döküman"); Console.WriteLine("Bitti"); Console.ReadKey(); }
  • 5. Bazı Kayıtları Listelemek Belli birkoşulabağlıolarakkayıtları çekenörnekbirkoduaşağıda 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 Kayıt Yaratmak Aşağıda,yeni kayıt yaratanörnekbir kodbulabilirsiniz. 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ı Güncellemek Aşağıda, mevcutkaydı güncelleyenörnekbirkodbulabilirsiniz. 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");
  • 6. 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 Çağırmak View’ın Yaratılması Lotus Notes’taüzerinde çalıştığınızveritabanınıaçın.Create  View menüsüne girin. View’auygunbirisimverinve formül içerisindeformismi olarakveritabanındageçerli olan formlardanbirini verdiğinizdeneminolun.Eğerformadınıbilmiyorsanız,yaratılmışolandiğer View’larıörnekalabilirsiniz. “OK” düğmesine baktığınızdaViewyaratılacaktır.BuView’ıaçmakiçin,LotusNotes’unView  GoTo menüsüne girin.Bulistede,yaratmışolduğunuzView’useçin.
  • 7. Bunuyaptığınızda; Viewkarşınıza(muhtemeleniçi boşbirşekilde) açılacaktır. View’undetaylarınıdüzenlemekiçinActions  View Options  Designmenüsüne girin.Bu pencerede View’ungörüntülenecekalanlarınıseçebilir,hesaplamayapmayadayananyeni alanlar tanımlayabilirveyaseçimkoşullarınıbelirleyebilirsiniz. YeniAlanTanımlamak Örnekolarakbu View’ayeni biralanekleyelim.Sütunlarınolduğubölgeyesağtıklayınve InsertNew Columnkomutunuseçin.
  • 8. Aşağıdaki bölgede yenisütununiçeriğine ne geleceğini belirleyebilirsiniz.Buradabirfonksiyon, veritabnaıalanıveyaformül seçilebilir.Bizbuörnekte biralanseçtik. Burada tanımlayacağınızalanlar,sadece ekrangörüntüsüiçindir..NETiçerisindenView’ı çağırdığınızda, buradabulunmayanveritabanıalanlarınadaerişebilirsiniz. YeniKoşul Tanımlamak Bu işlemiçin,sol menüdeki“View”bölümüne girmelisiniz. Örneğimizde;sadece son30 gündüryaratılmış/ değişmişverilereerişmekistediğimizi varsayalım.Bu durumdaformülüşuhale getirmeliyiz: SELECT (form="frm_eq"|Form="frm_ueq") &!@IsAvailable($Conflict) & @Modified>= @Adjust(@Today;0;0; -30; 0; 0; 0) View’uTestEtmek View’ukaydettiktensonraDesign  PreviewinNotesmenüsündensonuçlarınıgörebilirsiniz. Alternatif olarak;normal ekrandaView  GoTo...menüsüne de girebilirsiniz.
  • 9. View’un .NET İçinden Çağırılması Aşağıda,View’uçağıranörnekbir 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(); }