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-ID: 25512

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

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

verkehrsberuhigt
verkehrsberuhigt 08.02.2006 um 16:21:27 Uhr
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?!
EXXON
EXXON 09.02.2006 um 10:12:22 Uhr
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.
verkehrsberuhigt
verkehrsberuhigt 09.02.2006 um 10:28:16 Uhr
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.
EXXON
EXXON 09.02.2006 um 10:45:41 Uhr
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!
verkehrsberuhigt
verkehrsberuhigt 09.02.2006 um 10:57:58 Uhr
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?
EXXON
EXXON 09.02.2006 um 11:21:12 Uhr
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)
EXXON
EXXON 09.02.2006 um 14:54:12 Uhr
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: