VB连接ACCESS数据库可以通过控件,也可以通过引用来连接数据库。
如果是控件的话有Data、Adodc控件等。如果是引用的话在“工程”“引用”中Microsoft Active Data Objects 2.6 Library。
打开记录集:
语法格式:
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
参数说明:
1、Source 可选。Variant,计算有效的 Command 对象、SQL 语句、表名、存储过程调用、URL 或包含持久存储的 Recordset 的文件或 Stream 对象的名称。
2、ActiveConnection 可选。Variant 或 String,Variant 用于计算有效的 Connection 对象变量的名称;String 包含 ConnectionString 参数。
3、CursorType 可选。CursorTypeEnum 值,确定当打开 Recordset 时提供者应使用的游标类型。默认值为 adOpenForwardOnly。
4、LockType 可选。LockTypeEnum 值,确定打开 Recordset 时提供者应使用的锁定类型(并发)。默认值为 adLockReadOnly。
5、Options 可选。Long 值,指示如果 Source 参数表示的不是 Command 对象,提供者应如何计算该参数;或者指示应从先前保存 Recordset 的文件中恢复 Recordset。可以是一个或者多个 CommandTypeEnum 或 ExecuteOptionEnum 值。
其中:
1、CursorType参数的取值:
adOpenDynamic-使用动态游标。其他用户所作的添加、更改或删除均可见,而且允许 Recordset 中的所有移动类型(如果提供者不支持书签,则书签除外)。
adOpenForwardOnly-默认值。使用仅向前游标。除了在记录中只能向前滚动外,与静态游标相同。当只需要在 Recordset 中进行一个传递时,用它可提高性能。
adOpenKeyset-使用键集游标。尽管从您的 Recordset 不能访问其他用户删除的记录,但除无法查看其他用户添加的记录外,它和动态游标相似。其他用户所作的数据更改依然可见。
adOpenStatic-使用静态游标。一组记录的静态副本,可用于查找数据或生成报告。其他用户所作的添加、更改或删除不可见。
adOpenUnspecified-不指定游标类型。
2、LockType参数的取值:
adLockBatchOptimistic-指示开放式批更新。需要批更新模式。
adLockOptimistic-指示逐个记录开放式锁定。提供者使用开放式锁定,仅在调用 Update 方法时锁定记录。
adLockPessimistic-指示逐个记录保守式锁定。提供者要确保记录编辑成功,通常在编辑之后立即在数据源锁定记录。
adLockReadOnly-指示只读记录。无法改变数据。
adLockUnspecified-未指定锁定类型。创建副本时,副本与源对象使用相同的锁定类型。
vb里面的adOpenKeyset,adLockPessimistic 分别是什么意思
adLockReadOnly 常数值为1 vb缺省值:Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法
adLockPrssimistic 常数值为2 :当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。
adLockOptimistic 常数值为3 :当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。
adLockBatchOptimistic 常数值为4 :当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、 删、改的操作。
现在一般都是使用引用来连接数据库。
实例1:
Private Sub Command1_Click()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim A As String
Dim B As Date
Dim C As Date
A=Trim(Text1.Text)
B=cdata(Trim(Text2.Text))
C=cdata(Trim(Text3.Text)) ''''''''转换成日期格式
cn.ConnectionString="Provider=Microsoft.Jet.OLEDB 4.0;Data Source=C:\Program Files\VB98\db8.mdb;Persist Security Info=False"
cn.Open
rs.CurorLocation=adUseClient
rs.Open "select * from 爆炸物品出库记录(有骗号)where(领取人''''''''" & A & "'''''''') and (出库时间 between # " & B & " & C & " #)",cn,3,1
Set DataGrid1.DataSource=rs
End Sub
实例2:
内容:
做个登陆程序,用VB+ACCESS。
功能:
1、验证。验证用户名的正确与否、密码与用户名符合与否
2、人性化设计
①、输入用户名后,无论是鼠标移动到密码框,还是按"Tab"键到密码框,都搜索用户名的存在与否,但不报错
②、输入密码后,选者状态在“确定”按钮上。
③、确定后检验,用户名为空时,光标停在用户名框,密码空停密码输入框。
控件:
TextBox、CommandButton、PictureBox、Timer、ADO
程序内容:
1、控件
2 TextBox
2 CommandButton
1 PictureBox
1 Timer
程序:
''''''''form1程序
Prinvate Sub Command1_Click() ''''''''退出按钮
Unload Me
End Sub
Private Sub Command2_Click() ‘确定按钮
Dim ConStr As String
If text_user.Text="" Then
msgbox "请输入用户名!",vbOKOnly + VBExclamation,"登陆错误"
text_user.SetFocus
Exit Sub
End If
set cn =New ADODB.Connection
set rs =New ADODB.Recordset
ConStr="Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & APP.Path & "\ttj02.mdb"
cn.Open ConStr
cn.CursorLocation=adUseServer
rs.Open "Select * from dbuser",cn,adOpenKeyset,adLockPessimistic
If rs.RecordCount > 0 Then
If text_user.Text<>"" Then
set rs1=New ADODB.Recordset
Dim TextUserName
TextUserName=Left(text_user.Text,4)
rs1.Open "Select * From dbuser where User_nb='''''''' " & TextUserName &" '''''''' ",cn,adOpenKeyset,adLockPessimistic
If rs1.RecordCount > 0 Then
text_user.Text=Left(text_user.Text,4) & rs1.Fields("user_zhuwu")
Text_password.SetFocus
If Text_password <> "" Then
If rs1.Fields("User_Nb") = TextUserName And rs1.Fields("User_password") = Text_password.Text Then
Form3.Show
Unload Me
Else
MsgBox "密码错误!", vbExclamation + VBOKCancel, "登陆错误"
text_user.Text = ""
Text_password = ""
text_user.SetFocus
End If
Else
MsgBox "请输入密码!", vbExclamation + VBOKCancel, "登陆错误"
End If
Else
MsgBox "沒有用戶信息,請確定!", vbExclamation + VBOKCancel, "登陆错误"
text_user.Text = ""
Text_password = ""
text_user.SetFocus
Exit Sub
End If
rs.Close
End If
End If
End Sub
Private Sub Text_password_LostFocus()
If text_user.Text = "" Then
text_user.SetFocus
Else
If Text_password.Text <> "" Then
Command2.SetFocus
End If
End If
End Sub
Private Sub Text_password_Validate(Cancel As Boolean)
If text_user.Text = "" Then
text_user.SetFocus
Else
If Text_password.Text = "" Then
Text_password.SetFocus
Else
Command2.SetFocus
End If
End If
End Sub
Private Sub text_user_LostFocus()
If text_user.Text <> "" Then
Dim ConStr As String
Set cn = New ADODB.Connection
Set rs2 = New ADODB.Recordset
ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\ttj02.Mdb"
cn.Open ConStr
cn.CursorLocation = adUseServer
rs2.Open "Select * From dbuser Where User_nb= ''''''''" & TextUserName & "''''''''", cn, adOpenKeyset, adLockPessimistic
If rs2.RecordCount > 0 Then
text_user.Text = text_user & rs2.Fields("user_zhuwu")
Text_password.SetFocus
rs2.Close
Else
text_user.Text = text_user.Text
Text_password.SetFocus
Exit Sub
End If
Else
text_user.SetFocus
End If
End Sub
Private Sub text_user_Validate(Cancel As Boolean)
Dim ConStr As String
Set cn = New ADODB.Connection
ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & App.Path & "\ttj02.Mdb"
cn.Open ConStr
cn.CursorLocation = adUseServer
Dim TextUserName
TextUserName = Left(text_user.Text, 4)
If text_user.Text <> "" Then
Set rs3 = New ADODB.Recordset
rs3.Open "Select * From dbuser Where User_nb= ''''''''" & TextUserName & "''''''''", cn, adOpenKeyset, adLockPessimistic
If rs3.RecordCount > 0 Then
text_user.Text = Left(text_user.Text, 4) & rs3.Fields("user_zhuwu")
Text_password.SetFocus
rs3.Close
Else
text_user.Text = Left(text_user.Text, 4)
Text_password.SetFocus
Exit Sub
End If
End If
End Sub
''''''''form2程序
Private Sub Form_Load()
Me.Show
Me.Timer1.Interval = 3000
Me.Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Form1.Show
Unload Me
End Sub