用ADOX创建数据库的时候,创建的字段如何设定其为非空? 如题! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不能给更多的建议.参考一下,不过,我还是建议你用SQL语句建库.'*************************1.SQL建库Create Table [LX]( [自动编号] AutoIncrement Not null, [长整型] LONG null, [超级连接] Binary null, [单精度型] Single null, [货币] Currency null, [双精度型] Double null, [同步复制] GUID null, [小数] Numeric null, [字节] Bit null, [OLE对象] Image null)'************************************2.代码建库Option ExplicitPrivate CAT As ADOX.CatalogPublic Sub CreateMDB(ByVal Path As String)On Error GoTo ErrTrap Set CAT = New ADOX.Catalog If Right$(Path, 1) = "\" Then Path = Left$(Path, Len(Path) - 1)' ===[Create Database]=== CAT.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Path & "\db3.mdb;" & _ "Jet OLEDB:Database Password=;" & _ "Jet OLEDB:Engine Type=5;" CreateTables CreateIndexes CreateKeys Set CAT = Nothing Exit SubErrTrap: MsgBox Err.Number & " / " & Err.Description Exit Sub ResumeEnd SubPrivate Sub CreateTables()On Error GoTo ErrTrapDim TBL As ADOX.Table Set TBL = New ADOX.Table' ===[Create Table 'TABLENAME']=== Set TBL = New ADOX.Table TBL.Name = "TABLENAME" TBL.Columns.Append "OLE对象", adLongVarBinary, 0 TBL.Columns.Append "备注", adLongVarWChar, 0 TBL.Columns.Append "长整型", adInteger, 0 TBL.Columns.Append "超级连接", adLongVarWChar, 0 TBL.Columns.Append "单精度型", adSingle, 0 TBL.Columns.Append "货币", adCurrency, 0 TBL.Columns.Append "日期时间", adDate, 0 TBL.Columns.Append "是否", adBoolean, 2 TBL.Columns.Append "双精度型", adDouble, 0 TBL.Columns.Append "同步复制ID", adGUID, 0 TBL.Columns.Append "小数", adNumeric, 0 TBL.Columns.Append "字节", adUnsignedTinyInt, 0 TBL.Columns.Append "自动编号", adInteger, 0 TBL.Columns("自动编号").Properties("AutoIncrement") = True CAT.Tables.Append TBL Set TBL = Nothing Exit SubErrTrap: MsgBox Err.Number & " / " & Err.Description, , "Error In CreateTables" Exit Sub ResumeEnd SubPrivate Sub CreateIndexes()On Error GoTo ErrTrapDim IDX As ADOX.Index Set IDX = New ADOX.Index' ===[Create Index 'PrimaryKey']=== Set IDX = New ADOX.Index IDX.Name = "PrimaryKey" IDX.Columns.Append "自动编号" IDX.PrimaryKey = True IDX.Unique = True IDX.Clustered = False IDX.IndexNulls = adIndexNullsDisallow CAT.Tables("TABLENAME").Indexes.Append IDX' ===[Create Index '同步复制ID']=== Set IDX = New ADOX.Index IDX.Name = "同步复制ID" IDX.Columns.Append "同步复制ID" IDX.PrimaryKey = False IDX.Unique = False IDX.Clustered = False IDX.IndexNulls = adIndexNullsAllow CAT.Tables("TABLENAME").Indexes.Append IDX Set IDX = Nothing Exit SubErrTrap: MsgBox Err.Number & " / " & Err.Description, , "Error In CreateIndexes" Exit Sub ResumeEnd SubPrivate Sub CreateKeys()On Error GoTo ErrTrapDim KEY As ADOX.KEYDim TBL As ADOX.Table Set KEY = New ADOX.KEY Set TBL = New ADOX.Table Set KEY = Nothing Set TBL = Nothing Exit SubErrTrap: Select Case Err.Number Case -2147467259 ' Index already exists - Remove it... CAT.Tables(TBL.Name).Indexes.Delete KEY.Name Resume Case Else MsgBox Err.Number & " / " & Err.Description, , "Error In CreateKeys" Exit Sub Resume End SelectEnd Sub 不过你的代码好像不太正确:在 Set TBL = New ADOX.Table TBL.Name = "TABLENAME"之后应该加上: TBL.ParentCatalog = CAT否则会错误。而且,代码建库里的精度不对啊,不过还是谢谢你给了那么完整的代码。很值得参考。 如何在access中输入* VB执行这个存储过程,错在那里?查找了很多资料没有解决,请帮我啊 下拉框的默认值如何设置? RichTextBox控件中的内容如何追加到已存在的rtf文件中? VB取得文件后缀名的函数? 急!求sharpgrid (datadynamic 公司) 2.0版的注册码 这样的查询该怎么写????? ======= VB高手请进,关于远程获取网页内容 ========= 使用 ImageCombo 也不错,不过怎么用呢?(再发) 请问哪里有VB的SP4下载,要连接的! 哪们大哥会用VBSCRIPT啊 还是VB
不能给更多的建议.参考一下,不过,我还是建议你用SQL语句建库.'*************************
1.SQL建库Create Table [LX](
[自动编号] AutoIncrement Not null,
[长整型] LONG null,
[超级连接] Binary null,
[单精度型] Single null,
[货币] Currency null,
[双精度型] Double null,
[同步复制] GUID null,
[小数] Numeric null,
[字节] Bit null,
[OLE对象] Image null)'************************************2.代码建库Option ExplicitPrivate CAT As ADOX.CatalogPublic Sub CreateMDB(ByVal Path As String)
On Error GoTo ErrTrap Set CAT = New ADOX.Catalog If Right$(Path, 1) = "\" Then Path = Left$(Path, Len(Path) - 1)' ===[Create Database]===
CAT.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Path & "\db3.mdb;" & _
"Jet OLEDB:Database Password=;" & _
"Jet OLEDB:Engine Type=5;" CreateTables
CreateIndexes
CreateKeys Set CAT = Nothing Exit Sub
ErrTrap:
MsgBox Err.Number & " / " & Err.Description
Exit Sub
Resume
End SubPrivate Sub CreateTables()
On Error GoTo ErrTrap
Dim TBL As ADOX.Table
Set TBL = New ADOX.Table' ===[Create Table 'TABLENAME']=== Set TBL = New ADOX.Table
TBL.Name = "TABLENAME"
TBL.Columns.Append "OLE对象", adLongVarBinary, 0
TBL.Columns.Append "备注", adLongVarWChar, 0
TBL.Columns.Append "长整型", adInteger, 0
TBL.Columns.Append "超级连接", adLongVarWChar, 0
TBL.Columns.Append "单精度型", adSingle, 0
TBL.Columns.Append "货币", adCurrency, 0
TBL.Columns.Append "日期时间", adDate, 0
TBL.Columns.Append "是否", adBoolean, 2
TBL.Columns.Append "双精度型", adDouble, 0
TBL.Columns.Append "同步复制ID", adGUID, 0
TBL.Columns.Append "小数", adNumeric, 0
TBL.Columns.Append "字节", adUnsignedTinyInt, 0
TBL.Columns.Append "自动编号", adInteger, 0
TBL.Columns("自动编号").Properties("AutoIncrement") = True
CAT.Tables.Append TBL Set TBL = Nothing Exit Sub
ErrTrap:
MsgBox Err.Number & " / " & Err.Description, , "Error In CreateTables"
Exit Sub
Resume
End SubPrivate Sub CreateIndexes()
On Error GoTo ErrTrap
Dim IDX As ADOX.Index
Set IDX = New ADOX.Index' ===[Create Index 'PrimaryKey']===
Set IDX = New ADOX.Index
IDX.Name = "PrimaryKey"
IDX.Columns.Append "自动编号"
IDX.PrimaryKey = True
IDX.Unique = True
IDX.Clustered = False
IDX.IndexNulls = adIndexNullsDisallow
CAT.Tables("TABLENAME").Indexes.Append IDX' ===[Create Index '同步复制ID']===
Set IDX = New ADOX.Index
IDX.Name = "同步复制ID"
IDX.Columns.Append "同步复制ID"
IDX.PrimaryKey = False
IDX.Unique = False
IDX.Clustered = False
IDX.IndexNulls = adIndexNullsAllow
CAT.Tables("TABLENAME").Indexes.Append IDX Set IDX = Nothing Exit Sub
ErrTrap:
MsgBox Err.Number & " / " & Err.Description, , "Error In CreateIndexes"
Exit Sub
Resume
End SubPrivate Sub CreateKeys()
On Error GoTo ErrTrap
Dim KEY As ADOX.KEY
Dim TBL As ADOX.Table Set KEY = New ADOX.KEY
Set TBL = New ADOX.Table Set KEY = Nothing
Set TBL = Nothing Exit Sub
ErrTrap:
Select Case Err.Number
Case -2147467259 ' Index already exists - Remove it...
CAT.Tables(TBL.Name).Indexes.Delete KEY.Name
Resume
Case Else
MsgBox Err.Number & " / " & Err.Description, , "Error In CreateKeys"
Exit Sub
Resume
End Select
End Sub
TBL.Name = "TABLENAME"之后应该加上: TBL.ParentCatalog = CAT否则会错误。而且,代码建库里的精度不对啊,不过还是谢谢你给了那么完整的代码。很值得参考。