SQL ADO % oder *

Joi1981

Mitglied
Hallo Leute,

ich hab da mal ne kurze Frage an Euch.

In meiner Anwendung verwende ich das ADO Objekt zusammen mit einem DataGrid.

Ich habe in der Access-Datenbank ein Tabelle "Adressen" die Namen, Strasse usw enthält.

Wie ich sehr oft gelesen habe, selektiert man z.B alle Namen die mit "A" beginnen wie folgt:

SELECT * FROM Adressen WHERE Name Like 'A*'

- kling einleutend -

Allerdings bekomme ich mit diesem SQL-String 0 RecordCounts.

Erst wenn ich * durch % ersetze, also:

SELECT * FROM Adressen WHERE Name Like 'A%'

dann bekomme ich alle Namen die mit "A" beginnen.


Wie kann das sein? - Was hat es mit dem * auf sich?


Verwende ich innerhab eines bereits geladenen RecordSets die Filtermethode in Verbindung mit dem * funktioniert es:

.... .FindItem("A" & "*", 1)


Weiss jemand warum ich mit dem * als Wildcard nicht das gewünschte Ergebnis erhalte?

Danke Euch!

Gruß
Jochen
 
Die Antwort ist ganz einfach, in Datenbanken gibt es den Stern (*) als Jokerzeichen nicht. Dort dient das Prozentzeichen (%) als Jokerzeichen, du musst die Anfragen halt dementsprechend schreiben.


Der Doc!
 
Hm... ist schon lange her als ich noch mit VB& und ADO hantierte.

Access selber verwendet eigentlich *. (mindestens bis Version 2003, das ist die letzte mit der ich gearbeitet habe)

Ev. übersetzt die DAO-Schnittstelle.
 
Hi yaslaw,

ja das könnte sein.

Ich werde das heute Abend gleich mal testen.

Evt. kennt er bei 3.51 den "*" und ab 4.00 das "%".

Ich habe vor kurzem auf 4.00 umgestellt,
deshalb konnte ich mich wohl erinnern früher mal mit "*" gearbeitet zu haben :-)

Ich werde dann berichten, wenn ich das getestet habe...

Gruß
Jochen
 
Hi Leute,

hab das jetzt mal getestet... und soweit ich das beurteilen kann, scheint es in Verbindung mit MS-Access folgendermaßen geregelt zu sein:

- verwendet man DAO 3.51 kann " * " als Wildcard verwendet werden.

- verwendet man das neuere ADO mit Microsoft.Jet.OLEDB.4.0 od. 3.51 wird " * " als normales Zeichen gewertet, hier muss man " % " als Wildcard verwenden

So, dann wäre das geklärt :-)

Vielen Dank für Euere Beiträge!

Gruß
Jochen
 
Zurück