2012-04-05 8 views
2

Ich habe VBA-Codes in Access-Datenbank. Ich erhalte die Fehlermeldung "Laufzeitfehler 3464 - Datentyp stimmt nicht mit Ausdruck überein" mit den folgenden Zeilen in meinen Codes. Was ist das korrekte Format dieser Zeile? Ich bin sicher, es ist ein einfaches Anführungszeichen oder etwas fehlt in der Zeile.Access Query - korrektes Format für eine Anweisung in der MS Access-Abfrage

Innerhalb der Datenbank gibt es Spalte namens APIC-Mitglieder. Ich möchte nur die Datensätze, die "1" in den Zellen aufgeführt haben.

Table$ = "SELECT * From WHY_Open_Cases_YTD WHERE WHY_Open_Cases_YTD.[APIC Member] = 1;" 
Set RST = myDB.OpenRecordset(Table$) 

Bitte beraten, was ich falsch mache. Wenn ich die Nachricht debugge, bekomme ich die Set RST = myDB.OpenRecordset (Table$) hervorgehoben.

Antwort

0

"Datentyp Mismatch" klingt für mich, als ob Sie die falsche Art von Recordset öffnen.
myDB.OpenRecordset() erwartet eine DAO.Recordset, und Ihre RST ist wahrscheinlich eine ADODB.Recordset.

Sehen Sie diese Antwort für eine tiefe gehende Erklärung:
Open recordset in Access 2003/2007

1

Auf meinem Access 2003 und 2007 Systeme, die vollständige Beschreibung für Fehler # 3464 ist die „Datentypenkonflikt in Kriterium-Ausdruck.“ Die db-Engine beschwert sich über die SQL-Anweisung, die Sie verwenden möchten.

Wenn [APIC Member] ein Textdatentyp anstelle eines numerischen Datentyps ist, fügen Sie Anführungszeichen um den Vergleichswert hinzu.

Table$ = "SELECT * From WHY_Open_Cases_YTD WHERE [APIC Member] = '1';" 
+0

Danke. Der Datentyp ist kein Text. Es ist eine Zahl (die Zahl wird entweder eins oder null sein. Sollte ich noch Zitate hinzufügen? – JenP

+0

In diesem Fall versuchen Sie es nur einmal mit den Anführungszeichen und sagen Sie uns, welche Fehlermeldung Sie erhalten. Sie können sie später entfernen. Etwas scheint Seltsamerweise und die Fehlermeldung kann etwas Licht. – HansUp

0

Versuchen

Table$ = "SELECT * From WHY_Open_Cases_YTD WHERE '[APIC Member]' = '1';" 

ich mit DAO gleiche Problem hatte, und es stellt sich heraus, dass es die SQL-Abfrage nicht akzeptieren, bis Sie auch den Feldnamen angegeben haben.

+0

Das ist falsch und wird nicht funktionieren.Auch Sie wissen, dass die Frage 4 Jahre alt ist? – Andre