سؤال حول ZUpdateSQL
#1
السلام عليكم

ممكن مثال بسيط حول طريقة إستعمال المكون ZUpdateSQL في لازاروس وكيف تطبيق جمل SQL التي تحتويها

وشكرا وبارك الله فيكم
الرد
#2
يتم ربط zupdatesql مباشرة مع الجدول أو الكيري وهو يقوم بتوليد كود سكيال المناسب من إضافة وتحديث أو حذف
لتطبيق الكود لا تحتاج إلى شئ كل ما عليك هو الترميز المعتاد لكل إجراء على الجدول أو الكيري اي تكفي ztable1.post أو ztable1.edit ....الخ وهو يستدعي كود الإستعلام المناسب
[-] كل من 1 user says قال شكرا ل delphi17 على المشاركة المفيدة
  • العيد1403
الرد
#3
(19-10-2019, 09:58 AM)delphi17 كتب : يتم ربط zupdatesql مباشرة مع  الجدول أو الكيري وهو يقوم بتوليد كود سكيال المناسب  من إضافة وتحديث أو حذف
لتطبيق الكود  لا تحتاج إلى شئ كل ما عليك هو الترميز المعتاد  لكل إجراء على الجدول أو الكيري  اي تكفي ztable1.post  أو  ztable1.edit ....الخ وهو يستدعي كود الإستعلام المناسب

السلام عليكم

بارك الله فيك  أخي
لقد جربت هذا المثال لعميلة الإدراج
كود :
ZQuery1.Open;
ZQuery1.Append;
ZQuery1.FieldByName('CODE1').Value := 7;
ZQuery1.FieldByName('NAME').Value := 'bbbbbb';
ZQuery1.FieldByName('SUMNAME').Value := 'bbbbbbb';
ZQuery1.FieldByName('AGE').Value := 50;

ZQuery1.Post;
ZQuery1.Close;
ZQuery1.Open ;

مع العلم أن محتوى ZUpdateSQL1.InsertSQL.Text ;
كمايلي
كود :
INSERT INTO tt
  (CODE1, NAME, SUMNAME, AGE)
VALUES
  (:CODE1, :NAME, :SUMNAME, :AGE)

ونجح الأمر و لكن بالنسبة لعملية التغيير والحذف لم ينجح الأمر فمثلا هذا الكود الخاص بعملية الحذف لم يعمل
كود :
ZQuery1.UpdateObject.Params.ParamByName('OLD_CODE1').AsInteger :=1;
ZQuery1.Open;
ZQuery1.Append;
ZQuery1.Delete  ;
ZQuery1.Close;
ZQuery1.Open ;

ممكن معرفة أينا يكمن الخطأ أو النقص الموجود في الكود البرمجي
وشكرا
الرد
#4
(21-10-2019, 09:53 AM)العيد1403 كتب :
كود :
ZQuery1.UpdateObject.Params.ParamByName('OLD_CODE1').AsInteger :=1;
ZQuery1.Open;
ZQuery1.Append;
ZQuery1.Delete  ;
ZQuery1.Close;
ZQuery1.Open ;
ممكن معرفة أينا يكمن الخطأ أو النقص الموجود في الكود البرمجي
وشكرا

السلام عليكم
لدبك خطأ منطقي او سوء استعمال الأوامر
.Append تعني تضيف سجل جديد وهذا خطأ لانك تقوم بالتحرير
اصلا الاستعلام inser into يعني اضافة
.Delete تعني حذف وهذا خطأ اخر
انصحك بمراجعة ما سبق من دروس وامثلة بالمنتدى والاطلاع على بعص الكتب...
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
[-] كل من 1 user says قال شكرا ل محمد عبد العزيز على المشاركة المفيدة
  • العيد1403
الرد
#5
لن ينجح معك الأمر بتلك الطريقة هناك خطاء فادح في الكود انت تعمل إضافة ثم حذف يعني +1 -1 لن يتغير شئ في قاعدة المعطيات لأنك تحذف السجل الذي تدرجه في الحين

ZQuery1.UpdateObject.Params.ParamByName('OLD_CODE1').AsInteger :=1;
ZQuery1.Open; لا اعرف هذا سطر ماء يفعل هنا لان عند إعادة فتح الجدول ينتقل المؤشر إلى السجل الاول مما يلغي عملية البحث
ZQuery1.Append; احذف هذا السطر من الكود
ZQuery1.Delete ;
ZQuery1.Close; وهذا❗❗
ZQuery1.Open ; وهذا ❗❗
[-] كل من 1 user says قال شكرا ل delphi17 على المشاركة المفيدة
  • العيد1403
الرد
#6
السلام عليكم



إقتباس :ونجح الأمر و لكن بالنسبة لعملية التغيير والحذف لم ينجح الأمر فمثلا هذا الكود الخاص بعملية الحذف لم يعمل




عندما تكون ZUpdateSQL  مربوطة مع الكويري لن يعمل معك اي شيئ من حذف وتعديل الا بواسطة ZUpdateSQL
 للحذف او التعديل استعم SQL مع ZUpdateSQL
لأستهلنّ الصعب أو أدرك المنى    فما انقادت الآمال إلاّ لصابر
[-] كل من 1 user says قال شكرا ل mobile على المشاركة المفيدة
  • العيد1403
الرد
#7
السلام عليكم
أشكر الجميع على كل  التوضيحات

أخي Delphi17 بالنسبة للكود الذي قمت بتصحيحه لقد عمل ولكن الغريب في الأمر أنه يقوم بحذف التسجلية التي فيها المؤشر ولا يراعي قيمة Parameter المرسلة إليه فمثلا عندما يكون قيمة Parameter المرسلة هي 1 و عند التنفيد فإنه لا يحذف التسجيلة التي يحتوي حقلها على قيمة 1 و إنما يتم حذف التسجيلة التي فيها المؤشر رغم أن قيمة حقلها يختلف عن قيمة Parameter المرسلة للجملى SQL الموجودة في ZUpdateSQL1.DeleteSQL.Text;

وشكرا وبارك الله فيكم جميعا
الرد
#8
عليك كتابة كود الحذف المستعمل لكي اعرف اين الخطاء أو كود التغيير
الرد
#9
(01-11-2019, 04:26 PM)delphi17 كتب : عليك كتابة كود الحذف المستعمل لكي اعرف اين الخطاء أو كود التغيير

السلام عليكم
هذا هو الكود
كود :
ZQuery1.UpdateObject.Params.ParamByName('OLD_CODE1').AsInteger :=1;
  ZQuery1.Delete  ;

مع العلم أن جملة SQL  االموجودة في في الخاصية ZUpdateSQL1.DeleteSQL.Text هي كالتالي
كود :
DELETE FROM tt
WHERE
  tt.CODE1 = :OLD_CODE1
الرد
#10
اكيد عندك مشكل في ParamByName انت لا تستعمله بالطريقة الصحيحة
جرب هذا الكود من غير ParamByName

ZQuery1.sql := ' select *  tt
Where  code1 = ' + edit1.text
الرد


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


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