Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: accessundich am März 17, 2011, 18:19:59

Titel: DLookUp geht, mit Vergleich geht nicht
Beitrag von: accessundich am März 17, 2011, 18:19:59
Hi,

darf mal wieder mit Access 2007 arbeiten und stolpere über folgendes Phänomen:

ZitatMsgBox DLookup("deutschlandOrt", "tblDeutschland", "pkDeutschlandID = " & Me.cmbPlzOrt)
Geht ohne Probleme

ZitatIf DLookup("deutschlandOrt", "tblDeutschland", "pkDeutschlandID = " & Me.cmbPlzOrt) Then
        MsgBox "Ich bin da!"
    End If

Typen unverträglich. Warum auch immer.

Jemand eine Idee?

Ach ja, in einem Dutzend weiterer Datenbanken gibt es keine Probleme. Aber das will bei Access nichts heißen  ;D

Danke für Input
Andi
Titel: Re: DLookUp geht, mit Vergleich geht nicht
Beitrag von: bahasu am März 17, 2011, 18:33:57
N'abend,

was für einen Typ hat das Feld "deutschlandOrt"?

Harald

Titel: Re: DLookUp geht, mit Vergleich geht nicht
Beitrag von: MzKlMu am März 17, 2011, 18:57:17
Hallo,
der Datentyp von deutschlandOrt dürfte unwichtig sein, es kommt auf pkDeutschlandID an und das scheint Zahl.

Achte darauf, dass die gebundene Spalte des Kombis cmbPlzOrt auch diese Zahl enthält.
Titel: Re: DLookUp geht, mit Vergleich geht nicht
Beitrag von: Hondo am März 17, 2011, 18:57:30
Hallo,
das geht imo nur mit boolschem Datentyp bzw. bei Zahlen (0/-1)
If DLookup("deutschlandOrt", "tblDeutschland", "pkDeutschlandID = " & Me.cmbPlzOrt) Then
liefert aller Wahrscheinlichkeit ein String zurück.
Prüf doch einfach auf die Länge des Rückgabewertes. if len(...) > 0 then

Gruß Andreas
Titel: Re: DLookUp geht, mit Vergleich geht nicht
Beitrag von: accessundich am März 17, 2011, 19:08:38
Hi,

Danke für die Tipps.

Da If DLookup("pkDeutschlandID", "tblDeutschland", "pkDeutschlandID = " & Me.cmbPlzOrt) Then
       MsgBox "Ich bin da!"
   End If

funktioniert, bin ich der Meinung, dass sich was geändert haben muss. "*", "tblDeutschland"... ist ohne Fehlermeldung gar nicht mehr möglich.
Hab ich das was verpasst?

Wenn ich nun eine Kombinationssuche mit 2 Kriterien machen möchte geht es mit keiner Methode mehr:
If Len(DLookup("*", "tblStandort", "standortStrasse Like '" & Strassenvergleich & "'" & " AND pkDeutschlandID = " & Me.cmbPlzOrt)) > 0 Then
       MsgBox "An diesem Standort gibt es bereits eine Lagerbox!"
       Exit Sub
   End If


Auch ohne "Len".


Ich glaube, ich muss mal alle alten DBs checken, ob die überhaupt noch funktionieren  ???

Gruselige Grüße
Andi
Titel: Re: DLookUp geht, mit Vergleich geht nicht
Beitrag von: bahasu am März 17, 2011, 19:09:58
N'abend,

nach meinem Versuch funktioniert das nur, wenn das Feld ein Wahrheitswert ist.
Alternativ müßte etwas stehen wie if ... > abc then.

In meinen Versuch mit Text-Feldern kam genau die oben aufgeführte Fehlermeldung.

Deshalb am Anfang meine Frage nach dem Feldtyp.

Harald
Titel: Re: DLookUp geht, mit Vergleich geht nicht
Beitrag von: accessundich am März 17, 2011, 19:12:30
Danke Dir, früher ging es vollkommen ohne Probleme.
Teste gerade, ob es überhaupt noch mit 2 unterschiedlichen Vergleichen geht, oder ob ich die nacheinander abarbeiten muss.

Andreas
Titel: Re: DLookUp geht, mit Vergleich geht nicht
Beitrag von: accessundich am März 17, 2011, 19:34:19
@bahasu

Verneig: Auch 2 Vergleiche gehen, auch Text- und anschließender Schlüsselvergleich, sofern nicht "*" oder gar ein Stringfeld am Anfang von Dlookup genommen wird, sondern eben das Primärschlüsselfeld.
Bei meiner alten DB funktioniert es mit "*" übrigens auch nicht mehr und da bin ich echt enttäuscht. Die DB lief bis dato fehlerlos.
Fröhliches Suchen und manuelles Ersetzen ist über alle meine DBs angesagt.

Arribaa
Andi

P.S. mit den nun für die DB eigentlich richtigen Feldern sieht die nun funktionierende Geschichte so aus:
    If DLookup("pkStandortID", "tblStandort", "standortStrasse Like '" & Strassenvergleich & "'" & " And fkDeutschlandID = " & Me.cmbPlzOrt) Then
       MsgBox "Der Lagerboxenstandort ist bereits vorhanden!", vbInformation, "Lagerstandort bereits vorhanden!"
    End If
Titel: Re: DLookUp geht, mit Vergleich geht nicht
Beitrag von: Hondo am März 17, 2011, 19:45:48
Hallo,
Paragraph 1: wenn du wissen willst warum ein Code-Ausdruck nicht die gewünschte Ergebnisse liefert dann debugge ihn.
Len() geht doch nur bei Texten. "*" als Feld ist nicht gültig.
Also sollte es so lauten:

If Len(DLookup("deutschlandOrt", "tblDeutschland", "pkDeutschlandID = " & Me.cmbPlzOrt)) > 0 Then

Gruß Andreas
Titel: Re: DLookUp geht, mit Vergleich geht nicht
Beitrag von: accessundich am März 17, 2011, 19:53:32
Bääh, Paragraph 1 ist die schlaue Variante und ich bin nicht schlau  ;)

Im Ernst, Recht hast Du und trotzdem hat sich mit der Updaterei etwas geändert.

Danke Dir und klar funktioniert Deine Variante recht gut sogar. Ist auf jeden Fall mit im Plan und mein Doppelvergleich führt nun auch zum richtigen Ergebnis.

Viele Grüße
Andi