lotus notes ve .net entegrasyonu

9
2008 Dr. Kerem Köseoğlu 10/27/2008 Lotus Notes ve .NET

Upload: dr-kerem-koseoglu

Post on 17-Dec-2015

21 views

Category:

Documents


2 download

DESCRIPTION

C# ile Lotus Notes veritabanına erişmenin temel yöntemlerini bu dokümanda görebilirsiniz.

TRANSCRIPT

  • 2008

    Dr. Kerem Kseolu

    10/27/2008

    Lotus Notes ve .NET

  • 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