表名是water,它有两个字段fname和serial。
在fname字段中假设一个值'bill'有3个序列1,2和3.现在我需要当我在textbox1中键入bill并单击搜索按钮时,combobox1应该显示'bill'的序列号为1, 2和3。
我正在使用ms访问作为数据库,我正在使用此代码,但它无法正常工作。
还有其他方法可以解决这个问题吗?
Set rs4 = cn.Execute("select fname, serial from water where fname = '" & Text1.Text & "'")
rs4.MoveFirst
Do While Not rs4.EOF
Combo1.AddItem rs4("serial")
rs4.MoveNext
Loop
答案 0 :(得分:2)
当有人在文本框中输入单引号时,您可能会遇到问题。你应该这样做:
Set rs4 = cn.Execute("select fname, serial from water where fname = '" & Replace(Text1.Text, "'", "''") & "'")
您可能遇到的另一个问题是,如果找不到匹配项。您没有检查记录集对象中是否有任何数据。
Combo1.Clear
Set rs4 = cn.Execute("select fname, serial from water where fname = '" & Replace(Text1.Text, "'", "''") & "'")
If not rs4.Eof Then
rs4.MoveFirst
Do While Not rs4.EOF
Combo1.AddItem rs4("serial")
rs4.MoveNext
Loop
End If
答案 1 :(得分:0)
我不确定问题是什么,但你的循环应该看起来像这样:
rs4.MoveFirst
Do While Not rs4.EOF
Combo1.AddItem rs4("holding")
rs4.MoveNext
Loop
答案 2 :(得分:0)
您是否考虑过更明确地告诉编译器您想要什么,更像是:
Set rs4 = cn.Execute("select fname, serial from water where fname = '" & Text1.Text & "'")
With rs4
Do Until .EOF
Combo1.AddItem CStr(!serial.Value)
.MoveNext
Loop
End With