[MSSQL] klauzula WHERE ze stringiem

0

Witam :-)
Mam baze danych MSSQL gdzie jest imie i wiek. Teraz chce odczytac wiek osoby o imieniu Marek. No i mam problem poniewaz jak robie:

function pzapytanieSelect(zapytanie:string;ADOQuery:TADOQuery;co:string):string;
begin
    ADOQuery.Close;
    ADOQuery.SQL.Clear;
    ADOQuery.SQL.Add(zapytanie);
    ADOQuery.Open;
    result:=ADOQuery.FieldByName(co).AsString;
end;

procedure TForm1.FormActivate(Sender: TObject);
Edit8.text:=pzapytanieSelect('SELECT wiek FROM imiona WHERE imie = adam)',ADOQuery1,'wiek');
end;

To wyskakuje mi komunikat 'Invalid column name adam'.

0

'adam' <- to musis być ciąg znaków czyli w apostrofach lub cudzysłowie

0

Poradzilem sobie na razie na tyle, ze w Labelu daje visible na false i wpisuje tam najsampierw wartosc edit1 z ' na pocz i koncu, a pozniej wczytuje tego labela. To tak wyglada:
Edit z imieniem ma wartosc adam;
Tworze Label1 ktory ma caption z wartościa 'adam' i ta wczytuje.

Czy jednak jest inny sposob?

0

Juz znalazlem sposob. Z tablicy ASCII wczytalem znak i teraz to wyglada tak:
WHERE uzyt = '+#39+'jadam'+#39

Dzieki wielkie za pomoc :-)

0

możesz też tak:
query := 'WHERE uzyt = adam';
gdyż podwójny '' jest traktowany właśnie jako jeden apostrof, czyli #39 z nie musisz bawić się z konkatenacją

nie pamiętam, czy MSSQL to obsługuje, ale można użyć odwróconych apostrofów [klawisz z tyldą]
query := 'WHERE uzyt = adam';

0

MSSQL nie rozpozna odwroconych apostrofow, musza byc zwykle dla tekstu.

0

<font size="6">PARAMETRY!!!</span>

0
Marooned napisał(a)

nie pamiętam, czy MSSQL to obsługuje, ale można użyć odwróconych apostrofów [klawisz z tyldą]
query := 'WHERE uzyt = adam';

W MySQL (nie wiem wlasnie jak mssql) 'odwrócone apostrofy' stosuje się do nazw tabel, rekordów i innych, które w nazewnctwie zawieraja nazwy zastrzezone dla jezyka sql, np. tabela nazywa sie WHERE:

SELECT * FROM WHERE``

0

W mssql do tego sa nawiasy kwadratowe, np.

select * from [where]

1 użytkowników online, w tym zalogowanych: 0, gości: 1