Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.07;
Скачать: CL | DM;

Вниз

Обновление записи.   Найти похожие ветки 

 
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;



Страницы: 1 вся ветка

Текущий архив: 2002.03.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
1-19197
новенький в Делфи
2002-02-18 21:56
2002.03.07
Матрицы


3-19052
Bormanoid
2002-02-07 19:48
2002.03.07
Как отобразить в Label дату?


3-19073
чайничек
2002-02-07 17:27
2002.03.07
Может быть кто-нибудь знает как построена правовая система


14-19330
Андрей Сенченко
2002-01-09 18:54
2002.03.07
Вопросы - ответы ...


3-19112
Vacheslav
2002-02-11 16:20
2002.03.07
КАК изменить имена колонок в таблице