Autor Thema: Gemeinsames Feld aus "Fremder DB" auslesen...  (Gelesen 1412 mal)

Offline gstueb

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
  • God is real unless declared integer
Gemeinsames Feld aus "Fremder DB" auslesen...
« am: 26.04.10 - 17:43:08 »
Hallo,

Wie kann ich per Script den Inhalt eines gemeinsames Feldes einer anderen DB auslesen?

Hintergrund: Wir setzen ein Anwendungspaket ein, dass aus einer Vielzahl von Einzelanwendungen besteht. Die Version der jeweiligen Einzelanwendung ist jeweils in einem gemeinsamen Feld als Konstante hinterlegt.

Konkret möchte ich also den Inhalt des gemeinsamen Feldes "$DatenbankVersion" aus verschiedenen DB's auslesen.

Gruß,
Gregor

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Gemeinsames Feld aus "Fremder DB" auslesen...
« Antwort #1 am: 26.04.10 - 17:47:13 »
"Gemeinsames Feld" ist ein Frontend-Designelement. Auslesen lassen sich aber nur Items (egal, wie diese erzeugt wurden, ob mit gemeinsamen Feld oder "normalen" Feld oder ganz ohne Feld).

Bernhard

Offline Jens Winkelmann

  • Junior Mitglied
  • **
  • Beiträge: 53
  • Geschlecht: Männlich
  • Jens Winkelmann
    • PAVONE AG
Re: Gemeinsames Feld aus "Fremder DB" auslesen...
« Antwort #2 am: 26.04.10 - 18:57:55 »
Du möchtest also wissen wie der Code im Shared Field lautet.

   Das würde ich mit DXL Export machen.

   1) Also Datenbank holen.
   2) Das Shared Field als NotesNotesCollection holen.
   3) Dann das Shared Field nach DXL exportieren.
   4) Abschließend den gewünschten Code aus dem DXL Code herausziehen.

   
   Probiere mal den nachfolgenden Code in einen Agenten aus.
   Der Code erwartet das $DatenbankVersion SharedField in der gleichen Datenbank.
   
   


   Option Declare
   Option Compare Nocase, Nopitch

   Const SHAREDFIELDNAME = "$DatenbankVersion"
   
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Set db = session.CurrentDatabase
   
   Dim nc As NotesNoteCollection
   Set nc = db.CreateNoteCollection(False)
   nc.SelectSharedFields = True
   nc.SelectionFormula = |@UpperCase($TITLE) = @UpperCase("| & SHAREDFIELDNAME & |")|
   Call nc.BuildCollection
   If nc.Count   > 0 Then
      
      Dim stream As NotesStream
      Set stream = session.CreateStream
      
      Dim exporter As NotesDXLExporter
      Set exporter = session.CreateDXLExporter(nc, stream)
      Call exporter.Process
      
      Dim strDXL As String
      strDXL = Replace( stream.ReadText,Chr(10), "" )
      
      Msgbox Strright(Strleft( strDXL, "</formula>"),"<formula>")
      
   End If

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Gemeinsames Feld aus "Fremder DB" auslesen...
« Antwort #3 am: 27.04.10 - 06:39:14 »
Wenn sich in allen Datenbanken mit dem gemeinsamen Feld eine Maske mit immer gleichem Namen befindet, die dieses Feld anzeigt, kannst Du das auch so machen:

...
Set tmpdoc = New NotesDocument (andereDB)
tmpdoc.Form = "dieMaskeDieDasFeldAnzeigt"
If tmpdoc.ComputeWithForm (False, False) Then
   version = tmpdoc.GetItemValue ("$DatenbankVersion") (0)
End If
...

Die Maske, die das gemeinsame Feld anzeigt, sollte möglichst einfach sein, damit das ComputeWithForm schnell und fehlerfrei ausgeführt werden kann.

Offline gstueb

  • Aktives Mitglied
  • ***
  • Beiträge: 125
  • Geschlecht: Männlich
  • God is real unless declared integer
Re: Gemeinsames Feld aus "Fremder DB" auslesen...
« Antwort #4 am: 27.04.10 - 12:33:02 »
Vielen Dank für Eure Tipps.

Die Lösung von Jens hat mir geholfen, die einfachere Lösung von Peter konnte ich mangels Maske nicht verwenden.

Wieder was gelernt ;-)

Gruß,
Gregor

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz