CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  数据库(包含打印,安装,报表)

用ADOX创建数据库的时候,创建的字段如何设定其为非空?

楼主roger_xiong(卖女孩的小火柴~)2004-04-03 23:06:08 在 VB / 数据库(包含打印,安装,报表) 提问

如题! 问题点数:20、回复次数:3Top

1 楼MSTOP(陈建华)回复于 2004-04-03 23:11:14 得分 20

 
        不能给更多的建议.参考一下,不过,我还是建议你用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   Explicit  
   
  Private   CAT   As   ADOX.Catalog  
   
  Public   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   Sub  
   
  Private   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   Sub  
   
  Private   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   Sub  
   
  Private   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   SubTop

2 楼roger_xiong(卖女孩的小火柴~)回复于 2004-04-04 08:03:31 得分 0

非常谢谢,感谢你的建议,我想我会接受的。:)Top

3 楼roger_xiong(卖女孩的小火柴~)回复于 2004-04-04 08:18:55 得分 0

不过你的代码好像不太正确:  
   
  在       Set   TBL   =   New   ADOX.Table  
            TBL.Name   =   "TABLENAME"  
   
  之后应该加上:  
   
            TBL.ParentCatalog   =   CAT  
   
  否则会错误。  
   
  而且,代码建库里的精度不对啊,不过还是谢谢你给了那么完整的代码。很值得参考。  
  Top

相关问题

  • 数据库表创建问题(字段关联)
  • 创建数据库时,如何设置字段格式???
  • 关于如何使用ADOX动态创建ACCESS数据库,并设置字段属性,如可零长度字符串,可变长度,固定长度属性
  • 如何在ado里面动态创建数据库和表、字段?
  • 创建Jet数据库时对字段约束时遇到的问题!求救!
  • 求救:请问怎样用ADO代码创建ACCESS数据库及其字段?
  • 急~~如何根据数据库里的path字段批量创建文件夹
  • 怎样用vb动态创建linkbutton(根据数据库中的字段)
  • 怎样动态的给一个空的数据库创建表和字段
  • 用 ADOX 对象创建 MDB 数据库,如何设定数据库密码?

关键词

  • 代码
  • null
  • adox
  • cat
  • 建库
  • tbl
  • jet
  • oledb
  • path
  • create

得分解答快速导航

  • 帖主:roger_xiong
  • MSTOP

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo