delphi4arab منتديات دلفي للعرب

نسخة كاملة : سؤال حول ZUpdateSQL
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم

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

وشكرا وبارك الله فيكم
يتم ربط zupdatesql مباشرة مع الجدول أو الكيري وهو يقوم بتوليد كود سكيال المناسب من إضافة وتحديث أو حذف
لتطبيق الكود لا تحتاج إلى شئ كل ما عليك هو الترميز المعتاد لكل إجراء على الجدول أو الكيري اي تكفي ztable1.post أو ztable1.edit ....الخ وهو يستدعي كود الإستعلام المناسب
(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 ;

ممكن معرفة أينا يكمن الخطأ أو النقص الموجود في الكود البرمجي
وشكرا
(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 -1 لن يتغير شئ في قاعدة المعطيات لأنك تحذف السجل الذي تدرجه في الحين

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



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




عندما تكون ZUpdateSQL  مربوطة مع الكويري لن يعمل معك اي شيئ من حذف وتعديل الا بواسطة ZUpdateSQL
 للحذف او التعديل استعم SQL مع ZUpdateSQL
السلام عليكم
أشكر الجميع على كل  التوضيحات

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

وشكرا وبارك الله فيكم جميعا
عليك كتابة كود الحذف المستعمل لكي اعرف اين الخطاء أو كود التغيير
(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
اكيد عندك مشكل في ParamByName انت لا تستعمله بالطريقة الصحيحة
جرب هذا الكود من غير ParamByName

ZQuery1.sql := ' select *  tt
Where  code1 = ' + edit1.text
الصفحات : 1 2