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