exxon
Goto Top

VBA in Access - IF Verzweigung

Probleme mit if-verzweigung

Hallo,

ich hab nen Problem mit folgender if Verzweigung:

If Me!Identcode.Value = DLookup("Identcode", "Scandaten") Then
MsgBox "Achtung: Wert ist doppelt"
Else
DoCmd.RunMacro "Speichern"
End If

Also wenn die Schleife ausgeführt wird, wird jedesmal das Makro ausgeführt egal ob der if Wert True oder False ist ohne das die Message-Box ausgeführt wird. Kann mir jemand dabei helfen das die MsgBox ausgeführt wird wenn der if wert true ist?

Vielen dank im Vorraus,

Matthias

Content-Key: 25512

Url: https://administrator.de/contentid/25512

Printed on: April 18, 2024 at 14:04 o'clock

Member: verkehrsberuhigt
verkehrsberuhigt Feb 08, 2006 at 15:21:27 (UTC)
Goto Top
Also wenn die Schleife ausgeführt wird,
wird jedesmal das Makro ausgeführt egal
ob der if Wert True oder False ist

Das zu glauben fällt mir schwer...
Vielmehr denke ich, dass Du beim DLOOKUP-Aufruf noch ein (Vergleichs-)Kriterium angeben musst.
Aber mit einem DEBUG sollte das doch schnell zu klären sein?!
Member: EXXON
EXXON Feb 09, 2006 at 09:12:22 (UTC)
Goto Top
kannst du mir vieleicht mal den syntax mit nem beispiel geben? ich weiß nicht wo da der fehler sein könnte.

Erklärung zu den Gegebenheiten:
also in das feld identcode wird eine zahl eingegeben welche in der tabelle Scandaten im Feld Identcode nachgeschaut werden soll und mit dem identcode.value verglichen werden soll.
Member: verkehrsberuhigt
verkehrsberuhigt Feb 09, 2006 at 09:28:16 (UTC)
Goto Top
Hallo face-smile

kannst du mir vieleicht mal den syntax mit
nem beispiel geben? ich weiß nicht wo
da der fehler sein könnte.

Ich will es versuchen...
Zu Beginn würde ich folgendes versuchen:

Vorhanden = DLookup("Identcode", "Scandaten", "Identcode = """ & Me!Identcode.Value & """)
If Me!Identcode.Value = Vorhanden Then
MsgBox "Achtung: Wert ist doppelt"
Else
DoCmd.RunMacro "Speichern"
End If

Das geht natürlich eleganter aber ich hoffe, dass es so besser verständlich ist.
Member: EXXON
EXXON Feb 09, 2006 at 09:45:41 (UTC)
Goto Top
Vorhanden = DLookup("Identcode", "Scandaten", "Identcode = """ & Me!Identcode.Value & """)

verständlich wars schon ;)
aber da kommt ne fehlermeldung bei deinem code in der zeile oben
"Syntaxfehler" face-smile

habe aber inzwischen über ne msgbox rausgefunden das der lookup-befehl von mir immer die selbe zahl produziert die nichts mit der anderen (eingegebenen) zahl zu tun hat. Die zahl von me!identcode.value ist richtig!
Member: verkehrsberuhigt
verkehrsberuhigt Feb 09, 2006 at 09:57:58 (UTC)
Goto Top
a) Vermutlich fehlt in meiner Zeile ein abschliessenden Anführungszeichen
b) Geliefert bekommst Du vermutlich aus dem ersten Datensatz den Wert aus dem Feld Identcode oder?
Member: EXXON
EXXON Feb 09, 2006 at 10:21:12 (UTC)
Goto Top
a) hab ich schon probiert hat aber keinen brauchbaren ergebnisse zurückgeliefert bzw. fehlermeldung
b) nach dem code suche ich: 721427503916 herauskommt: 63604591364
die zahl die herauskommt ist mitten in der tabelle face-sad auserdem ist die zahl nur elf Stellen lang anstatt 12 wie es sein sollte (fehler in der tabelle)
so und jetzt hab ich noch fast alle fehlerhaften datensätze rausgelöscht jetzt kommt die zahl 461073421744 raus (das ist der datensatz nr. 43650)
Member: EXXON
EXXON Feb 09, 2006 at 13:54:12 (UTC)
Goto Top
so ich habs jetzt doch noch lösen können face-smile es muss heißen:
DLookup("[Identcode]", "Scandaten", "[Identcode] = '" & Me!Identcode & "'")
lag irgendwie teilweise dadran das es Text war :rolleyes: