Ich muss ein Programm machen, das alle Unicode-Komprimierung und alle "Zulassen Null Länge" in einer Access-Datenbank (.mdb) deaktiviert.ADOX Mehrstufiger OLE DB-Vorgang generierte Fehler
Die Methode zum Deaktivieren von Nulllänge zulassen funktioniert sehr gut. Die Methode zum Deaktivieren der Unicode-Komprimierung funktioniert jedoch überhaupt nicht und gibt die folgende Ausnahme zurück:
Mehrstufiger OLE DB-Vorgang generierte Fehler. Überprüfen Sie jeden OLE DB-Statuswert, falls verfügbar. Keine Arbeit wurde getan.
Irgendwelche Anhaltspunkte, wie man das löst?
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");
}
}
Dieses Problem tritt auch beim Ausführen in Access auf. Ist die in Ihrem vorherigen Beitrag vorgeschlagene SQL nicht geeignet? – Fionnuala
Ich muss ADOX verwenden, um Null Länge zu entfernen, also warum nicht auch UNICODE-Komprimierung mit ADOX entfernen? Schade, es funktioniert nicht wie erwartet .. irgendwelche Ideen? – MadSeb
ADOX ist eine nicht-native Datenabstraktionsschicht und kann nicht unbedingt alle Eigenschaften einer bestimmten Datenbank-Engine bearbeiten. Jet/ACE ist insofern besonders schlimm, als seine native Datenschnittstellenschicht (DAO) während der MS ADO-everywhere-Kampagne im Zeitrahmen der Jet 4-Version verkrüppelt war. Das unglückliche Ergebnis ist, dass Sie für fast alles DAO verwenden können, aber für einige Dinge ist die einzige Unterstützung in ADO. Und, ja, es ist idiotisch und es ist wirklich scheiße. Ich weiß nicht, ob das Access-Team plant, dies in der ACE zu korrigieren, oder ob ein Teil bereits behoben wurde. –