|
|
Регистрация | << Правила форума >> | 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
|
|||
|
|||
Спасибо, пробовал в самом запросе и с ковычками поиграть не получалось ничего а сверху поменять не догодался
|