5
我使用VB6和ADOX來檢查Access 97表列的屬性。 對於文本字段,證明該字段允許零長度是非常重要的。VB6 MS-Access返回錯誤'AllowZeroLength'值
問題:返回值被反轉。 如果該字段允許長度爲零,則返回值爲false,如果該字段的值不爲true。
如果某個字段不支持該屬性,則返回false,這是正確的。
有人可以解釋爲什麼返回倒置?
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
的功能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
在訪問此屬性爲true,在VB6的對象是錯誤的。
編輯: 我剛剛發現,當我打開表的訪問在編輯模式下,只是節省,這是在VB6給出的值是正確的。我沒有改變任何東西,只是打開編輯和保存。有沒有人有這個問題?
這段代碼對我來說看起來很好。也許你應該顯示你正在使用的實際代碼。我想你在那裏有一些缺陷。 – MicSim
這是實際的代碼和代碼工作正常。它返回屬性中的值。但財產的價值是錯誤的。 –
@MicSim Adden a screenshot –