السلام عليكم ورحمة الله تعالى وبركاته
لقد قمت بمحاولة تحديث جدول من قاعدة بيانات وذلك بمحاولة تحديثه بنيجة استعلام AbsQuery
هذا الاخير يحتوي على عدة سجلات تقريبا 5 سجلات
واضطررت لاستخدام طريقة اخرى وقد نجحت
PHP كود :
ABSQuery3.First;
absVente.First;
while not ABSQuery3.Eof do
begin
absVente.edit;
absVente.FieldByName('commission').Value := ABSQuery3.FieldByName('tarif_commission').Value * ABSQuery3.FieldByName('quantite').Value;
absVente.post;
ABSQuery3.Next;
absVente.Next;
end;
اما الطريقة الاولى التي استعملتها ولم تنجح حيث ان هذه الطريقة تحدث الجدول ولكن السجل الاول فقط وليس جميع السجلات
PHP كود :
ABSQuery2.Close;
ABSQuery2.SQL.Clear;
ABSQuery2.SQL.Add('update vente set vente.commission = :commission where vente.numero = numero');
ABSQuery2.ParamByName('commission').Value := ABSQuery3.FieldByName('tarif_commission').Value * ABSQuery3.FieldByName('quantite').Value;
ABSQuery2.ParamByName('numero').Value := ABSQuery3.FieldByName('numero').value;
ABSQuery2.ExecSQL;
الصور في المرفقات
هل من طريقة لتحدث الجدول باستعمال الطريقة الاولى
السلام عليكم لكي يقرأ Query البرامترات يجب ان تضيف نقطتين :
PHP كود :
ABSQuery2.SQL.Add('update vente set vente.commission = :commission where vente.numero =:numero');
بدل
PHP كود :
ABSQuery2.SQL.Add('update vente set vente.commission = :commission where vente.numero = numero');
(12-02-2018, 06:11 PM)S.FATEH كتب : [ -> ]السلام عليكم لكي يقرأ Query البرامترات يجب ان تضيف نقطتين :
PHP كود :
ABSQuery2.SQL.Add('update vente set vente.commission = :commission where vente.numero =:numero');
بدل
PHP كود :
ABSQuery2.SQL.Add('update vente set vente.commission = :commission where vente.numero = numero');
بارك الله فيك اخي
لقد جربتها فوجدت انها تقوم بتعبئة سجل واحد فقط والسجلات الاخرى تبقى فارغة
الصورة في المرفقات
طباع لانك حددت له سجل معين
إقتباس :كود :
where vente.numero =:numero
قم بحذف هذا السطر لتحديث كل البيانات وليس سجل معين
(16-02-2018, 10:14 PM)Delphi4Us كتب : [ -> ]طباع لانك حددت له سجل معين
إقتباس :كود :
where vente.numero =:numero
قم بحذف هذا السطر لتحديث كل البيانات وليس سجل معين
اذا قمت بحذف هذا السطر فسيقوم بتحديث كل السجلات بنفس القيمة
انا اريد تحديث كل السجلات ولكن بشرط ان يقوم باعطاء كل سجل نتيجته الخاصة
وفي هذه الحالة سيقوم باعطاء نفس النتيجة الخاصة بسجل معين لكل السجلات
وهذا ما لا اريده ان يحصل
السلام عليكم وضح العملية التي تود القيام بها
(17-02-2018, 01:23 PM)S.FATEH كتب : [ -> ]السلام عليكم وضح العملية التي تود القيام بها
وعليكم السلام ورحمة الله وبركاته
ارسلت استعلاما الى قاعدة البيانات ABSOLUTE DATABASE وحصلت على جواب هذا الاستعلام في مكون ABSQUERY
والذي يحتوي الان عن جدول فيه عدة سجلات وعدة حقول من بينها حقل مهم والذي احتاجه وهو حقل العمولات
واريد ان اقوم الان بتحديث الحقل الخاص بالعمولات في جدول ABSTABLE داخل قاعدة البيانات وذلك باستعمال حقل عمولات ABSQUERY
يعني انني اريد نقل العمولات التي قمت بحسابها باستعمال ABSQUERY وادراج هذه القيم في جدول ABSTABLE ولكن بشرط ان يقوم
باعطاء العمولة لكل بائع
والحل الوحيد الذي وجدته هو هذا الكود
PHP كود :
ABSQuery3.First;
while not ABSQuery3.Eof do
begin
absVente.Locate('numero',ABSQuery3.FieldByName('numero').Value,[]);
absVente.edit;
absVente.FieldByName('commission').value := ABSQuery3.FieldByName('tarif_commission').Value * ABSQuery3.FieldByName('quantite').Value;
absVente.post;
ABSQuery3.Next;
وانا الان ابحث عن طريقة اسهل باستعمال SQL يعني QUERY
وقد سبق لي ان جربت ولكن لم يعمل الاستعلام الذي استعملته
فكل ما يفعله وهو نقل قيمة واحدة فقط
PHP كود :
ABSQuery2.SQL.Add('update vente set vente.commission = :commission where vente.numero =:numero');
(20-02-2018, 03:53 PM)Ben.Ja كتب : [ -> ]عليك كتابة الامر كله في ال Sql لا حاجة لل Parameter
PHP كود :
Update vente,affectation
Set vente.commission = (affectation.tarif_commission * vente.quantite)
Where ??
في مكان ?? اكتب ما كتبت بعد where التي في الـABSQuery3
ذكرت جدول affectation بعد update لان هناك استخدام للعمود tarif_commission
في انتظار الرد..
عفوًا هكذا
PHP كود :
ABSQuery2.Close;
ABSQuery2.SQL.Clear;
ABSQuery2.SQL.Add('Update vente,affectation');
ABSQuery2.SQL.Add('Set vente.commission = (affectation.tarif_commission * vente.quantite)');
ABSQuery2.SQL.Add('Where ??');
ABSQuery2.ExecSQL;
اسف على التاخير في الرد
هذا الكود لن يعمل يا اخي لانه لا بد من اخد الباراميتر من Query
الكيري يحتوي على نتائج البحث التي قام بها وهذه النتائج هي التي اريد اعطائها لجدول المبيعات وبالضبط لحقل العمولات
الكيري قام بمقارنة بين جدولين جدول المبيعات وجدول القواعد (affectation)
وبعد المقارنة قام باستخلاص النتائج والتي اريد اعادة دمجها في جدول المبيعات
اظن ان الاستعلام الثاني الذي تريد منه ان يأخذ النتائج من الاول ووضعها في جدول المبيعات لا فائدة منه, يمكنك اختصار الكل في استعلام واحد
هل جربت الكود؟ لان لدي نفس الجداول واشتغل معي الاستعلام