2016-07-22 7 views
5

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.

In Access this property is true

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?

+0

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

+0

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. –

+0

@MicSim Adden ein Screenshot –

Antwort

2

Eigentlich finde ich keine Antwort, warum ich diese falschen Werte bekomme. Das Öffnen und Speichern jeder Tabelle ist für uns und unsere Kunden keine Lösung.

Ich habe gerade eine Problemumgehung gefunden, mithilfe von DAO, um die Eigenschaft richtig zu lesen.

Wenn jemand eine Antwort erhalten hat, warum ADO nicht den richtigen Wert zurückgibt, lass es mich wissen.

Verwandte Themen