Ошибки, генерируемые многоступенчатой операцией OLE DB ADOX

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

метод для поворачивать позволяет Zero длине работает очень хорошо. Однако метод отключения сжатия 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 ответов


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

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

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