Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];




Вниз

Обновление записи. 


Malyatko   (2002-02-11 08:26) [0]

Уважаемые Метры баз данных. Появилась проблема с которой не могу справиться сам.А суть ее такова: есть таблица в которой 4 поля:

Cust_no - ключевое поле данной таблицы.
Firm_no - ссылки на номера фирм из другой таблице.
Tovar_no - ссылка на номере товаров из третей таблице.
Col - количество товара.

Необходимо изменить значения поля Col имеея значения Firm_no и Тоvar_no,не трогая Cust_no.
Пробовал сделать так:

if (FirstQuery.Locate("firm_no",firm_nomer,[loPartialKey]))
and (FirstQuery.Locate("tovar_no",tovar_nomer,[loPartialKey]))
then
begin
FirstQuery.Edit;
FirstQueryCOL.AsInteger:=NewCol;
FirstQuery.Post;
end;

Но как результат получал изменение в первом попавшейся записи где firm_no=firm_nomer,не учитывая значения tovar_nomer.

Не знает ли кто, как решить данную проблему? Буду благодарен за любую помощь.



fnatali   (2002-02-11 08:56) [1]

Попробуй так:
With Query1 do
begin
SQL.clear;
SQL.add("update table1 col=""+NewCol+""");
SQL.add("where firm_no=""+firm_nomer+"" and tovar_no=""+tovar_nomer+""");
execSQL;
end;
Или такой же запрос можно с параметрами сделать, передавая туда значения NewCol, firm_nomer и tovar_nomer.



Gregory   (2002-02-11 08:58) [2]

Используй SQL оператор UPDATE. Правда, если ты потом изменившиеся в БД данные сам перечитаешь (в том плане что в связных DataControl"ах они не поменяются).

1) Создай Query1 : TQuery
2) В свойстве SQL напиши

UPDATE table1
SET Col = :p_col
WHERE Firm_no = :p_firmno
AND Tovar_no = :p_tovarno

3) Зайди в свойство Params (через Object Inspector) и проставь типы для данных параметров (String, там или Integer ...)
4) Используй:

Query1.ParamByName( "p_firmno" ).AsInteger := firm_nomer;
Query1.ParamByName( "p_tovarno" ).AsInteger := tovar_nomer;
Query1.ParamByName( "p_col" ).AsInteger := NewCol;
Query.ExecuteSQL;



Sima   (2002-02-11 09:09) [3]

Так не пробовали? Ведь так еще легче.

if FirstQuery.Locate("firm_no;tovar_nomer",VarArrayOf([firm_nomer,tovar_nomer]),[loPartialKey])) then

begin
FirstQuery.Edit;
FirstQueryCOL.AsInteger:=NewCol;
FirstQuery.Post;
end;




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.027 c
14-19329          ses                   2002-01-18 18:48  2002.03.07  
Как можно???????????


6-19282           Lamok                 2001-12-14 22:39  2002.03.07  
Скорость


7-19364           Pantero               2001-11-30 21:16  2002.03.07  
Как загрузить Dll файлы когда загружается Виндовс ?


6-19289           Dennis1809            2001-12-18 17:49  2002.03.07  
HTML --> Нормальный текст HEEELP !!!


14-19314          bullet_               2002-01-22 01:00  2002.03.07  
Работа с Excel