![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Как обновить значение в таблице?
Я сначало делал запрос, а потом уже пытался обновить другую таблицу но выдает ошибку, что не правильно? Код:
procedure TAdd_rashodi_Form.BitBtn1Click(Sender: TObject);
Var a,b : string;
begin
DataModule1.ADOQuery.Active:= false;
DataModule1.ADOQuery.SQL.Clear;
DataModule1.ADOQuery.SQL.Add('select Sum(Summ) ');
DataModule1.ADOQuery.SQL.Add('FROM [Rasshody]');
DataModule1.ADOQuery.SQL.Add('WHERE Id_user = 0');
DataModule1.ADOQuery.SQL.Add('AND Id_schet = 48');
DataModule1.ADOQuery.Active:= true;
a := DataModule1.ADOQuery.Fields[0].AsString;
DataModule1.ADOQuery.Active:= false;
DataModule1.ADOQuery.SQL.Clear;
DataModule1.ADOQuery.SQL.Add('Update Schet');
DataModule1.ADOQuery.SQL.Add('SET Rashodi = a');
DataModule1.ADOQuery.SQL.Add('WHERE Id = 48');
DataModule1.ADOQuery.Active:= true;
Close;
end;Последний раз редактировалось qwwwq, 12.01.2009 в 19:48. |
|
#2
|
|||
|
|||
|
Здесь:
Код:
DataModule1.ADOQuery.SQL.Add('SET Rashodi = ' + a);A вообще, можно делать в 1 запрос. Код:
UPDATE Schet SET Rashodi = (SELECT Sum(Summ) FROM Rasshody WHERE Id_user = 0 AND Id_schet = 48) WHERE Id = 48 Естественно, это сам запрос. Кстати, запросы можно вносить одной строкой. Например, в твоем случае Id надо заменить на некоторый параметр, запрос оформить константой и Format'ом просто вколачивать туда значение и целиком вставлять в ADOQuery. |
|
#3
|
|||
|
|||
|
Все равно не работает, не могу понять в чем дело
|
|
#4
|
|||
|
|||
|
А, ну да! Не увидел сразу.
Тебе надо во втором запросе сделать не Active := True, а ExecSQL (как-то так - точку поставишь, тебе среда подскажет). Нельзя открывать датасеты, которые не возвращают выборки. |
|
#5
|
|||
|
|||
|
Спасибо получилось
|
|
#6
|
|||
|
|||
|
Код:
DataModule1.Rashodi_podschet_ADOQuery.Active:= false;
DataModule1.Rashodi_podschet_ADOQuery.SQL.Clear;
DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('Update Schet');
DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('SET Balans =' + inttostr(r));
DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('Rashodi =' + inttostr(r1));
DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('WHERE Id ='+ inttostr(id_schet));
DataModule1.Rashodi_podschet_ADOQuery.ExecSQL;не могу сделать чтобы в одном запросе обновлялось сразу два значения, что не правильно? Пробовал перед Rashodi ставить SET и AND не помогает, если делать без Код:
DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('Rashodi =' + inttostr(r1)); |
|
#7
|
|||
|
|||
|
Запятую забыл.
Код:
UPDATE что-то-там SET Поле1 = Значение1, Поле2 = Значение2 WHERE Условие-отбора |
|
#8
|
|||
|
|||
|
Спасибо, получилось
|
|
#9
|
|||
|
|||
|
Код:
b:='clWhite';
DataModule1.Rashodi_podschet_ADOQuery.Active:= false;
DataModule1.Rashodi_podschet_ADOQuery.SQL.Clear;
DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('Update Setting');
DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('SET parametr =' + b);
DataModule1.Rashodi_podschet_ADOQuery.SQL.Add('WHERE name =' + '''Form_color''');
DataModule1.Rashodi_podschet_ADOQuery.ExecSQL;Не записывает clWhite в базу, в чем может быть ошибка? Последний раз редактировалось qwwwq, 14.01.2009 в 18:49. |
|
#10
|
|||
|
|||
|
кавычки забыл:
Код:
b := '''clWhite'''; // по 3 одинарных кавычки |
|
#11
|
|||
|
|||
|
Спасибо, пробовал в самом запросе и с ковычками поиграть не получалось ничего а сверху поменять не догодался
![]() |