Ich verwende VB6 mit ADOX, um die Eigenschaften von Access 97-Tabellenspalten zu überprüfen. Für die Textfelder ist es wichtig zu beweisen, dass das Feld Nulllänge erlaubt oder nicht.VB6 MS-Access gibt falschen "AllowZeroLength" -Wert zurück
Das Problem: Der zurückgegebene Wert ist invertiert. Wenn das Feld Nulllänge zulässt, ist die Rückgabe falsch, wenn das Feld nicht den Wert wahr aufweist.
Wenn ein Feld diese Eigenschaft nicht unterstützt, gibt es false zurück, was richtig ist.
Könnte jemand erklären, warum die Rückkehr invertiert ist?
Private Sub ReadTableStructure()
Dim Cat As ADOX.Catalog
Dim Tbl As ADOX.Table
Dim Col As ADOX.Column
Set Cat = New ADOX.Catalog
Set Cat.ActiveConnection = Conn
For Each Tbl In Cat.Tables
For Each Col In Tbl.Columns
bAllowZeroLength = GetDBPropertyBool(Col.Properties, "Jet OLEDB:Allow Zero Length", True)
Next Col
Next Tbl
End Sub
Die Funktion GetDBPropertyBool:
Private Function GetDBPropertyBool(Properties As ADOX.Properties, sName As String, bDefaultValue As Boolean) As Boolean
Dim Prop As ADOX.Property
Set Prop = Properties(sName)
If Prop Is Nothing Then
GetDBPropertyBool = bDefaultValue
Else
GetDBPropertyBool = Prop.Value
End If
End Function
In Access diese Eigenschaft true ist, in dem VB6 Objekt es ist falsch.
EDIT: ich gerade herausgefunden, dass, wenn ich die Tabelle in Access im Bearbeitungsmodus zu öffnen und einfach zu speichern, die Werte, die in VB6 recht gegeben. Ich ändere nichts, öffne nur zum Bearbeiten und Speichern. Hat schon jemand dieses Problem gehabt?
Dieser Code sieht gut aus für mich. Vielleicht sollten Sie den tatsächlichen Code zeigen, den Sie verwenden. Ich nehme an, Sie haben da einen Fehler. – MicSim
Dies ist der eigentliche Code und der Code funktioniert gut. Es gibt den Wert zurück, der in der Eigenschaft enthalten ist. Aber der Wert in der Eigenschaft ist falsch. –
@MicSim Adden ein Screenshot –