فيما يتعلق بتغيير مبلغ واضافة مبلغ
#1
السلام عليكم ورحمة الله تعالى وبركاته
ربما عنوان المشاركة غير مفهوم واعتذر على الخطأ
لكن مشكلتي انه اثناء البحث عن السجل حسب الحقول الواردة في البحث
المطلوب :
إذا كان السجل موجود بنفس الحقول الواردة في البحث هنا يجب ان يغير المبلغ بالمبلغ الجديد وليس الزيادة عليه بل مسح المبلغ السابق وتغييره بالجديد
ملاحظة المبلغ هو عبارة عن مجموع مبلغ السجل اذا كان هذ السجل مكرر ووضعه مكان المبلغ السابق
واذا كان غير موجود يضيف الى الجدول الثاني السجل بمجموع مبالغه
لقد وضعت هذا الكود
لكن المشكلة انه في حالة وجود مبلغ سابق يجمعه مرتين
اما بالنسبة لعدم وجود الي سجل فالنتيجة تعمل بشكل عادي
واليكم الكود المستعمل :
كود :
    DM.TabV.Open;
    DM.TabV.DisableControls;
    DM.TabV.First;
    while not DM.TabV.Eof do
    begin
      NPYR:=DM.TabVNT_PYR.asfloat;
      if Not DM.TabVBloquer.Value=True then
      if TabN.Locate('Cde;Num;Mois',vararrayof([DM.TabVCde.asInteger,DM.TabVNum.asstring,DM.TabVMois.asInteger]),[locaseinsensitive,lopartialkey]) then
      begin
        TabN.Edit;
        TabNNT_RPY.asfloat:=NPYR+TabNNT_RPY.AsFloat;
      end
      else
      begin
      TabN.insert;
      TabNCD_Pers.AsInteger:=DM.TabVCde.asInteger;
      TabNNum.AsString:=DM.TabVNum.asString;
      TabNMois.AsInteger:=DM.TabVMois.AsInteger;
      TabNNom.AsString:=DM.TabVFNOM.asstring +' '+DM.TabVPNOM.asstring;
      TabNBL_Pers.value:=DM.TabVBloquer.value;
      TabNNT_RPY.AsFloat:=NPYR;
      TabN.Post;
      TabN.Refresh;
      end;
      DM.TabV.Next;
    end;
    end;
    DM.TabV.EnableControls;
الرد
#2
هل الاشكال غير واضح
الرد
#3
السلام عليكم

استعمل sql


كود :
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

Example
كود :
UPDATE Customers
SET ContactName = 'Ahmed', City= 'Alger'
WHERE CustomerID = 1;
الفاشلون نوعان : الأول : فكر ولم يفعل .. والآخر: فعل ولم يفكر
[-] كل من 1 user says قال شكرا ل Mr.DOS على المشاركة المفيدة
  • Delphi4Us
الرد
#4
مشكور اخي على المرور
هل  بامكانك اعطائ مثال بـالأسكيال حسب الحقول والجداول المبينة في مداخلتي
اي التحويل من الجدول TabV الى TabN
وبنفس الحقول أي في حالت وجود نفس السجل حسب الشرط
يقوم بتغيير قيمة الحقل NT_RPY
وفي حالة عدم وجود السجل نفسه حسب الشرط
يقوم بإضافة السجل بالكامل
أي
Cde = CD_Pers
Num = Num
Mois = Mois
FNom+' '+Pnom = Nom
Bloquer = BL_Pers
NT_RPY = NT_RPY
ملاحظة
إذا كان السجل مكرر يحمل نفس القيمة للحقل Cde,Num,Mois في هذه الحالة تتم عملية جمع قيمة الحقلNT_RPY الموجود فس الجدول TabV ووضعها في الجدول TabN في الحقل NT_RPY سواءا في عملية التغيير أو الإضافة
الرد
#5
ارفق لنا مثال عملي بسيط على قاعدة بيانات اكسس + محاولتك (الكود البرمجي)
الفاشلون نوعان : الأول : فكر ولم يفعل .. والآخر: فعل ولم يفكر
الرد
#6
مشكور اخي
لكن انا اعمل على قاعدة البيانات
ABSOLUTE DATABASE
والدلفي XE8
ولم يسبق لي التعامل مع الاكسس

اليك اخي المثال مرفق
عند عملية التنفيذ ستلاحظ انه لايغير المبلغ فقط بل يضعفه كلما تم الضغط على الزر
ومن المفروض لايضاعف المبلغ بل يغيره


.rar   ExempleTrsf.rar (الحجم : 77.1 KB / التحميلات : 19)
جزاكم الله عنا كل خير
الرد
#7
وعليك السلام ورحمة الله تعالى وبركاته

* جربت المثال المرفق يعمل عادي بدون أخطاء ، يظيف المجموع حسب الكود و الشهر ، هذا معناه إذا كان السجل موجود من قبل يظيف القيمة ، اذا لم يجد السجل يظيفه من جديد.

* الذي لا يلفت الانباه هو التكرار ، كمثال MED ALI كود يساوي 1 و الشهر 1 اذن يوجد ثلاثة حقول تحقق الشرط يظيفها إلى الجهة المقابلة

[صورة مرفقة: 377424706.png]

ملاحظة : اظافة صغيرة

[صورة مرفقة: 593103394.png]
الرد
#8
مشكور اخي على المرور
المطلوب يا اخي هو مسح او الغاء المبلغ الموجود سابقا واستبداله بالجديد
وليس اضافة المبلغ الجديد على ماهو موجود سابقا
بارك الله فيكم

بمعنى اذا كان المبلغ كما هو مبين في الصورة يساوي 25.000,00 والجديد يساوي 6.500,00 هنا يجب مسح او الغاء 25.000,00 واستبدالها بـ 6.500,00
بالتوفيق
الرد
#9
medreg

اليك اخي المثال مرفق
عند عملية التنفيذ ستلاحظ انه لايغير المبلغ فقط بل يضعفه كلما تم الضغط على الزر
ومن المفروض لايضاعف المبلغ بل يغيره


جزاكم الله عنا كل خير



* اذا اردت عدم مظاعفة المبلغ عند الضغط عليه مرة اخرى، احذف الحقل الذي تم إظافته  ، يكون كتالي :

[صورة مرفقة: 205422417.png]

(15-10-2019, 06:18 PM)medreg كتب : مشكور اخي على المرور
المطلوب يا اخي هو مسح او الغاء المبلغ الموجود سابقا واستبداله بالجديد
وليس اضافة المبلغ الجديد على ماهو موجود سابقا
بارك الله فيكم

بمعنى اذا كان المبلغ كما هو مبين في الصورة يساوي 25.000,00 والجديد يساوي 6.500,00 هنا يجب مسح او الغاء 25.000,00 واستبدالها بـ 6.500,00
بالتوفيق

* في هذه الحالة احذف و غير مايلي

[صورة مرفقة: 943362539.png]

لم انتبه غيرها بهذه

[صورة مرفقة: 320857974.png]

وهنا ايضا

[صورة مرفقة: 115876534.png]
الرد
#10
يا اخي عندما قصدت بأن يغير المبلغ السابق بالمبلغ الجديد
واشرت الى ان يغير 25.000,00 بـ 6.500,00
يعني يعيد جمع كل القيمة المتعلقة بالشرط وكمثال
نلاحظ ان السجل المكرر المتعلق بـ MED ALI
مكرر ثلاث مرات بنفس الشهر ونفس الشخص
يعني يجب جمع الثلاث مبالغ ويضع مجموعهم المقدر بـ 6.500,00 في مكان 25.000,00
هذا ما قصدته

الكود السابق فعلا يعمل بشكل جيد الا انه يضاعف المبلغ
وما اريده هو تغيير المبلغ بالجديد تغييره بـ 6.500,00
الرد


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


مستخدمين يتصفحوا هذا الموضوع: 1 ضيف