hallo,
ich versuche verschweifel eine ganz einfache SQL in VBA access einzubinden.
ich habe eine Tabelle mit namen und ich möchte wissen wieviele einträge mit den namen Peter gibt.
Tabelle:total
Feld:name (definiert wie text)
Sowiel ich weiss diese sql anweisung ist korrekt
--------------------------------------------------
SELECT Count(total.name) AS zahlname
FROM total
HAVING (((Count(total.name))="Peter"));
--------------------------------------------------
bekomme folgenden fehlermedng
Datentypen übereinstimmen nicht
ich denke, das liegt daran, weil das Feld "name" als text deklariert.
Kann mir bitte jemand sagen, was in diese anweisung falsch ist?
und entsprechend anpassen ?
danke für eure Hilfe
logo
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Bei Feld- und Tabellennamen mit dem Namen "name" solltest Du extrem vorsichtig sein, "name" ist ein geschützter Begriff.
Zeichenketten werden mit einfachen Hochkommata abgegrenzt.
Der Having-Block schränkt die Ergebnismenge nach der Aggregatfunktion ein, wobei Du hier nur Daten verwenden solltest, die im Select-Block erstellt werden.
Dim strSQL As String
Dim strName As String
strName = "Peter"
strSQL = "SELECT total.[name], COUNT(total.[name]) AS ZahlName " & _
"FROM total " & _
"WHERE (total.[name] = '" & strName & "') " & _
"GROUP BY total.[name] " & _
"ORDER BY total.[name];"
Debug.Print strSQL
Und dann solltest Du bedenken, daß Dein Code nur die Felder berücksichtigt, in denen "Peter" steht, "peter" wird nicht berücksichtigt. Wie die entsprechende Funktion in Access heißt, weiß ich im Moment nicht, aber versuche es mal mit UPPER, UPCASE oder UCASE und UCase$(strName).