invalid column + ADO

2 отговора 0 прегледа
#1

invalid column + ADO

Защо ми дава съобщение за грешка : invalid column name Nomen
Колоната със сигурност си е там. Не съм объркал името и.
Отварям си я с външна програма и със същата where клауза.



function TFInitMSSQL.isSQLDataBaseIsOK(sTableName: String): Boolean;
var

AdoQ2: TADOQuery;
begin
Result := False;
AdoQ2 := TADOQuery.Create(nil);
try
AdoQ2.Close;
AdoQ2.SQL.Clear;
AdoQ2.ConnectionString := str_ConnNeo;
AdoQ2.SQL.Add(' SELECT * FROM [dbo].[sysobjects] ');

(*invalid column name Nomen*)
AdoQ2.SQL.Add(' where name="Nomen" ');
AdoQ2.Prepared := True;
AdoQ2.Open; //тук гърми
if AdoQ2.RowsAffected >= 1 then
Result := True;
finally
AdoQ2.Free;
end;
end;

Отговор
в отговор на bre #2

Re: invalid column + ADO

Забравих да кажа, че става дума за MSSQL сървър - стандартен, дето върви с OFFICE 2003

Отговор
в отговор на bre #3

Кавички и апострофи

Трябва да използваш апострофи за ограждането на Nomen. В Делфи ако искаш да напишеш апостроф в стрингова константа се използват два апострофа.

function TFInitMSSQL.isSQLDataBaseIsOK(sTableName: String): Boolean;
var

AdoQ2: TADOQuery;
begin
Result := False;
AdoQ2 := TADOQuery.Create(nil);
try
AdoQ2.Close;
AdoQ2.SQL.Clear;
AdoQ2.ConnectionString := str_ConnNeo;
AdoQ2.SQL.Add(' SELECT * FROM [dbo].[sysobjects] ');

AdoQ2.SQL.Add(' where name=''Nomen'' '); //Това тук са два съседни апострофа, а не кавички
AdoQ2.Prepared := True;
AdoQ2.Open; //тук вече не гърми :-)
if AdoQ2.RowsAffected >= 1 then
Result := True;
finally
AdoQ2.Free;
end;
end;


Отговор