一个有关ADO的简单代码,请大家帮我修改一下,谢谢!

RedShoes 2003-08-21 08:14:34

Option Explicit
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String

Private Sub form_Load()
Dim connstr As String
connstr = "provider=microsoft.jet.oledb.4.0;data source=D:\mis\data.mdb"
conn.Open connstr
rs.CursorLocation = adUseClient
sql = "select 工号,姓名,性别,身份证号码,学历,籍贯,单位编号,职别编号,入厂日期 from rszd"
rs.Open sql, conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rs


Private Sub cmdfind_Click()
If txtname.text="" then
Msgbox "请输入所要查询的名字。",16,"提示"
exit sub
else
sql = "select 工号,姓名,性别,身份证号码,学历,籍贯,单位编号,职别编号,入厂日期 from rszd where 姓名='" & txtname.text & "'"
end if
rs.Open sql, conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rs


当我运行后点击cmdfind按钮时,系统提示
----------------------
实时错误'3750':
对象打开时操作不被允许。
----------------------

应当是最后两行有问题,请教如何进行修改呢?
...全文
81 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhenglc 2003-08-21
  • 打赏
  • 举报
回复
with rs
if .state = adstateopen then .close
.open sql, conn, ....
end with

如上做查询试试用rs.filter
lisong770818 2003-08-21
  • 打赏
  • 举报
回复
在每次打开记录集时,加一句 if rs.state then rs.close
射天狼 2003-08-21
  • 打赏
  • 举报
回复
Option Explicit
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String

Private Sub form_Load()
Dim connstr As String
connstr = "provider=microsoft.jet.oledb.4.0;data source=D:\mis\data.mdb"
conn.Open connstr
rs.CursorLocation = adUseClient
sql = "select 工号,姓名,性别,身份证号码,学历,籍贯,单位编号,职别编号,入厂日期 from rszd"
rs.Open sql, conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rs


Private Sub cmdfind_Click()
If txtname.text="" then
Msgbox "请输入所要查询的名字。",16,"提示"
exit sub
else
sql = "select 工号,姓名,性别,身份证号码,学历,籍贯,单位编号,职别编号,入厂日期 from rszd where 姓名='" & txtname.text & "'"
end if
rs.Close
rs.Open sql, conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rs
道素 2003-08-21
  • 打赏
  • 举报
回复
不要set rs=nothing 要close
可以这样
Private Sub cmdfind_Click()
If txtname.text="" then
Msgbox "请输入所要查询的名字。",16,"提示"
exit sub
else
sql = "select 工号,姓名,性别,身份证号码,学历,籍贯,单位编号,职别编号,入厂日期 from rszd where 姓名='" & txtname.text & "'"
end if
‘-------------增加一句
if rs.state<>0 then rs.close
’-----------------
rs.Open sql, conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rs
dreamreality 2003-08-21
  • 打赏
  • 举报
回复
Private Sub cmdfind_Click()
If txtname.text="" then
Msgbox "请输入所要查询的名字。",16,"提示"
exit sub
else
sql = "select 工号,姓名,性别,身份证号码,学历,籍贯,单位编号,职别编号,入厂日期 from rszd where 姓名='" & txtname.text & "'"
end if
'改动过的地方
set rs=new ADODB.recordset
'改动过的地方
rs.Open sql, conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rs
lisong770818 2003-08-21
  • 打赏
  • 举报
回复
同上。
stonegoldaustin 2003-08-21
  • 打赏
  • 举报
回复
LockType
  Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:

常数 常数值 说明
adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法

adLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。

adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。

adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、
   删、改的操作。

因为你在Form_Load里已经OPEN了一次(但没有关闭,且用的参数会锁住其他用户的操作),所以,你第二次OPEN的时候就出错了.

请将adLockPessimistic参数改为adLockOptimistic,并且养成好的习惯,及时关闭(释放)无用的资源.
x8bits 2003-08-21
  • 打赏
  • 举报
回复
你在Form_Load已经打开过rs,在cmdfind_Click中没关闭又再打开rs.你应该在再次打开之前调用rs.Close一次
饮水需思源 2003-08-21
  • 打赏
  • 举报
回复
在每个rs.open .....这句之前加一句:if rs.state=adstateopen then rs.close
LCAAA 2003-08-21
  • 打赏
  • 举报
回复
Private Sub cmdfind_Click()
If txtname.text="" then
Msgbox "请输入所要查询的名字。",16,"提示"
exit sub
else
set rs=nothing
sql = "select 工号,姓名,性别,身份证号码,学历,籍贯,单位编号,职别编号,入厂日期 from rszd where 姓名='" & txtname.text & "'"
end if
rs.Open sql, conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rs
RedShoes 2003-08-21
  • 打赏
  • 举报
回复

想不到竟然有这么多好心的朋友帮我解决了这个问题,我感动的真不知道说些什么。

我是一个初学者,对于VB有很多的地方都是一知半解,在这种情况下很需要大家的指点,有些问题我在书上翻半天也找不到答案,在这儿经过大家的稍稍点拨就有一种豁然开朗的感觉。

因为我技术差,所以我也回答不了别人的问题,我也赚不到可用分,现在我的可用分是越来越少了,所以这个问题只能给30分,真是不对不起大家了,我只能说句谢谢你们!

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧