用VB ADO结合access数据库完成数据库的添加操作:代码如下:1:定义的一个模块函数,此函数是从书中摘录的'数据库操作函数
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
'传递参数,SQL传递查询语句,Msgtring传递查询信息
'自身以一个数据集的形式返回
Dim cnn As ADODB.Connection
'定义连接
Dim rst As ADODB.Recordset'定义字符串
Dim sTokens() As String
'异常处理
On Error GoTo ExecuteSQL_Error'用Split函数产生一个包含各个子串的数组
sTokens = Split(SQL)
'创建连接
Set cnn = New ADODB.Connection
'打开连接
cnn.Open ConnectString
'判断字符串是否有指定内容
If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
'执行查询语句
cnn.Execute SQL
'返回查询信息
MsgString = sTokens(0) & "query successful"
Else
'创建数据集对象
Set rst = New ADODB.Recordset
'返回查询结果rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
'rst.MoveLast
'get RecordCount
'返回记录集对象
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & "条记录"
End IfExecuteSQL_Exit:
'清空数据集对象
Set rst = Nothing
'中断连接
Set cnn = NothingExit Function'错误类型判断
ExecuteSQL_Error:
MsgString = "查询错误:" & Err.Description
Resume ExecuteSQL_Exit
End Function'用ADO字符串方式连接数据库Public Function ConnectString() As String
'返回数据库连接
ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\db.mdb;Persist Security Info=False"
End Function2:这是调用上面的函数对数据添加数据库的内容;'确定 事件
Private Sub cmd1_Click()
Dim mrc As ADODB.Recordset
'定义字符串变量,表示查询语句
Dim txtSQL As String
'定义字符串变量,返回查询信息
Dim MsgText As StringSet mrc = ExecuteSQL(txtSQL, MsgText)
'添加记录
mrc.AddNew
'给每个字段赋值
mrc.Fields(0) = Trim(id.Text)'更新数据库
mrc.Update
MsgBox "添加学籍信息成功!", vbOKOnly + vbExclamation, "警告"'关闭数据集对象
mrc.CloseEnd Sub在mrc.addnew 中出现错误,提示”实时错误91,对象变量或with块变量未设置
请问各位,那里出了问题?
Public Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset
'传递参数,SQL传递查询语句,Msgtring传递查询信息
'自身以一个数据集的形式返回
Dim cnn As ADODB.Connection
'定义连接
Dim rst As ADODB.Recordset'定义字符串
Dim sTokens() As String
'异常处理
On Error GoTo ExecuteSQL_Error'用Split函数产生一个包含各个子串的数组
sTokens = Split(SQL)
'创建连接
Set cnn = New ADODB.Connection
'打开连接
cnn.Open ConnectString
'判断字符串是否有指定内容
If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
'执行查询语句
cnn.Execute SQL
'返回查询信息
MsgString = sTokens(0) & "query successful"
Else
'创建数据集对象
Set rst = New ADODB.Recordset
'返回查询结果rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic
'rst.MoveLast
'get RecordCount
'返回记录集对象
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & "条记录"
End IfExecuteSQL_Exit:
'清空数据集对象
Set rst = Nothing
'中断连接
Set cnn = NothingExit Function'错误类型判断
ExecuteSQL_Error:
MsgString = "查询错误:" & Err.Description
Resume ExecuteSQL_Exit
End Function'用ADO字符串方式连接数据库Public Function ConnectString() As String
'返回数据库连接
ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\db.mdb;Persist Security Info=False"
End Function2:这是调用上面的函数对数据添加数据库的内容;'确定 事件
Private Sub cmd1_Click()
Dim mrc As ADODB.Recordset
'定义字符串变量,表示查询语句
Dim txtSQL As String
'定义字符串变量,返回查询信息
Dim MsgText As StringSet mrc = ExecuteSQL(txtSQL, MsgText)
'添加记录
mrc.AddNew
'给每个字段赋值
mrc.Fields(0) = Trim(id.Text)'更新数据库
mrc.Update
MsgBox "添加学籍信息成功!", vbOKOnly + vbExclamation, "警告"'关闭数据集对象
mrc.CloseEnd Sub在mrc.addnew 中出现错误,提示”实时错误91,对象变量或with块变量未设置
请问各位,那里出了问题?
解决方案 »
- 该程序出错,请问是什么原因?
- 关于vb版本兼容性的问题
- 怎么计算当前时间跟过去某一时刻的差让他用00.00.00的格式显示,(在线等)
- 大于128的BYTE如何转换并导入一个VC++动态链接库函数
- 急!!!高手再帮忙,我已经用Set option(I).Container = Frame1 来实现了放到框架中去了可是现在的问题是,关闭出现错误具体请进来看!
- mscomm rs-232 串口通信 测试程序
- 为什么在Excel中显示combobox这个控件不能正常显示内容呢?
- 问一个简单问题
- 有没有数据库高手?如果请进,当你要自信!最高可给43分!!!
- ### 不封顶! 如何更新替换自己? ###
- 求阶乘的代码,,书上抄的,怎么又有错呀,
- 谁能提供一个对列表中的所有文件时行压缩的控件,最好有例子
改为
mrc.open txtSql+msgtext,cnn,adopendynamic,adlockoptimistic
试试(后面的ad..,ad..可能拼错了)
没有“Microsoft ActiveX Object 2.1 Library”,只有"Microsoft ActiveX Data Object 2.1 Library",试过但是不行。
To seeze:
你的方法我试过了,也不行;还是在mac.addnew中出现错误
'定义连接
Dim rst As New ADODB.Recordset
Dim cnn As New ADODB.Connection
将ExecuteSQL中的
Set cnn = New ADODB.Connection
'打开连接
cnn.Open ConnectString
改为
If cnn.state=adStateClosed then cnn.Open ConnectString
mrc.AddNew'给每个字段赋值之前没有给txtsql赋值啊?
Private Sub cmd1_Click()
Dim mrc As ADODB.Recordset
'定义字符串变量,表示查询语句
Dim txtSQL As String
'定义字符串变量,返回查询信息
Dim MsgText As String
txtsql="select * from student_info"'增加这一句,没有SQL语句怎么查询。呵呵……
Set mrc = ExecuteSQL(txtSQL, MsgText)
'添加记录
mrc.AddNew
'给每个字段赋值
mrc.Fields(0) = Trim(id.Text)'更新数据库
mrc.Update
MsgBox "添加学籍信息成功!", vbOKOnly + vbExclamation, "警告"'关闭数据集对象
mrc.CloseEnd Sub