2010-07-26 10 views
6

मुझे एक ऐसा प्रोग्राम बनाना है जो सभी यूनिकोड संपीड़न को बंद कर देता है और सभी एक्सेस डेटाबेस (.mdb) में "शून्य लंबाई की अनुमति दें"।एडीओएक्स एकाधिक-चरण ओएलई डीबी ऑपरेशन उत्पन्न त्रुटियां

शून्य लंबाई की अनुमति देने के लिए विधि बहुत अच्छी तरह से काम करता है। हालांकि, यूनिकोड संपीड़न को बंद करने की विधि बिल्कुल काम नहीं करती है और निम्नलिखित अपवाद देता है:

एकाधिक-चरण ओएलई डीबी ऑपरेशन त्रुटियों को उत्पन्न करता है। यदि उपलब्ध हो तो, प्रत्येक ओएलई डीबी स्थिति के मान की जांच करें। कोई काम नहीं किया गया था।

इसे हल करने के तरीके पर कोई सुराग?

private void TurnOffUnicodeCompressionInField(ADOX.CatalogClass catalogClass, String tableName, String field) 
{   
    ADOX.Column column = catalogClass.Tables[tableName].Columns[field]; 
    ADOX.Property prop = column.Properties["Jet OLEDB:Compressed UNICODE Strings"]; 
    prop.Value = true; 
} 

private void TurnOffAllowZeroLengthInAllFields(ADOX.CatalogClass catalogClass, String tableName) 
{ 
    foreach (ADOX.Column column in catalogClass.Tables[tableName].Columns) 
     column.Properties["Jet OLEDB:Allow Zero Length"].Value = false; 
} 

private void MyButton_Click(object sender, EventArgs e) 
{ 
    String filePath = ""; 
    OpenFileDialog ofd = new OpenFileDialog(); 
    DialogResult result = ofd.ShowDialog(); 

    if (result == DialogResult.OK) 
    { 
     filePath = ofd.FileName; 
     ADOX.CatalogClass catDatabase = new ADOX.CatalogClass(); 
     catDatabase.let_ActiveConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath); 

     // SoftwareTable 
     TurnOffAllowZeroLengthInAllFields(catDatabase,"Software"); 
     TurnOffUnicodeCompressionInField(catDatabase, "Software", "Description"); 
     TurnOffUnicodeCompressionInField(catDatabase, "Software", "Name"); 
    }      
} 
+0

यह समस्या एक्सेस में भी चल रही है। क्या एसक्यूएल आपके पिछले पोस्ट में उपयुक्त नहीं है? – Fionnuala

+0

मुझे शून्य लंबाई की अनुमति हटाने के लिए ADOX का उपयोग करना है, इसलिए ADOX का उपयोग करके यूनिकोड संपीड़न को क्यों न हटाएं? बहुत बुरा यह उम्मीद के रूप में काम नहीं करता .. कई विचार? – MadSeb

+1

एडीओएक्स एक गैर-मूल डेटा अबास्ट्रक्शन परत है और यह आवश्यक रूप से किसी भी विशेष डेटाबेस इंजन के सभी गुणों में हेरफेर करने में सक्षम नहीं होगा। जेट/एसीई एक विशेष रूप से खराब मामला है जिसमें इसकी मूल डेटा इंटरफ़ेस परत, डीएओ, जेट 4 रिलीज के समय सीमा में एमएस एडीओ-हर जगह अभियान के दौरान अपंग थी। दुर्भाग्यपूर्ण परिणाम यह है कि लगभग हर चीज के लिए, आप डीएओ का उपयोग कर सकते हैं, लेकिन कुछ चीजों के लिए, एडीओ में एकमात्र समर्थन है। और, हाँ, यह मूर्खतापूर्ण है और यह वास्तव में बेकार है। मुझे नहीं पता कि एक्सेस टीम एसीई में इसे सही करने की योजना बना रही है या यदि उनमें से कुछ को पहले ही तय कर दिया गया है। –

उत्तर

0

आप पात्रों उचित यूनिकोड मान नहीं हैं कि के लिए अपने तार की जाँच करनी चाहिए, इसके लिए अक्सर जब पाठ की नकल की और एमएस वर्ड की तरह एक आवेदन से चिपकाया जाता है की शुरुआत की जा सकती है। विशेष रूप से "स्मार्ट उद्धरण" अक्सर मुद्दों का कारण बनता है।

इसके अलावा निम्नलिखित धागे को देखें (हालांकि यह सी ++ में है) Discussion on ADOX Property Usage in C++

क्या आप गुणों के माध्यम से लूप करने और अपने वर्तमान मूल्य प्रदर्शित करने में सक्षम हैं?

संबंधित मुद्दे