Autor Thema: Datenbankabfrage mit getDocumentByKey  (Gelesen 2106 mal)

Offline donmartin

  • Frischling
  • *
  • Beiträge: 3
  • Geschlecht: Männlich
Datenbankabfrage mit getDocumentByKey
« 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
	

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Datenbankabfrage mit getDocumentByKey
« Antwort #1 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

botschi

  • Gast
Re: Datenbankabfrage mit getDocumentByKey
« Antwort #2 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

Glombi

  • Gast
Re: Datenbankabfrage mit getDocumentByKey
« Antwort #3 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

botschi

  • Gast
Re: Datenbankabfrage mit getDocumentByKey
« Antwort #4 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

Offline donmartin

  • Frischling
  • *
  • Beiträge: 3
  • Geschlecht: Männlich
Re: Datenbankabfrage mit getDocumentByKey
« Antwort #5 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.
???



Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Datenbankabfrage mit getDocumentByKey
« Antwort #6 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.
Gruß
Dirk

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Datenbankabfrage mit getDocumentByKey
« Antwort #7 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 .....
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Datenbankabfrage mit getDocumentByKey
« Antwort #8 am: 17.04.07 - 10:32:58 »
... was spricht gegen den db.Search?

Toni
Grüßle Toni :)

Offline HH

  • Senior Mitglied
  • ****
  • Beiträge: 339
  • Geschlecht: Männlich
Re: Datenbankabfrage mit getDocumentByKey
« Antwort #9 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

Offline donmartin

  • Frischling
  • *
  • Beiträge: 3
  • Geschlecht: Männlich
Re: Datenbankabfrage mit getDocumentByKey
« Antwort #10 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)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz