EasyDelphi Q&A
0 تصويتات
42 مشاهدات

السلام عليكم ورحمة الله تعالى وبركاته

واجهتني هذه المشكلة في اظهار جملة اسكيال من كويري

استعملت الكود التالي فتظهر رسالة خطأ بعد التنفيذ

 ShowMessage (qry1.SQl.text);

 

سُئل في تصنيف vcl بواسطة (990 نقاط) | 42 مشاهدات
وضح العنوان، انت تريد اظهار جملة ال SQL عند حدوث الخطأ
على الاقل اكتب رسالة الخطأ
رسالة الخطأ
Access violation at address 007E0D06 in module'project1.exe'
Read of address 0000006C
هل qry1 . مكون وضعته في النافذة . ام انشأته في الكود . ؟؟
الخطأ واضح المكون qry1 . غير موجود ( غير منشء ) . وقت طلب showmessage ..
كويري موجود بوضع التصميم وبه جملة اسكيال
أريد إظهارها في رسالة أو متغير
اعطنا بعض الاسطر قبل وبعد . حتى نعرف كيف الامور متسلسلة
لا توجد أسطر في حدث  الفورم oncreate
هذا السطر فقط
اصبح الامر واضح جدا وكما توقعت . ساجيبك باجابة مستقلة
سؤال على السريع . هل qry1 . موجودة في نفس الفورم ؟

2 إجابة

0 تصويتات
أفضل إجابة
من التعليقات على السؤال والاجابات . انا شبه اكيد بان سبب المشكلة هو طلب هذا السطر قبل انشاء qry1  .  ساضع بعض الحالات :

١ ـ المكون qry1 موجود في نافذة او datamodul يتم انشائها بعد انشاء النافذة التي تطلب فيها سطر الكود الذي ذكرته . في هذه الحالة المشكلة ستظهر في وقت التنفيذ وليس في وقت التصميم . عليك التاكد من ترتيب انشاء النوافذ من خيارات المشروع . او تغير مكان سطر الكود . ووضعه مثلا في onShow .

٢ ـ وجود تعريف لـ qry1 في نفس النافذة . وحسب تعليقك فانت وضعته في وقت التصميم . فاعتقد بان الـ qry1 الموجودة في سطر الكود ليست هي نفسها التي تريدها . بكلام ابسط . عندك مكون في نافذة اخرى ومتحول بنفس الاسم في النافذة .. عندها qry1 . ستكون هي الموجوة في النافذة وليست المكون الـ qry1  .

٣ ـ حتى تتاكد من ان سبب المشكلة فعلا هو طلب qry1 قبل وجوده . ضع نقطة توقف على السطر نفسه وشغل البرنامج في نمط debug . وسيتوقف الكود عند هذا السطر . ضع مؤشر الفأرة على كلمة qry1 . سيظهر لك قيمتها . اذا كانت القيمة هي nil . فهذا يعني اكيد انه مكون لم يتم انشائه بعد . ويجب عليك ان تتاكد من الحالتين السابقتين التي ذكرتها في اجابتي .
تم الرد عليه بواسطة (26,480 نقاط)
مختارة بواسطة
أستاذ سامر ماقلته كلام صحيح عند تشغيله في وضع Debug تظهر القيمة nil
قمت بتغييره الى حدث onShow اشتغل الكود
بارك الله فيكم استفدت كثيرا من إجابتك
عند ال OnCreate لا يستدعى الا بعد انشاء كل العناصر، هنالك مشكلة اخرى
لا ينصح بطلب استعلامات في onShow
صحيح ..
هناك مشكلة اخرى فعلا . والسبب مختلف .
ووضع العبارة في onShow . لا يحل المشكلة اكيد وقطعا . هذا مجرد تشغيل للكود وليس حل . هذا مجرد ترقيع .
أنا لم أضع استعلام في حدث onshow
راح أوضح أكثر قمت بعمل كويري في وضع التصميم وبه جملة اسكيال لتوحيد أكثر من جدول
أردت التعامل مع هذا كويري في استعلامات أخرى عن طريق متغير لجلب التعليمة
سؤال مطروح هل هناك طريقه أخرى للتعامل مع هذا الكوبري
جربت هذه الطريقة ولم تصلح
Select * from qry1
صلحت فقط عندما قمت بتصميم كويري في قاعدة البيانات وأصبح التعامل معه كجدول
تعليق السيد زاهر لم يكن لك . كان عن اقتراحي عن الـ onShow . ومعه حق في كلامه .
بالنسبة لاي سؤال جديد . فضعه في سؤال مستقل . وليس في التعليقات . فوجوده في التعليقات سيكون صعب على الناس مراجعته او الاجابة عليه .
0 تصويتات

عند حدوث خطأ سيتم اطلاق exception فيتم الخروج من الاجراء بعد سطر عملية التنفيذ و سيتجاوز الجملة التي كتبتها فوق

قم باصطياد الخطا و اظهار الرسالة

 

try
  ///execute lines
except
  on E: Exception do
  begin
   ShowMessage (qry1.SQl.text);
   raise;
  end;
end;

 

تم الرد عليه بواسطة (15,150 نقاط)
كنت أقصد اظهار جملة اسكيال في رسالة من دون خطأ لانها لا تظهر أصلا
سؤالك غير واضح
لانستطيع تخمين كامل الكود حتى نعرف اين الخطأ
يا أخي زاهر   تعليمة اسكيال مكتوبة في وضع التصميم في كويري اريد إظهارها وقت تشغيل الفورم

اسئلة متعلقة

+4 تصويتات
1 إجابة
سُئل يوليو 13، 2018 في تصنيف vcl بواسطة Ahmed02dz (410 نقاط) | 421 مشاهدات
0 تصويتات
1 إجابة
سُئل يونيو 12 في تصنيف vcl بواسطة Djemoui Benkhalifa (990 نقاط) | 29 مشاهدات
+1 تصويت
0 إجابة
سُئل مايو 21 في تصنيف vcl بواسطة hidenpain (1,230 نقاط) | 25 مشاهدات
+1 تصويت
2 إجابة
سُئل أبريل 29 في تصنيف vcl بواسطة hidenpain (1,230 نقاط) | 39 مشاهدات
0 تصويتات
1 إجابة
سُئل أبريل 7 في تصنيف vcl بواسطة NADIRE (870 نقاط) | 40 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك
Comodo SSL

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

408 سؤال
642 إجابة
1,150 تعليق
242 مستخدم