在ADO中,如何让DataGird刷新显示新的数据?

RedShoes 2003-08-20 04:32:03

之前我的程序中是用了ADODC这个控件连接数据库,后来发现功能上受限制,于是又改用了ADO,在窗体中有一个DataGird控件,我用
Set DataGird1.DataSource=rs
这条语句使DataGird能显示用ADO打开的数据库。

现在我用SQL语句对数据库进行查询,可是查询完后DataGird并不显示查询后的结果,而是原封不动地显示最初的结果,以前用ADODC控件时我可以用
ADODC.refresh
来刷新,使得DataGird可以显示新的数据,可是在ADO中如何让DataGird来显示新的数据呢?
问题幼稚,可是我真的不知道呀。
...全文
51 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jornet 2003-08-21
  • 打赏
  • 举报
回复
rs.Open sql, conn, adOpenKeyset, adLockPessimistic
这个语句中的adopenkeyset改成另一个adDy...什么我忘了,表示是动态刷新的,
adopenkeyset表示主键刷新,只有动态刷新才能实时反应数据库的情况
zhenglc 2003-08-21
  • 打赏
  • 举报
回复
在查询时,数据集已打开,处于adStateOpen状态,所以要先关闭Close,然后再打开
if rs.state = asstateopen then rs.close

用rs.filter = "姓名='" & txtname.text & "'"更方便,而且不用关闭后再打开rs
ybcaa 2003-08-20
  • 打赏
  • 举报
回复
或者在 rs.Open sql, conn, adOpenKeyset, adLockPessimistic 前加上:If rs.State = 1 Then rs.Close
ybcaa 2003-08-20
  • 打赏
  • 举报
回复
把 rs.Open sql, conn, adOpenKeyset, adLockPessimistic 改为:rs.Filter = "姓名=" & txtname.Text
RedShoes 2003-08-20
  • 打赏
  • 举报
回复

哦,还是不行,我仔细看了一下我的代码,发现是我自己的问题。
请大家帮我看看这一小段代码好吗?


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


Private Sub Form_Load()
Dim connstr As String
Dim sql 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()
Dim sql As String
If txtname.text="" then
Msgbox "请输入所要查询的名字。"
else
sql = "select 工号,姓名,性别,身份证号码,学历,籍贯,单位编号,职别编号,入厂日期 from rszd where 姓名='" & txtname.text & "'"
end if
rs.Open sql, conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rs


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

请教如何进行修改呢?
wssqsh 2003-08-20
  • 打赏
  • 举报
回复
重新写:
Adodc1.RecordSource = "select * from sajgxx where sortid='n01' order by code"
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
RedShoes 2003-08-20
  • 打赏
  • 举报
回复
OK , Let me try ......
strongfisher 2003-08-20
  • 打赏
  • 举报
回复
你先
set datagrid1.datasource=nothing

set datagrid1.datasource=rs

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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