3
如何在除PersonalID列之外的表中更改所有列值(Nullable = True和Allow Zero Length = True)?当脚本执行时,我得到错误 “-2147217887 - 多步OLE DB操作产生错误。检查每个OLE DB状态值(如果可用),没有工作完成。” 这是只有一个表的代码。我需要创建更多的表,所以设置每列的Nullable属性是不实际的。请帮助!更改列的属性值
Public Sub DBcreation()
Dim tbl As New Table
Dim cat As New ADOX.Catalog
Dim col As ADOX.Column
Dim prp As ADOX.Property
Dim oCn As ADODB.Connection
Dim sConStr As String
'Set Connection string
sConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\mydbase.mdb" & ";" & _
"Jet OLEDB:Engine Type=4;"
' 1) Create the DataBase
cat.Create sConStr
' 2) Create Table name "PDetails"
tbl.Name = "PDetails"
' 3) Add Fields
With tbl.Columns
.Append "PersonalID", adInteger 'Number
.Append "GHName", adVarWChar, 50 'Text
.Append "FirstName", adVarWChar, 50 'Text
.Append "FHName", adVarWChar, 50 'Text
.Append "Surname", adVarWChar, 50 'Text
.Append "BirthDate", adDate
.Append "Gender", adVarWChar, 10 'Text
.Append "Address", adLongVarWChar 'Memo
.Append "Pincode", adInteger 'Number
.Append "MobileNo", adInteger 'Number
.Append "HomeNo", adInteger 'Number
.Append "MaritalStatus", adVarWChar, 10 'Text
.Append "Profession", adVarWChar, 50 'Text
.Append "BloodGroup", adVarWChar, 10 'Text
.Append "Photo", adVarWChar, 50 'Text
' 4) 'Set the field properties.
With !PersonaltID 'AutoNumber.
.ParentCatalog = cat
.Properties("Autoincrement") = True
.Properties("Description") = "Automatically " & _
"generated unique identifier for this record."
End With
With !BirthDate
Set .ParentCatalog = cat
.Properties("Jet OLEDB:Column Validation Rule") = _
"Is Null Or <=Date()"
.Properties("Jet OLEDB:Column Validation Text") = _
"Birth date cannot be future."
End With
End With
' 5) Save the Table to the DataBase
cat.Tables.Append tbl
' 6) Set Column Properties
For Each col In tbl.Columns
For Each prp In col.Properties
If col.Name <> "PersonalID" Then
If prp.Name = "Nullable" Then
prp.Value = True 'error generated
'-2147217887 - Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.
End If
End If
Next
Next
'Clean up
Set tbl = Nothing
Set cat = Nothing
set prp = Nothing
End Sub
只是一个小小的错字“With!PersonaltID'自动编号。'应该是'With!PersonalID'AutoNumber。' – jakdep 2011-01-13 14:38:41