PDA

Vollständige Version anzeigen : DLookUp


MICHIF
31.01.2001, 14:04
Hallo,
Ich möchte in einer Funktion FUNKT1(Feld1 as String)
die Felder FELD2 und FELD3 der Tabelle TAB1 als String verbinden,
aber nicht als Parameter in dem Titel der Funktion angeben.
Code:
Set dbs = CurrentDb()
Set tdf = dbs.TableDefs(tab1)
Set rst = dbs.OpenRecordset(tab1)
tab1 = "TAB1"
F2 = DLookup("[FELD2]", "TAB1")
F3 = DLookup("[FELD3]", "TAB1")
Neufeld = feld1 & f2 & f3
Die Funktion DLookup gibt immer nur den ersten Wert (des ersten Datensatzes) von TAB1 zurück.
Wie schaffe ich es, daß zu jedem FELD1 der entsprechnde Wert des FELD2 geliefert wird.
Ich möchte aber wie gesagt die Felder nicht im Funktionsnamen angeben müssen. (denn in Wahrheit möcht ich viel mehr Felder verbinden)
Bitte um Hilfe, Danke im voraus

SoftNet
31.01.2001, 14:23
Hallo MichiF,

die Aufrufe für die DB brauchst Du, zumindest so wie Dein Beispiel aufgebaut ist, nicht, da die DLookUp direkt auf die Tabelle zugreift.
Um mit der Domänenfunktion auf einen bestimmten Datensatz zuzugreifen mußt Du der DLookUp() auch sagen welcher Datensatz Du meinst. Dies läßt sich mit dem 3 Argument der Funktion lösen. In diesem Argument kannst Du eine SQL-Where-Klausel angeben.

Folgendes Beispiel zum besseren Verständnis:

Public Function KndDat(Knr As Long)

KndDat = DLookUp("KVName","Kunden","KNr=" & Knr)
KndDat = KndDat & DLookUp("KZName","Kunden","KNr=" & Knr)

End Function

Diese Funktion würde aus der Tabelle "Kunden" abhängig der mitgegebenen Kundennummer "Knr" die Werte der Felder "KVNam" und KZNam" auslesen und zurückgeben.

Wichtig für Dich ist das 3. Argument in dem das Kriterium zum Auswählen des richtigen Datensatzes zusammengesetzt und übergeben wird.

Gruss, Tommy. http://www.access-home.de