سوف اقص عليك سيناريو اعتمده عندى
انا عندى جدول مشتريات وجدول اصناف واخر للرصيد
عند شراء اصناف "لابد ان تكون موجودة بجدول الاصناف" اضع الفاتورة فى جدول مؤقت
بعد اتمام ادخال كافة الاصناف +تواريخ الصلاحية + الكميات
هناك
procedure Save_invoice يقوم بالاتى
باستخدام جمل الSQL يضيف الى جدول المشتريات insert وعمل تحديث للكميات باستخدام جمل SQL باستخدام update
بعد الانتهاء اقوم بمسح الجدول المؤقت
ملحوظة انا لا استخدم اى كومبوننت تجارى ولا اى كمبوننت db الا dbgrid لغرض العرض فقط واحلم بالانتقال الى الstringgrid
افترض ان لدينا فاتورة بها اصناف
كل صنف داخل الفاتورة له كود واسم وسعر وتاريخ صلاحية وكمية
هذه الفاتورة مربوطة بadoquery1 للعرض
سنحتاج لحفظ هذه الفاتورة استخدام adoquery2 وسنصنع دالة حفظ
PHP كود :
procedure save_invoice;
begin
while not adoquery1.eof do
begin
with adoquery2 do
begin
close;
sql.clear;
sql.text:='yor sql statment here';
ExecSQL;
end;
adoquery1.next;
end;
end;
مثال عملى على تحديث قيمة صنف عند شراء كمية جديدة منه
PHP كود :
procedure save_invoice;
begin
while not adoquery1.eof do
begin
with adoquery2 do
begin
close;
sql.clear;
sql.Text:='update stoke_table set balance = balance +'+QuotedStr(ADOQuery1.FieldByName('quantity').AsString);
sql.Add( 'where code_item = '+QuotedStr(ADOQuery1.FieldByName('code_item').AsString));
ExecSQL;
end;
adoquery1.next;
end;
end;