[Delphi, SQL] Problem z wykonaniem UpdateSql z poziomu Delph

0

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

0
maciejmt napisał(a)

Brak spacji pomiedzy tym co masz w kazdej linijce

Jak mam to rozumieć? Twierdzisz, że na końcu każdej linii powinna być spacja?

Doklejanie Stringów czy Parametry, to nie ma znaczenia. Kwestia upodobania, wprawy itp.itd.
Query się generuje prawidłowo, tzn.tak jak sobie tego życzę.

Natomiast porada dot.kropki zamiast przecinka trafiła w "10". Wszystko "chodzi jak burza".
Bardzo dziękuję.

0

maciejmt spacji nie brakuje - tam nie sumuje ciągów tylko dodaje kolejne linie. Problemem jest natomiast wspomniany przez Ciebie średnik.
Inna sprawa, że takie bawienie się w składanie SQLa jest be i powinno się do tego zaprząc parametry

0

Mam kolejne pytanie związane związane z ciągiem dalszym operacji UPDATE.
Dla uproszczenia i ominięcia dyskusji na temat parametryzacji zapytań gotowe Query wygląda tak

UPDATE "K:\Paliwo\Data\TEST WEKO\Paliwo.DB"
SET IDPaliwa = 9
WHERE IDPaliwa = 1

IDPaliwa jest polem typu Long Integer.

i tu ciekawostka - próba wykonania generuje wyjątek i komunikat 'Update failed' natomiast fizycznie zmiany są w bazie wykonywane - po jej odświeżeniu widać skutek (zamierzony) działania tego Query.
O co może chodzić tym razem?
Mogę oczywiście przechwycić (wyłączyć) ten wyjątek. Tak mi się przynajmniej wydaje. Ale to nie rozwiąże problemu.

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