Markus Mühlich: Sytaxfehler???

Beitrag lesen

Hallo Stefan

SELECT text FROM tabelle WHERE ... bringt einen Fehler
SELECT [text] FROM tabelle WHERE ... funzt, da text in [...] steht.

Folgende Testsituation auf Access97:

text = "text"
strsql(1) = "SELECT text FROM Tabelle1 WHERE (((text)= 'text'));"
strsql(2) = "SELECT " & text
strsql(2) = strsql(2) & " FROM Tabelle1 WHERE (((" & text & ") = 'text'));"

For i = 1 To 2
    Set rs(i) = db.OpenRecordset(strsql(i), dbOpenDynaset)
        rs(i).AddNew
        rs(i)!text = text
        rs(i).Update
        rs(i).MoveFirst
        Do Until rs(i).EOF
            MsgBox rs(i)!text
            rs(i).MoveNext
        Loop
Next

Set db = Nothing
For i = 1 To 2
    Set rs(i) = Nothing
Next

Diese Funktion definiert eine Auswahlabfrage die mit dem Schlüsselwort text arbeitet, sowie eine zweite Auswahlabfrage die über die Variable text den String "text" erhält.

Beim Aufruf dieser Funktion treten keine der o.g. Konflikte auf, obwohl eine reserviertes Wort mehrfach verwendet wurde, egal ob als String oder Variable.

Ich werde das heute Abend mal auf den IIS4 und IIS5 setzen, wahlweise mit ODBC und DSN-loser Verbindung. Ich gehe mal davon aus, daß es auch dort zu keinen Konflikten kommt.

Nicht das wir uns falsch verstehen, ich bin absolut davon überzeugt (schon alleine der Lesbarkeit wegen), daß das Einhalten einer Namenskonventionen der einzige sichere Weg ist um 100%ig Konflikte zu vermeiden.

Ich wollte lediglich mal zeigen, daß das Auftreten von Namenskonflikten nicht oder nur schwer replizierbar ist.

Gruß
Markus