Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

DLookUp geht, mit Vergleich geht nicht

Begonnen von accessundich, März 17, 2011, 18:19:59

⏪ vorheriges - nächstes ⏩

accessundich

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
---
Ich stelle keine komischen Fragen: Ich bin komisch.

bahasu

N'abend,

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

Harald

Servus

MzKlMu

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.
Gruß Klaus

Hondo

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

accessundich

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
---
Ich stelle keine komischen Fragen: Ich bin komisch.

bahasu

#5
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
Servus

accessundich

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
---
Ich stelle keine komischen Fragen: Ich bin komisch.

accessundich

#7
@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
---
Ich stelle keine komischen Fragen: Ich bin komisch.

Hondo

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

accessundich

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
---
Ich stelle keine komischen Fragen: Ich bin komisch.