سؤال

حصلت على adoquery التي لديها حدث onnewRecord.

في الإجراء ، أحاول إضافة البيانات التلقائية إلى جدول آخر. البيانات عبارة عن عدد قليل من الصفوف المطلوبة والتعامل معها في ClientDataset في حالة الإلغاء.

في LOC

eShoneAdoquery.Insert ؛

أخطأ في أن adoquery فشلت في إدراج فارغة في حقل غير فارغ. أنا في وضع إدراج ، لكنني لم أطلب من Delphi نشر! أنا لا أجد لماذا ينشر.

تحرير: هل يمكنك مساعدتي في العثور على تلميح حول هذه المشكلة؟

المزيد من التوضيح:

في

adoquery.onnewRecord () ؛

يبدأ

clienddataset.insert ؛ // هنا يذهب إلى النشر ل adoquerypost. حيث كان ClientDataset في حالة تصفح

نهاية؛

يحرر:

هذا الخطأ لا معنى له! انظر إلى تتبع المكدس:

  • قبل الظهر
  • رقم قياسي جديد
  • Myfunc

حيث MyFunc يسبب newRecord مع الإدراج.

هل كانت مفيدة؟

المحلول 2

كان الجواب من اتصال بين الجداول.

تم تعيين adoquery.datasource مجموعة البيانات الخاصة بـ ClientDataset.

هذا جنون الكثير من الضرر ، وليس تلميح من قبل دلفي.

نصائح أخرى

أنا لست على دراية Tadoquery ، لكنني أعرف كيفية تعقب خطأ مثل هذا. أولاً ، إذا لم يكن لديك بالفعل تعيينه ، فانتقل إلى خيارات المشروع وقم بتشغيل استخدام DEBUG DCU ضمن علامة التبويب "ترجمة" ، ثم قم بتشغيله بالكامل وتشغيله. عندما تحصل على تقرير الاستثناء في The Debugger ، اضغط على Break ويجب أن ينتهي بك الأمر داخل الكود الخاص بـ tadoquery أو أحد كائناته الفرعية. حاول فحص مكدس المكالمات. إذا بحثت عن عدد قليل من المكالمات ، فربما تجد شيئًا فعلته هو استدعاء شيء آخر يتصل به. اتبع تتبع المكدس مرة أخرى حتى تصل إلى الكود الخاص بك وستحصل على فكرة عما يجري ، وإذا قمت بتحليله قليلاً ، فيجب أن تجد بطريقة ما لمنع المشكلة.

بعد قولي هذا ، اسمحوا لي أن أتخمينًا سريعًا لسبب مشكلتك: عند الاتصال بإدراج على مجموعة بيانات ، إذا كانت مجموعة البيانات بالفعل في وضع الإلحاق لأنك قد اتصلت مسبقًا بإدراج أو إلحاقها ولم تتابعها ، سيتصل بالمنشور نفسه قبل إعداد صف جديد لك للعمل عليه. ربما هذا ما يحدث لك؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top