الخطأ "لا يمكن تغيير نوع بيانات العمود بمجرد احتوائه على بيانات" في Visual Studio 2005 DataSet Designer

StackOverflow https://stackoverflow.com/questions/47217

سؤال

لقد حصلت على DataSet في VisualStudio 2005.أحتاج إلى تغيير نوع بيانات عمود في أحد جداول البيانات من System.Int32 ل System.Decimal.عندما أحاول تغيير نوع البيانات في ملف DataSet Designer أتلقى الخطأ التالي:

قيمة الخاصية غير صالحة.لا يمكن تغيير نوع بيانات العمود بمجرد أن يكون لديه بيانات.

من وجهة نظري، يجب أن يؤدي هذا إلى تغيير نوع البيانات في مخطط DataSet.لا أرى كيف يمكن أن تكون هناك أي بيانات تسبب هذا الخطأ.

هل لدى أحد أي أفكار؟

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

المحلول

أحصل على نفس الخطأ ولكن فقط للأعمدة التي بها DefaultValue تم تعيينه على أي قيمة (باستثناء القيمة الافتراضية <DBNull>).لذلك كانت الطريقة التي تعاملت بها مع هذه المشكلة هي:

  1. القيمة الافتراضية للعمود:اكتب في <DBNull>
  2. احفظ مجموعة البيانات وأعد فتحها

نصائح أخرى

نظرًا لأن جداول البيانات المملوءة لا تقبل أي تغيير في المخطط، فيمكن تطبيق الحل البديل على النحو التالي:

  1. قم بإنشاء جدول بيانات جديد

  2. استخدم طريقة استنساخ Datatable لإنشاء DataTable مع نفس الهيكل وإجراء تغييرات على هذا العمود

  3. في النهاية ، استخدم طريقة الإقلاع عن DataTable لملءها بالبيانات.

هث

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

بالنسبة لأولئك الذين يجدون ذلك عبر Google ولديك حالة مختلفة قليلاً حيث يحتوي الجدول الخاص بك على بيانات وتقوم بإضافة عمود جديد (مثلي)، إذا قمت بإنشاء العمود وتعيين نوع البيانات في عبارات منفصلة، ​​فستحصل أيضًا على نفس الاستثناء.ومع ذلك، إذا قمت بذلك في نفس البيان، فإنه يعمل بشكل جيد.

لذلك، بدلا من هذا:

var column = myTable.Columns.Add("Column1");
column.DataType = typeof(int); //nope, exception!

افعل هذا:

var column = myTable.Columns.Add("Column1", typeof(int));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top