【问题标题】:VB6 MS-Access returns wrong 'AllowZeroLength' valueVB6 MS-Access 返回错误的“AllowZeroLength”值
【发布时间】:2016-07-22 08:41:47
【问题描述】:

我正在使用带有 ADOX 的 VB6 来检查 Access 97 表列的属性。 对于文本字段,重要的是要证明该字段是否允许零长度。

问题:返回的值是倒置的。 如果字段允许零长度,则返回 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

在 Access 中此属性为 true,在 VB6 Object 中为 false。

编辑: 我刚刚发现,当我以编辑模式在 Access 中打开表格并保存时,VB6 中给出的值是正确的。我没有改变任何东西,只是打开编辑和保存。有没有人已经有这个问题?

【问题讨论】:

  • 这段代码对我来说很好。也许您应该显示您正在使用的实际代码。我猜你那里有一些缺陷。
  • 这是实际代码,代码运行良好。它返回属性中的值。但是属性中的值是错误的。
  • @MicSim 添加截图
  • 您说“如果字段不支持此属性,则返回 false”,但您将 True 传递给 DefaultValue 参数 - 这就是当“AllowZeroLength”属性不可用时使用的内容定义
  • @dbmitch 谢谢你的回答。我的问题不在于未定义的字段。我知道,例如,布尔字段没有允许零长度属性。我所有的文本字段都设置了这个属性,ADO 返回反转的值。只有当我手动保存表格时,才会返回正确的值。

标签: database ms-access vb6 ado


【解决方案1】:

实际上我没有找到答案,为什么我会得到这些错误的值。 打开并保存每张桌子对我们和我们的客户来说都不是解决方案。

我刚刚找到了一种解决方法,即使用 DAO 正确读取属性。

Private Sub ReadTableStructure(DB As DAO.Database)
    Dim i As Integer, j As Integer
    Dim Fld As DAO.Field
    Dim tdfLoop As TableDef

    For i = 0 To DB.TableDefs.Count - 1
        Set tdfLoop = DB(i)   
        For j = 0 To tdfLoop.Fields.Count - 1
            bAllowZeroLength = tdfLoop.Fields(j).AllowZeroLength
        Next j
    Next i
End Sub

如果有人得到答案,为什么 ADO 没有返回正确的值,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多