هل يمكن أن اضيف قيمة لحقل في جدول من خلال التغيير في قيمة جدول آخر
#1
السلام عليكم
هل يمكن أن اضيف قيمة لحقل في جدول من خلال التغيير في قيمة جدول آخر
مثلا عندي جدول به حقل هذا الحقل كلما أضيف له قيمة معينة ، و بمجرد أن أضيف القيمة *تنقص من جدول آخر
ملاحضة: استعمل الأكسس و adotable
الرد
#2
وعليكم السلام ورحمة الله وبركاته
نعم تستطيع .
لكن ربما فهمت من سؤالك مثلا لديك جدول فيه المشتريات وجدول فيه المبيعات تنقص عدد من جدول المشتريات كل ما تبيع واحدة ,اهذا هو ؟
ان كان هذا ربما استخدم استعلام اس كيو ال فقط لانه الاسلم والاحكم .
او ضع مجموع المشتريات في متغير والمبيعات في متغير وقم بعملية طرح تجد الفرق
مثلا
كود :
.... Query1:='select sum(Quantity) from table1' ..... var1:=Query1.Fields[0].value; .... Query2='select sum(Quantity) from table2' ...... var2:=Query2.Fields[0].value; ..... var3:= var1-var2

وان كنت تقصد غير هذا وضح
لأستهلنّ الصعب أو أدرك المنى    فما انقادت الآمال إلاّ لصابر
الرد
#3
طبعا مثلما جا في فهمك بالظبط لكن المشكل أني لا أعرف أين أضع هذه الأمور يعني في أي أداة و في أي حدث و أين تعرض النتيجة
الرد
#4
سوف اقص عليك سيناريو اعتمده عندى
انا عندى جدول مشتريات وجدول اصناف واخر للرصيد
عند شراء اصناف "لابد ان تكون موجودة بجدول الاصناف" اضع الفاتورة فى جدول مؤقت
بعد اتمام ادخال كافة الاصناف +تواريخ الصلاحية + الكميات
هناك
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; 
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم