أدخل إلى جدول مختلف onnewRecord
سؤال
حصلت على 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 أو أحد كائناته الفرعية. حاول فحص مكدس المكالمات. إذا بحثت عن عدد قليل من المكالمات ، فربما تجد شيئًا فعلته هو استدعاء شيء آخر يتصل به. اتبع تتبع المكدس مرة أخرى حتى تصل إلى الكود الخاص بك وستحصل على فكرة عما يجري ، وإذا قمت بتحليله قليلاً ، فيجب أن تجد بطريقة ما لمنع المشكلة.
بعد قولي هذا ، اسمحوا لي أن أتخمينًا سريعًا لسبب مشكلتك: عند الاتصال بإدراج على مجموعة بيانات ، إذا كانت مجموعة البيانات بالفعل في وضع الإلحاق لأنك قد اتصلت مسبقًا بإدراج أو إلحاقها ولم تتابعها ، سيتصل بالمنشور نفسه قبل إعداد صف جديد لك للعمل عليه. ربما هذا ما يحدث لك؟