В результате многоэтапной операции OLE DB в ADOX возникли ошибки - PullRequest
6 голосов
/ 26 июля 2010

Я должен сделать программу, которая отключает все сжатия Unicode и все «разрешить нулевую длину» в базе данных доступа (.mdb).

Метод отключения Allow Zero Length работает очень хорошо.Однако метод отключения сжатия Unicode вообще не работает и возвращает следующее исключение:

Многоэтапная операция OLE DB вызвала ошибки.Проверьте каждое значение состояния OLE DB, если оно доступно.Никакой работы не было сделано.

Есть подсказки, как решить эту проблему?

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");
    }                      
}

1 Ответ

0 голосов
/ 12 августа 2011

Вам следует проверить строки на наличие символов, которые не имеют соответствующих значений UNICODE, их часто можно вводить, когда текст копируется и вставляется из приложения, такого как MS Word. В частности, «умные цитаты» часто вызывают проблемы.

Также взгляните на следующую ветку (хотя она написана на C ++) Обсуждение использования свойств ADOX в C ++ .

Можете ли вы просмотреть свойства и отобразить их текущие значения?

...