![]() |
|
|
|
|
#1
|
|||
|
|||
|
Есть таблица Sost, у нее единственное поле Sostoyanie. В Delphi обновляю его так:
Код:
ADOQuery5.Active := false;
ADOQuery5.SQL.Clear;
ADOQuery5.SQL.Add('Update Sost SET Sostoyanie= "' + Label27.Caption + '";');
ADOQuery5.ExecSQL;
ADOQuery5.SQL.Clear;
ADOQuery5.SQL.Add('SELECT * FROM Каналы');
ADOQuery5.Active := true;Что не так? |
|
#2
|
||||
|
||||
|
Во-первых, если не матерится - значит в таблице нет ключевого поля, настоятельно рекомендую его добавить.
Во-вторых, оно все заменяет, надо только делать рефреш таблицы(но тут никуда без ключевого поля), потому - Код:
ADOTable1.Active:=false; ADOTable1.Active:=true; И, еще, Update без where заменит тебе ВСЕ поля таблицы. Измени запрос: Код:
'Update Таблица1 SET Sost= "' + Label27.Caption + '" where sost="'+Edit1.Text+'"' Код:
ADOQuery5.Active := false;
ADOQuery5.SQL.Clear;
ADOQuery5.SQL.Add('Update Таблица1 SET Sost= "' + Label27.Caption + '" where sost="'+Edit1.Text+'"');
ADOQuery5.ExecSQL;
ADOTable1.Active:=false;
ADOTable1.Active:=true;
ADOQuery5.SQL.Clear;
ADOQuery5.SQL.Add('SELECT * FROM Каналы');
ADOQuery5.Active := true; |
|
#3
|
||||
|
||||
|
Цитата:
Код:
with ADOQuery5 do
Close;
SQL.Clear;
SQL.Add('update sost set sostoyanie = ''' + label27.caption + '''');
ExecSQL;
SQL.Clear;
SQL.Add('select * from Каналы');
Open;
end; |
|
#4
|
|||
|
|||
|
Спасибо за отклики...Уже и не надеялся на ответы...:-)
Guroncheg прав. Не работало потому что ключевого поля не было. Однако, стоит заметить, что Update может работать и без ключевого поля, но заменяемая ячейка не должна быть пустой (как было у меня). Вобщем, всем спасибо..) |