Witam.
Mam problem z wykonaniem UpdateSql w Delphi.
UpdateSql1.ModifySql.Clear;
UpdateSql1.ModifySQL.Add('UPDATE '+PathData+'\"SL_GrupyPaliw.DB"');
UpdateSql1.ModifySQL.Add('SET NazwaGrupy = "'+Query2.FieldByName('NazwaGrupy').AsString+'"'+', Gestosc = '+R_S(Query2.FieldByName('Gestosc').AsFloat,0,2));
UpdateSql1.ModifySQL.Add('WHERE IDGrupy = '+I_S(Query1.FieldByName('IDGrupy').AsInteger));
UpdateSql1.ExecSql(ukModify);
po wygenerowaniu Query wygląda tak:
UPDATE "K:\Paliwo\Data\SL_GrupyPaliw.DB"
SET NazwaGrupy = "Olej napędowy", Gestosc = 0,84
WHERE IDGrupy = 2
a ja dostaję komunikat:
'Invalid use of keyword.
Token: 84
WHERE
Line number 2'
Na moje oko wszystko z tym WHERE jest w porządku. Próbowałem już kombinacji z nawiasami itp.
W helpie do Delphi też jest podana dokładnie taka składnia.
Moją wątpliwość budzi jeszcze tylko wartość 0,84 (Float). Może zamiast przecinka powinna być kropka? Może w jakimś cudzysłowie podawać wartość?
Czy ktoś wie o co może chodzić? [???]
[temat znalazł się w Koszu, jak rozumiem z powodu niejasności sformułowania nazwy tematu (teraz postarałem się bardziej, mam nadzieję że wystarczająco), a pozwoliłem sobie przepisać wcześniejszy post ze względu na to ze było w nim zawarte sedno sprawy]
ŁF odpisał mi (bardzo dziękuję za radę) że:
wartość tekstu zawsze w apostrofach
UpdateSql1.ModifySQL.Add('SET NazwaGrupy = '''+Query2.FieldByName('NazwaGrupy').AsString+''', Gestosc = '+R_S(Query2.FieldByName('Gestosc').AsFloat,0,2));
zwróć wagę na różnicę pomiędzy '''' a '"'
zrobiłem dokładnie tak jak radziłeś ale niestety nic to nie dało
generowane Query wygląda teraz tak:
UPDATE "K:\Paliwo\Data\SL_GrupyPaliw.DB"
SET NazwaGrupy = 'Olej napędowy', Gestosc = 0,84
WHERE IDGrupy = 2
a błąd przy próbie jego wykonania jest dokładnie taki sam - SQL "czepia się" WHERE