Office中国论坛/Access中国论坛
标题: 问一个关于查找记录的菜问题 [打印本页]
作者: guom33 时间: 2006-3-9 23:17
标题: 问一个关于查找记录的菜问题
偶要查找一个记录,代码如下:
Dim string1 As String
Dim dbs As Database
Dim rst1, rst2, rst3 As dao.Recordset
Set dbs = OpenDatabase("D:\work\数据处理.mdb")
Set rst1 = dbs.OpenRecordset('oldfile', dbOpenDynaset)
string1 = "0001"
rst1.MoveFirst
rst1.FindFirst "客户号 like " & string1 '在oldfile表中查找一条记录,客户号=变量string1对应的字符,这句语句该怎么写??
If not rst1.nomatch Then
MsgBox (rst1.Fields(6)) '显示客户号对应的合同号
endif
问题是记录指针一直停留在表oldfile 的第一条记录,无法实现查找定位记录的目的.请各位DX指教! BTW, 有什么比较好的入门书籍推荐吗? 谢谢!
[此贴子已经被作者于2006-3-10 10:35:01编辑过]
作者: sgrshh29 时间: 2006-3-10 00:06
把这句
rst1.findnext
改为
rst1.findnext "客户号 like " & string2
试试看
作者: guom33 时间: 2006-3-10 00:16
在findfirst后的第一句 msgbox 指针就没有正确定位了(在表的第一条记录而不是符合条件的第一条记录),所以应该不关findnext的事...
作者: sgrshh29 时间: 2006-3-10 00:39
不是很清楚您的目的,如有可能,能不能描述的详细一些?您是不是想找出该客户的所有合同号?
这里 strings = "0001" ,会不会是string2 ?
rst1.MoveFirst
rst1.FindFirst "客户号 like " & string2(或者这里是不是strings ?)
[此贴子已经被作者于2006-3-9 16:42:12编辑过]
作者: guom33 时间: 2006-3-10 00:56
不好意思,改过来了,都是string1,刚才写错了
确实是想找出该客户的所有合同号.
作者: tcrct 时间: 2006-3-10 05:52
rst1.findnext ??
改为rst1.movenext
试试
作者: guom33 时间: 2006-3-10 16:18
在findfirst后的第一句 msgbox 指针就没有正确定位了(它定位在表的第一条记录而不是符合条件的第一条记录)
作者: skylark 时间: 2006-3-10 17:27
Using the Find Method
The following examples listings demonstrate how to locate a record using fFind and seek.
DAO
Sub DAOFindRecord()
Dim db As DAO.Database
Dim rst As DAO.Recordset
' Open the database
Set db = DBEngine.OpenDatabase("C:\nwind.mdb")
' Open the Recordset
Set rst = db.OpenRecordset("Customers", dbOpenDynaset)
' Find the first customer who's country is USA
rst.FindFirst "Country = 'USA'"
' Print the customer id's of all customers in the USA
While Not rst.NoMatch
Debug.Print rst.Fields("CustomerId").Value
rst.FindNext "Country = 'USA'"
Wend
' Close the recordset
rst.Close
End Su
作者: guom33 时间: 2006-3-10 18:02
当偶写:rst1.FindFirst "客户号 like " & string1 时,rst1.nomatch 是true,也就是说找不到对应记录(其实此记录是存在的)
当偶写:rst1.FindFirst "客户号 like " string1
rst1.FindFirst "客户号 = string1"
时都是报错,偶到底应该怎么写呢?
作者: skylark 时间: 2006-3-10 18:17
你的Do .....Loop语句没有,FindNext是不动的,最好上传你的示例文件,这样可能大家都方便.
作者: sgrshh29 时间: 2006-3-10 18:36
以下是引用guom33在2006-3-10 10:02:00的发言:
当偶写:rst1.FindFirst "客户号 like " & string1 时,rst1.nomatch 是true,也就是说找不到对应记录(其实此记录是存在的)
当偶写:rst1.FindFirst "客户号 like " string1
rst1.FindFirst "客户号 = string1"
时都是报错,偶到底应该怎么写呢?
rst1.FindFirst "客户号 like '" & string1 & "'"
Do While Not rst1.EOF
Debug.Print rs(6)
rst1.FindNext "客户号 like '" & string1 & "'"
If rst1.NoMatch Then Exit Do
Loop
作者: guom33 时间: 2006-3-10 18:40
偶改了下1楼的例子,现在偶们就只需要找到一条记录就好了,偶认为是findfirst写得不对,该怎么写呢? 如果写成
rst1.FindFirst "客户号 like = '0001'" 是可以查找成功的,但是想把string1的变量名写进去就错了...
作者: guom33 时间: 2006-3-10 18:57
非常谢谢sgrshh29, 按你的方法,程序通过了,
再次谢谢大家!
作者: zweidii 时间: 2006-3-11 03:52
nomatch是什么意思
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) |
Powered by Discuz! X3.3 |