2008-09-06 13 views
17

में त्रुटि के बाद डेटा के एक प्रकार के डेटाटाइप को बदल नहीं सकता है। मुझे विजुअलस्टूडियो 2005 में डेटासेट मिला है। मुझे System.Int32 से System.Decimal पर डेटाटेबल्स में से किसी एक कॉलम के डेटाटाइप को बदलने की आवश्यकता है। । मैं निम्न त्रुटि प्राप्त जब मैं DataSet Designer में डेटाप्रकार बदलने की कोशिश:"विजुअल स्टूडियो 2005 डेटासेट डिज़ाइनर

Property value is not valid. Cannot change DataType of a column once it has data.

मेरी समझ से, इस डेटासेट के लिए स्कीमा में डेटाप्रकार बदलते जाना चाहिए। मैं नहीं देखता कि इस त्रुटि के कारण कोई डेटा कैसे हो सकता है।

क्या किसी के पास कोई विचार है?

उत्तर

32

मुझे एक ही त्रुटि मिलती है, लेकिन केवल DefaultValue के साथ कॉलम के लिए किसी भी मान पर सेट (डिफ़ॉल्ट <DBNull> को छोड़कर)। तो जिस तरह से मैं इस समस्या के समाधान मिल गया था:

  1. कॉलम DefaultValue: <DBNull>
  2. सहेजें में टाइप करें और डाटासेट
+0

यह काम करता है, लेकिन कुछ ध्यान दिया जाना चाहिए: जब आप सहेजते और बंद करते हैं तो एक सत्यापन किया जाता है। यदि कोई समस्या है तो डेटासेट को बंद करते समय फ़ील्ड को हटा दिया जाता है। मैंने इसे कठिन तरीके से पाया क्योंकि मैंने दर्ज की गई बहुत सारी जानकारी खो दी। हानि को रोकने के लिए, सुनिश्चित करें कि डेटासेट इसे बंद करने का प्रयास करने से पहले त्रुटियों के बिना बचाता है। – DAG

2

के बाद से भरा DataTables स्कीमा एक समाधान के रूप लागू किया जा सकता में एक परिवर्तन का मनोरंजन नहीं है इस प्रकार है:

  1. के लिए एक नया datatable

  2. उपयोग datatable का क्लोन विधि के साथ datatable बनाने बनाओ उसी संरचना और उस कॉलम

  3. अंत में उपयोग डेटाटेबल के ImportRowडेटा के साथ इसे पॉप्युलेट करने के लिएविधि।

HTH

3

मैं एक काम के आसपास मिल गया है। यदि मैं डेटा कॉलम हटा देता हूं और इसे अलग-अलग डेटा प्रकार से जोड़ता हूं, तो यह काम करेगा।

+0

मैं एक ही समस्या में पड़ गए हैं। अजीब - डिजाइनर में इसे बदल नहीं सकते हैं। एक बग की तरह लग रहा है ... – aSkywalker

+0

वही बग अभी भी वीएस -2010 में है। वही समाधान काम करता है। डिफ़ॉल्ट मानों को हटाएं, डीएस को सेव और बंद करें, फिर पुन: खोलें और आप डेटा प्रकारों को संपादित कर सकते हैं। – Andy

1

गूगल के माध्यम से इस ढूँढने उन लोगों के लिए फिर से खोलने और आप थोड़ा अलग मामले में जहां है आपकी तालिका में डेटा है और आप एक नया कॉलम जोड़ते हैं (जैसे मेरे), यदि आप कॉलम बनाते हैं और डेटाटाइप को अलग-अलग कथन में सेट करते हैं तो आपको यह भी अपवाद मिलता है। हालांकि, अगर आप इसे एक ही कथन में करते हैं, तो यह ठीक काम करता है।

तो, बजाय इस की:

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

यह करें:

var column = myTable.Columns.Add("Column1", typeof(int)); 
संबंधित मुद्दे