رسالة الخطأ "قيم غير صحيحة داخل هيكل SQLDA" مع Firebird و Delphi 2009
-
13-09-2019 - |
سؤال
أنا شجاق مع رسالة الخطأ "قيم غير صحيحة داخل بنية SQLDA" عندما أحاول تحديث حقل BLOB داخل قاعدة بيانات Firebird 2.1 من تطبيق Delphi 2009 DBX.
ومع ذلك، أحصل على رسالة الخطأ عند محاولة تنفيذ TSQLQUERY باستخدام SQL التالية: "تحديث Mytable Set Field1 =: البيانات حيث معرف =: ID"
رمز دلفي ذات الصلة هو:
MyQuery.ParamByName('id').AsInteger := id;
MyQuery.ParamByName('data').LoadFromFile(filename, ftBlob);
MyQuery.ExecSQL();
أين يجب أن أبحث؟ هذا يعمل في إصدارات دلفي السابقة.
المحلول
تحقق مرة أخرى سائق الخاص بك - إنه ل firebird. أو كنت مجرد استخدام Interbase. سائق لهذا؟ من المعروف أن فريق Firebird غير بنية SQLDA النقط في 2.1، وبالتالي، لا يمكن استخدام برنامج تشغيل Interbase.
لديك بعض الخيارات هنا:
- (الموصى بها، IMHO) ترقية إلى دلفي 2010 - بالإضافة إلى برنامج تشغيل DBX Firebird، ستحصل على المزيد من الأشياء التي تلعبها مع (انظر هنا للمزيد من)
- شراء سائق الطرف الثالث ل Firebird الذي يعمل في دلفي 2009
- "downgrade" firebird الخاص بك (استخدمها كمنتجع آخر، بالطبع)
- تغيير مكتبة الاتصال الخاصة بك. نعم، قد يعني إعادة كتابة التعليمات البرمجية.
نصائح أخرى
ربما تحتاج إلى استخدام برنامج تشغيل DBX مجاني ل Firebird
هذا هو نوع من خطأ سرداب يتم استخدام برنامج تشغيل Interbase في Delphi لإظهاره.
لقد رأيت هذه المشكلة عندما يكون لديك أرقام مختلفة من المعلمات في عبارة SQL الخاصة بك وتلك التي تم تعريفها في مكون الاستعلام الخاص بك.
أول شيء يتبادر إلى الذهن هو التأكد من أن العميل DLL (GDS32.dll أو fb32.dll أو fbclient.dll، يعتمد الاسم على إصدار Firebird الذي تستخدمه) يطابق بالضبط إصدار الخادم الذي تستخدمه.
-
FWIW، حصلت على هذا الخطأ في برنامج بيرل عن طريق تنفيذ عبارة دون ربط المتغيرات، عندما يحتاجها.