ADO高手请帮忙!2天都没人能回答,在线等候!分不够再加!很急很急!

bluesanke 2003-02-21 09:08:47
Private Sub CmdQuery_Click()
'FindBH是要查找的编号
Dim FindBH As String
'Criteria是查询条件
Dim Criteria As String
'CurrentBookMark是当前记录指针
Dim CurrentBookMark As String
'出现输入框,将输入的内容送到FindBH变量中
FindBH = InputBox$("请输入要查找的土地登记申请书编号:", "查找")
'保存当前记录指针到CurrentBookMark变量中
CurrentBookMark = Adodc1.Recordset.Bookmark
'生成查找条件
Criteria = "编号=" & "'" & FindBH & "'"
'查找满足条件的第一个记录
Adodc1.Recordset.《1》FindFirst Criteria
'如果没有找到
If Adodc1.Recordset.《2》NoMatch Then
'恢复当前记录指针到CurrentBookMark
Adodc1.Recordset.Bookmark = CurrentBookMark
'弹出提示框
MsgBox "没有满足条件的记录!", 0, "查找结果"
End If
End Sub
以上程序用数据控减测试完全通过没有问题,但是要是用ado来实现需要改改〈1〉和〈2〉处,因为Adodc1.Recordset.不可以选findfirst和nomatch呀!怎么在这基础上修改呀!能详细说说吗!或者有什末其他的实现方法!就是说用什末方法可以实现
...全文
36 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
renguangdong 2003-02-21
  • 打赏
  • 举报
回复
up
ksmark 2003-02-21
  • 打赏
  • 举报
回复
那你不能不用Find啊,用用别人给你的方法。如果看不懂可以再问啊!!!
bluesanke 2003-02-21
  • 打赏
  • 举报
回复
可是好象没写错呀!运行到《》就说实现错误‘3265’项目在所需名称或序数中未发现!
Private Sub CmdQuery_Click()
'FindBH是要查找的编号
Dim FindBH As String
'Criteria是查询条件
Dim Criteria As String
'CurrentBookMark是当前记录指针
Dim CurrentBookMark As String
'出现输入框,将输入的内容送到FindBH变量中
FindBH = InputBox$("请输入要查找的土地登记申请书编号:", "查找")
'保存当前记录指针到CurrentBookMark变量中
CurrentBookMark = Adodc1.Recordset.Bookmark
'生成查找条件
Criteria = "编号=" & "'" & FindBH & "'"
'查找满足条件的第一个记录
<<Adodc1.Recordset.Find Criteria,0,adSearchBackward,CurrentBookMark>>
'如果没有找到
If Adodc1.Recordset.Eof Then
'恢复当前记录指针到CurrentBookMark
Adodc1.Recordset.Bookmark = CurrentBookMark
'弹出提示框
MsgBox "没有满足条件的记录!", 0, "查找结果"
End If
End Sub
angle1219 2003-02-21
  • 打赏
  • 举报
回复
大家都说过了啊,我没有新的观点了,ado 的 recordset 不好用 find ,最好是利用 sql 语句搞定
ksmark 2003-02-21
  • 打赏
  • 举报
回复
Dim rst as ADODB.Recordset
Set rst=New ADODB.Recordset
SQL="Select * from Table_Name where Colunm_Name='" & FindBH &"'
rst.Open SQL , cnn(ConnectString) ,3,3
if rst.eof then
没找到
else
找到了
把找到的记录写入你想要的地方去(例如:文本框...)
end if
你的问题是不是这个意思啊?

fling_boy 2003-02-21
  • 打赏
  • 举报
回复
检查一个Criteria里面的内容有没有错误,是不是字段名写错了,我试了只要写对是不会错的..
bluesanke 2003-02-21
  • 打赏
  • 举报
回复
问题是我不是要这一条记录,而是要通过查询编号这个主键,而是表里的相关数据同时显示出来
lxcc 2003-02-21
  • 打赏
  • 举报
回复
sql语句多好
bluesanke 2003-02-21
  • 打赏
  • 举报
回复
那为什么运行到
Adodc1.Recordset.Find Criteria,0,adSearchBackward,CurrentBookMark
或rst.find Criteria 时会说实现错误‘3265’项目在所需名称或序数中未发现!呢???就差这点了大家帮忙我马上结帐
jingxiaoping 2003-02-21
  • 打赏
  • 举报
回复
支持楼上几位的看法,还是使用搜索比较好。
ll_angel 2003-02-21
  • 打赏
  • 举报
回复
大家都说了,我还能说啥!

up ! 5555~~~~~~~
fling_boy 2003-02-21
  • 打赏
  • 举报
回复
1.Recordset没有findfirst 和nomatch两个方法,但也是可以使用查找的。
可以这样

if not( rst.eof and rst.bof ) then
rst.find Criteria
if not rst.eof then
'找到,并且指针已经移动到那条记录上.
else
'没有找到,指针移到最后一条记录后,rst.eof为真.
endif
end if
2.如果是为了查找指定条件的记录,而打开记录集,不如用litsnake1说的方法,如果是在已打开的记录集上查找,可以用上面说的方法。
chenyu5188 2003-02-21
  • 打赏
  • 举报
回复
ado控件好象没有findfirst方法,可以用find方法。

简单点的用SQL词句来搞定:
adodc1.recordsouce="select * from XX where " & Criteria
if rs.bof and rs.eof then
msgbox "没有记录!!!"
else
msgbox "有记录!!!"
end if

或者用find方法,find方法的使用说明如下:
Find 方法
搜索 Recordset 中满足指定标准的记录。如果满足标准,则记录集位置设置在找到的记录上,否则位置将设置在记录集的末尾。
语法
Find (criteria, SkipRows, searchDirection, start)
参数
criteria 字符串,包含指定用于搜索的列名、比较操作符和值的语句。
SkipRows 可选,长整型值,其默认值为零,它指定当前行或 start 书签的位移以开始搜索。
searchDirection 可选的 SearchDirectionEnum 值,指定搜索应从当前行还是下一个有效行开始。其值可为 adSearchForward 或 adSearchBackward。搜索是在记录集的开始还是末尾结束由 searchDirection 值决定。
start 可选,变体型书签,用作搜索的开始位置。
说明
criteria 中的“比较操作符”可以是“>”(大于)、“<”(小于)、“=”(等于)、“>=”(大于或等于)、“<=”(小于或等于)、“<>”(不等于)或“like”(模式匹配)。
criteria 中的值可以是字符串、浮点数或者日期。字符串值以单引号分界(如“state = 'WA'”)。日期值以“#”(数字记号)分界(如“start_date > #7/22/97#”)。
如“比较操作符”为“like”,则字符串“值”可以包含“*”(某字符可出现一次或多次)或者“_”(某字符只出现一次)。(如“state like M_*”与 Maine 和 Massachusetts 匹配。)。

Criteria = "编号=" & "'" & FindBH & "'"
'查找满足条件的第一个记录
Adodc1.Recordset.Find Criteria,0,adSearchBackward,CurrentBookMark
'如果没有找到
If Adodc1.Recordset.eof Then
Adodc1.Recordset.Bookmark = CurrentBookMark
'弹出提示框
MsgBox "没有满足条件的记录!", 0, "查找结果"
end if






litsnake1 2003-02-21
  • 打赏
  • 举报
回复
你是不是想用adodb类库来写啊
如果是的话,直接用一条sql语句就搞定拉。
rst.open "select * from XX where " & Criteria ,cnn,.....
if not rst.eof then
'找到了
else
'没找到
end if
不知道你是不是这个意思
ksmark 2003-02-21
  • 打赏
  • 举报
回复
用SQL可以的
To: Vicon(排骨面)
我很想知道为什么对内存资源的一种浪费呢?
那你觉得应该用什么呢??
bluesanke 2003-02-21
  • 打赏
  • 举报
回复
天意大哥给我你邮箱我把程序发过去你帮我看看怎么改呀
vicon 2003-02-21
  • 打赏
  • 举报
回复
事实证明,不用FIND方法是一个好的选择.但是这位仁兄一定要注意:
不要用以下语句
SELECT * FROM xx WHERE BH="xxxx"

尤其是不要使用"SELECT *",因为如果数据库表中有很多记录,则会造成对内存资源的浪费.
当然,这并不是对你上面所题问题的回答,而是对你程序的改进意见.
fling_boy 2003-02-21
  • 打赏
  • 举报
回复
最好这样
Adodc1.Recordset.movefirst
Adodc1.Recordset.Find Criteria
fling_boy 2003-02-21
  • 打赏
  • 举报
回复
Adodc1.Recordset.Find Criteria,0,adSearchBackward
bluesanke 2003-02-21
  • 打赏
  • 举报
回复
好的我试试,我的意思是说如果查询到编号,这个编号下的记录也和编号一样直接在窗体里面出现,用sql可以实现吗?

1,216

社区成员

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

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