![]() |
|
|
#1
|
|||
|
|||
|
Здрасте ^_^ Вот хотел спросить, как такую процедуру написать, чтобы когда я заполнил таблицу одну, после нажатия кнопки, эта таблица обновила другую, если есть там поля по индексу похожие добавила кол-во, а если нет, то добавила всю новую строку, и второй раз уже кнопку нельзя было нажать. Надо ли эти таблицы связывать, да и как вообще такое написать ^_^ подскажите пожалуста ^_^
|
|
#2
|
|||
|
|||
|
Код:
procedure TForm2.Button1Click(Sender: TObject);
var a,b,c: integer;
f:boolean;
buttonSelected : Integer;
begin
buttonSelected:=MessageDlg('Вы действительно хотите обновить склад',mtInformation,[mbYes,mbCancel], 0);
if buttonSelected = mrYes then begin
DBGrid1.SetFocus;
dm.Prixod.First;
while not dm.prixod.Eof do
begin
f:=true;
dm.tovar.First;
while not (dm.tovar.Eof) and (f) do
begin
if DM.Tovar['TID'] = dm.prixod['PID'] then
begin
dm.Tovar.Edit;
dm.Tovar['TID']:=dm.Prixod['PID'];
dm.Tovar['TName']:=dm.Prixod['PName'];
dm.Tovar['TPriceZak']:=dm.Prixod['PriceZak'];
dm.Tovar['TPriceProd']:=0;
a:=StrToInt(DM.Tovar['TKolvo']);
b:=StrToInt(dm.prixod['PKolPr']);
c:=a+b;
dm.Tovar['TKolvo']:=IntToStr(c);
dm.Tovar.Post;
f:=false;
end;
dm.tovar.next;
end;
if f then
begin
dm.Tovar.append;
dm.Tovar['TID']:=dm.Prixod['PID'];
dm.Tovar['TName']:=dm.Prixod['PName'];
dm.Tovar['TPriceZak']:=dm.Prixod['PriceZak'];
dm.Tovar['TKolvo']:=dm.Prixod['PKolPr'];
dm.Tovar.Post;
end;
dm.prixod.Next;
end;
end;
end;вот что я хотел ^_^ Последний раз редактировалось Sabotender, 03.01.2009 в 16:06. |
|
#3
|
|||
|
|||
|
Ну, только маленькое замечание.
1. Обычно такие вещи делаются с помощью триггеров. 2. Обычно такие вещи делаются в транзакции. |
|
#4
|
|||
|
|||
|
ну я таких штук не знаю, я не начитаный ^_^ да и почему сразу не написать об этом? ^_^ Я уже и курсовую сдал, жаль на 4 ^__^ 5 хотелось, старался всё-таки, а **** училка меня ненавидит и завалила ^_^
|