VB创建ACCESS数据库和数据表

发布时间 2023-05-29 10:20:11作者: hardenzhao

建立数据库

 1 Public Sub BD_Create()
 2 
 3     On Error GoTo db_err
 4 
 5     Dim pstr As String
 6     
 7     Dim tb1 As New Table
 8     
 9     pstr = "PROVIDER=Microsoft.Jet.OLEDB.4.0;" '必须用4.0
10     
11     pstr = pstr & "Data Source=" & AppPath & "jtl.mdb;"
12     
13     Db.Create (pstr)
14     
15     Db.ActiveConnection = pstr
16     
17     tb1.Name = "平均力值" '设定表名
18     
19     tb1.ParentCatalog = Db
20     
21     tb1.Columns.Append "DevCode", adVarWChar    
22     
23     Exit Sub
24 
25 db_err:
26     MsgBox " 数据库创建失,系统中已有数据库!" & Err.Description, vbExclamation + vbOKOnly, " 创建失败..."
27     DB_Disconnect
28 End Sub

连接数据库

'===============================================
'连接数据库
Public Sub DB_Connect()

    On Error GoTo db_err

    Conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & AppPath & "jtl.mdb;"

    If Conn.State = adStateOpen Then State_Conn = True

    Exit Sub

db_err:
    MsgBox " 无法连接数据库:" & Err.Description, vbExclamation + vbOKOnly, " 连接失败..."
    DB_Disconnect
End Sub
'</Added by: Project Administrator at: 2023-5-25-下午 09:18:39 on machine: U5V07SRJVLTECTJ>

'===============================================
'关闭数据库
Public Sub DB_Disconnect()

    If Conn.State <> adStateClosed Then Conn.Close
    Set Conn = Nothing
    State_Conn = False
End Sub

'获得数据库连接状态
Public Property Get ConnState() As Boolean
    ConnState = State_Conn
End Property

Private Sub Class_Initialize()
    State_Conn = False
End Sub

 ACCESS数据表的更新

Public Sub UA_RecData()

    Dim sql As String
    Dim rs As New ADODB.Recordset
    sql = "select * from 平均力值 where FDateTime ='" & pdtDateTime & "'"
    rs.Open sql, Conn, adOpenKeyset, adLockReadOnly
    If rs.RecordCount Then
        Updata_RecData
    Else
        Add_RecData
    End If
    Debug.Print rs.RecordCount
    rs.Close’注意使用后关掉数据表
    
Add_Err:
End Sub

 

ACCESS库字段变量类型

自动编号用:adNumeric,备注用adLongVarWChar
以下是部分说明:
adBigInt 8 字节带符号的整数 (DBTYPE_I8).
adBinary 二进制值 (DBTYPE_BYTES).
adBoolean 布尔型值 (DBTYPE_BOOL).
adByRef 与其他类型一起加入逻辑 OR 以指示该数据是其他类型数
据的指针 (DBTYPE_BYREF).
adBSTR 以空结尾的字符串 (Unicode) (DBTYPE_BSTR).
adChar 字符串值 (DBTYPE_STR).
adCurrency 货币值 (DBTYPE_CY).货币数字的小数点位置固定、小数
点右侧有四位数字.该值保存为 8 字节范围为10,000 的带符
号整型值.
adDate 日期值 (DBTYPE_DATE).日期按双精度型数值来保存, 数
字全部表示从 18991230 开始的日期数.小数部分是
一天当中的片段时间.
adDBDate 日期值 (yyyymmdd) (DBTYPE_DBDATE).
adDBTime 时间值 (hhmmss) (DBTYPE_DBTIME).
adDBTimeStamp 时间戳 (yyyymmddhhmmss 加 10 亿分之一的小数)(DBTYPE_DBTIMESTAMP).
adDecimal 具有固定精度和范围的精确数字值 (DBTYPE_DECIMAL).
adDouble 双精度浮点值 (DBTYPE_R8).
adEmpty 未指定值 (DBTYPE_EMPTY).
adError 32 - 位错误代码 (DBTYPE_ERROR).
adGUID 全局唯一的标识符 (GUID) (DBTYPE_GUID).
adIDispatch OLE 对象上 Idispatch 接口的指针 (DBTYPE_IDISPATCH).
adInteger 4 字节的带符号整型 (DBTYPE_I4).
adIUnknown OLE 对象上 IUnknown 接口的指针 (DBTYPE_IUNKNOWN).
adLongVarBinary 长二进制值.
adLongVarChar 长字符串值.
adLongVarWChar 以空结尾的长字符串值.
adNumeric 具有固定精度和范围的精确数字值 (DBTYPE_NUMERIC).
adSingle 单精度浮点值 (DBTYPE_R4).
adSmallInt 2 字节带符号整型 (DBTYPE_I2).
adTinyInt 1 字节带符号整型 (DBTYPE_I1).
adUnsignedBigInt 8 字节不带符号整型 (DBTYPE_UI8).
adUnsignedInt 4 字节不带符号整型 (DBTYPE_UI4).
adUnsignedSmallInt 2 字节不带符号整型 (DBTYPE_UI2).
adUnsignedTinyInt 1 字节不带符号整型 (DBTYPE_UI1).
adUserDefined 用户定义的变量 (DBTYPE_UDT).
adVarBinary 二进制值.
adVarChar 字符串值.
adVariant 自动变体型 (DBTYPE_VARIANT).
adVector 与其他类型一起加入逻辑 OR 中, 指示数据是 DBVECTOR
结构(由 OLE DB 定义).该结构含有元素的计数和其他类型
(DBTYPE_VECTOR) 数据的指针.
adVarWChar 以空结尾的 Unicode 字符串.
adWChar 

ACCESS字段变量类型

1.文本型(Text):用于输入文本或文本与数字相结合的数据,最长为255个字符(字节),默认值是50。在Access中,每一个汉字和所有特殊字符(包括中文标点符号)都算作一个字符。

表示方法:用英文单引号(’ ’)或英方双引号(” ”)括起来。例:’王刚’、’会计2班’、’3246291’等。

2.货币型(Currency):用来存储货币值,占8个字节,在计算中禁止四舍五入。

3.数字型(Number):用于可以进行数值计算的数据,但货币除外。数字型字段按字段大小分字节、整型、长整型、单精度型、双精度型、同步复制ID和小数7种情形,分别占1、2、4、4、8、16和12个字节。

表示方法:直接书写即可。例:3246291

4.日期/时间型(Date/Time):用于存储日期和(或)时间值,占8个字节。

表示方法:用英文字符#号括起来。例:#2010-02-25#、#02/25/2010#、#2010-02-25 15:30#、#2010-02-25 3:30pm#、#15:30#都是合法的表示方法。不过要注意:日期和时间之间要留有一个空格。

5.自动编号型(AutoNumber):用于在添加记录时自动插入的序号(每次递增1或随机数),默认是长整型,也可以改为同步复制ID。自动编号不能更新。

6.是/否型(Yes/No):用于表示逻辑值(是/否,真/假),占1个字节。

表示方法: .T. .F. True false

7.备注型(Memo):用于长文本或长文本与数字(大于255个字符)的结合,最长为65535个字符。

8.OLE对象型(OLE Object):用于使用OLE协议在其它程序中创建的OLE对象(如Word文档、Excel电子表格、图片、声音等),最多存储1GB(受磁盘空间限制)。

9.超级链接型(Hyper Link):用于存放超级链接地址,最多存储64000个字符。

10.查阅向导型(Lockup Wizard):让用户通过组合框或列表框选择来自其它表或值列表的值,实际的字段类型和长度取决于数据的来源。

11、附件 ,新版本新增的数据类型,可以上传图片或文件。

 

'adkeyPrimary 1 是默认值,此键是主键
'adkeyForeign 2 此键是外键
'adKeyUnique 3 此键盘是唯一键

 

rst.Open "tblVoucher", conn, adOpenKeyset, adLockOptimistic什么意思

简单理解为打开表tblVoucher 

这个参数有四个值分别是: 
adOpenForwardOnly 表示只允许在记录集内的记录间往前移动。这个是缺省值。 
adOpenKeyset 反映由其它用户所做的对记录的改变或者删除动作,但并不反映由其它用户做作的添加新记录的动作。 
adOpenDynamic 反映由其它用户所做的对记录的改变或者删除动作,包括添加的新记录 
adOpenStatic 不反映其它用户对记录所做的修改,添加,删除动作。 
这四个值VBSCRIPT预定义位 
adOpenForwardOnly = 0 
adOpenKeyset = 1 
adOpenDynamic = 2 
adOpenStatic = 3 
lockType 表示当打开记录集时,数据提供者用于锁定数据库的类型: 
adLockReadOnly 数据不能改变,这是缺省值! 
adLockPessimistic 数据提供者在开始编辑数据的时候锁定记录 
adLockOptimistic 仅当调用update方法时,数据提供者锁定记录 
adLockBatchOptimistic 用于批处理修改 
他们的常量值定义分别是: 
adLockReadOnly = 1 
adLockPessimistic = 2 
adLockOptimistic = 3 
adLockBatchOptimistic = 4