crack24
Goto Top

DCount Funktion in Access 2003

Hallo,

ich möchte bei einem neuen Auftragsdatensatz prüfen ob die Bestellnummer für diesen Kunden schon vorhanden ist, damit keine Bestellungen doppelt erfasst werden.

Ich habe dazu folgende Funktion, aber anscheinend sind da noch syntaktische Fehler drin
Sub Check_Bestellnummer()
    If DCount("*", "Fertigung", "[Kunden_Bestell_Nr]='" & Me![Kunden_Bestell_Nr] & "' AND [F_KundenID]='" & Me![KID] & "'")> 0 Then  
        MsgBox "Ein Auftrag mit dieser Bestellnummer ist schon vorhanden!"  
    End If
End Sub
Wennn ich nur die Bestellnummer überprüfe, für alle Kunden, dann gehts. Aber wenn ich noch die Prüfung mit der Kundennummer dranhänge, funktioniert es nicht.

Sieht da vielleicht jemand auf die Schnelle den Fehler?

Viele Grüße
crack

Content-ID: 208666

Url: https://administrator.de/forum/dcount-funktion-in-access-2003-208666.html

Ausgedruckt am: 06.04.2025 um 03:04 Uhr

Biber
Biber 26.06.2013 um 09:59:15 Uhr
Goto Top
Moin crack24,

und wenn du zwischen den beiden Bedingungen noch ein " AND " spendierst?

Grüße
Biber
crack24
crack24 26.06.2013 um 10:27:36 Uhr
Goto Top
Hallo Biber,

ich hatte den Beitrag nachträglich nochmal bearbeitet, kann sein dass wir uns da überschnitten haben.

Ich habe das AND jetzt drin, aber irgendwo hakt es noch.
Biber
Biber 26.06.2013 aktualisiert um 10:57:19 Uhr
Goto Top
Moin crack24,

dann können nur die Datentypen von "F_KundenID" und "Me![KID"] auseinanderlaufen.
Laut Syntax erwartest du für dieses Datenbank-/Formularfeld-Pärchen einen Text-Datentyp.
Ist dem so in der Tabelle und im Formular?

Wenn ja, muss eines der Beiden noch geTRIMmed werden?

Grüße
Biber
[Edit] Ähhm .. okay... einiges pricht auch für colinardos hinweis auf die fehlende Klammer-Zu.
Die hab ich auch übersehen.
Vergiss meinen Kommentar.
[/Edit]
colinardo
colinardo 26.06.2013 aktualisiert um 11:03:49 Uhr
Goto Top
Hallo crack,
fehlt da nicht die schließende Klammer von DCount am Ende?:
If DCount("*", "Fertigung", "[Kunden_Bestell_Nr]='" & Me![Kunden_Bestell_Nr] & "' AND [F_KundenID]='" & Me![KID] & "'") > 0 then
Bitte fasse deinen Code in "Code" Tags ein damit Sonderzeichen hier nicht unterschlagen werden, merci.

Grüße Uwe
crack24
crack24 26.06.2013 um 11:19:14 Uhr
Goto Top
Stimmt, die Klammer fehlte. Habe ich ergänzt und in Code Tages eingefasst.

@Biber
Da scheint das Problem zu liegen. "F_KundenID" ist Zahl (Long Integer) in der Tabelle und "KID" ist ein Kombinationsfeld. Lass ich dann die Hochkommata und Anführungszeichen einfach weg oder muss man für Zahlen noch etwas spezielles beachten?
colinardo
colinardo 26.06.2013 um 11:43:31 Uhr
Goto Top
Zitat von @crack24:
Lass ich dann die Hochkommata und Anführungszeichen einfach weg oder muss man für Zahlen noch etwas
spezielles beachten?
einfach die Hochkommas weglassen und den Wert deines Kombinationsfeldes zur Sicherheit zusätzlich noch in eine Dezimalzahl konvertieren
CDec(Me![KID])
Biber
Biber 26.06.2013 aktualisiert um 11:52:23 Uhr
Goto Top
Moin crack24,

tja, ACCESS-SQL ist bei mir auch schon ein paar Tage her -aus dem Gedächtmis heraus würde ich einen String dann mit "cLng()" konvertieren - oder mit CAST()/CONVERT(),
Alle diese Funktionen sind in ACCESS-SQL vorhanden, inwieweit die in der be###enen Hilfe dokumentiert sind, wissen nur die Redmonder PraktikantInnen.

Grobe Richtung:
If DCount("*", "Fertigung", "[Kunden_Bestell_Nr]='" & Me![Kunden_Bestell_Nr] & _  
   "' AND [F_KundenID]=cLng('" & Me![KID] &  "')") > 0 then..  

cLng kann aber auch nur einen String in Long konvertieren, der eine Zahl repräsentiert
-> ->cLng("66")==66; cLng("GDAGD")==#Tilt#

Grüße
Biber
crack24
crack24 26.06.2013 um 13:07:50 Uhr
Goto Top
Ich hab es jetzt hinbekommen, sogar ohne Konvertierung.

Sub Check_Bestellnummer()
If DCount("*", "Fertigung", "[F_Knd_Besl_Nr]='" & Me![F_Knd_Besl_Nr] & "' AND [F_KNrID] = " & Me![KID]) > 0 Then  
MsgBox "Ein Auftrag mit dieser Bestellnummer ist schon vorhanden!"  
End If
End Sub

Damit läuft es. Vielen Dank für eure Hilfe.
colinardo
colinardo 27.06.2013 um 12:17:15 Uhr
Goto Top
Noch zur Info: Bitte markiere den Beitrag als gelöst. Siehe dazu die FAQ
Danke
Grüße Uwe