Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: donmartin am 16.04.07 - 14:12:38

Titel: Datenbankabfrage mit getDocumentByKey
Beitrag von: donmartin am 16.04.07 - 14:12:38
Hallo zusammen,

vielleicht kann mir da jemand helfen:
Ich bastel an einer Datenbank rum, die auf unsere zentrale Mitarbeiter-DB zugreifen soll. Das Problem dabei ist, dass ich die Mitarbeiter-DB selber nicht ändern kann, also mir nicht einfach eine Ansicht zusammenbasteln kann. Jetzt ist da eine Ansicht vorhanden, die mein Schlüsselwort in der zweiten (sortierten) Spalte auflistet. Gibts da nicht doch eine Möglichkeit, mit getDokumentByKey an ein bestimmtes Dokument ranzukommen? Über das 'KeyArray' kann man eigentlich die zweite Spalte auch ansprechen...kann man da keine 'Platzhalter' für die erste Spalte verwenden (die Werte in der ersten Spalte fangen alle mit 'YH' an)?  ???

Etwa so ungefähr:
Code
Dim workspace As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument    
	Dim bednr(1 To 2) As String
	Dim db As NotesDatabase
	Dim view As NotesView
	Dim doc As NotesDocument

	Set uidoc = workspace.CurrentDocument    
	bednr(1) = "YH*"
	bednr(2) = uidoc.FieldGetText( "gs_bednr" )
	Set db = New NotesDatabase( "Domino", "ma.nsf" )
	Set view = db.GetView( "Mitarbeiter\USERID" )
	Set doc = view.GetDocumentByKey( bednr)
	
	If Not doc Is Nothing Then
		Call uidoc.FieldSetText _
		( "gs_ma", doc.Name( 0 ) )
	Else
		Print "Kein Eintrag gefunden!"
	End If
	
Titel: Re: Datenbankabfrage mit getDocumentByKey
Beitrag von: koehlerbv am 16.04.07 - 14:20:13
Der oder die Schlüssel müssen immer scharf angegeben werden - Platzhalter gehen nicht.
In diesem Falle bleibt wohl nur der Weg über NotesDatabase.Search oder einen FTI.

Bernhard
Titel: Re: Datenbankabfrage mit getDocumentByKey
Beitrag von: botschi am 16.04.07 - 14:57:15
Eigentlich müsste das doch gehen  ???

Gib mal

Set doc = view.GetDocumentByKey( bednr, true)

an.
Man kann ein Array von Schlüsseln übergeben, allerdings müssen die entsprechenden Spalten sortiert und nicht kategorisiert sein...

Matthias
Titel: Re: Datenbankabfrage mit getDocumentByKey
Beitrag von: Glombi am 16.04.07 - 15:02:05
Aber der erste key ist ja nicht eindeutig, es kann - jedenfalls verstehe ich es so  -
YH123, YH456, YH4711,... sein.

Daher wird es so nicht gehen.

Andreas
Titel: Re: Datenbankabfrage mit getDocumentByKey
Beitrag von: botschi am 16.04.07 - 15:31:36
Ahhh.

Ich dachte alle Werte haben GENAU den Wert "YH". Über den Sinn der ersten Spalte habe ich mir auch schon Gedanken gemacht, aber man soll den Leuten ja nicht vorschreiben, wie sie ihre Ansicht zu gestalten haben...  :)

Mich denn bitte ignorieren und Bernhard folgen  ;D

Matthias
Titel: Re: Datenbankabfrage mit getDocumentByKey
Beitrag von: donmartin am 17.04.07 - 07:39:06
Hab's mir fast schon gedacht....vielen Dank trotzdem.  8) 8)
Würd mich aber dann interessieren, für was der 'exactMatch-Flag' gut ist:
 
Zitat
If you specify False (the default) or omit this parameter, a partial match succeeds. A partial match returns the first document that matches the initial characters of the key.
???


Titel: Re: Datenbankabfrage mit getDocumentByKey
Beitrag von: diali am 17.04.07 - 08:29:30
wird exactMatch nicht verwendet werden alle Dokument gefunden, die mit dem Suchsting beginnen. Wird dieser Parameter verwendet, dann muss das Wort genau übereinstimmen.

Also exactMatch = False ... macht eine rechts trunkierte Suche.

Suchst Du z.B. nach "Licht", dann findet ein exactMatch = True nur die Dokumente, bei der "Licht" in der Spalte steht. Mit exactMatch = False werden dagegen auch "Lichstschalter", "Lichtausbeute", "Lichter" usw. gefunden.
Titel: Re: Datenbankabfrage mit getDocumentByKey
Beitrag von: dirk_2909 am 17.04.07 - 09:26:16
Hallo,

dann bleibt wohl nichts anderes übrig als mit einer Schleife über alle Dokumente der Mitarbeiteransicht zu gehen bis das gewünschte Dokument gefunden wurde  :-\

Dauert zwar - aber wenn sonst kein Zugriff auf die DB ?!  :-:

set doc = view.getFirstDocument
while not doc is Nothing
    if doc.GetItemValue( "Feld" )( 0 ) = g_strVergleichsString Then
        goto SKIP_WHILE
    end if

     set .....
Titel: Re: Datenbankabfrage mit getDocumentByKey
Beitrag von: ata am 17.04.07 - 10:32:58
... was spricht gegen den db.Search?

Toni
Titel: Re: Datenbankabfrage mit getDocumentByKey
Beitrag von: HH am 17.04.07 - 10:33:43
Oder du machst das, was Bernhard bereits angeregt hatte:

set col = db.search( "feld='" + g_strVergleichsString + "'", nothing, 0 )

Hubert
Titel: Re: Datenbankabfrage mit getDocumentByKey
Beitrag von: donmartin am 17.04.07 - 11:31:52
Hab's jetzt mit db.Search gemacht und funktioniert auch....hatte halt Bedenken zwecks Performance und so.  :P Geht aber schneller als ich vermutet hab  :o

Nochmals Danke!  8) 8)