问题描述
|
表名是water,它有两个字段fname和serial。
在字段fname中,假设值'bill \'具有3个序列1、2和3。现在我需要在textBox1中键入bill并单击搜索按钮时,comboBox1应该显示\'bill \'的序列为1 ,2和3。
我正在使用ms access作为数据库,并且正在使用此代码,但是它不起作用。
还有其他解决方法吗?
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
解决方法
当有人在文本框中输入单引号时,您可能会遇到问题。您应该执行以下操作:
Set rs4 = cn.Execute(\"select fname,serial from water where fname = \'\" & Replace(Text1.Text,\"\'\",\"\'\'\") & \"\'\")
您可能遇到的另一个问题是,如果找不到匹配项。您不会检查记录集对象中是否有任何数据。
Combo1.Clear
Set rs4 = cn.Execute(\"select fname,\"\'\'\") & \"\'\")
If not rs4.Eof Then
rs4.MoveFirst
Do While Not rs4.EOF
Combo1.AddItem rs4(\"serial\")
rs4.MoveNext
Loop
End If
,我不太清楚问题出在哪里,但是您的循环看起来应该像这样:
rs4.MoveFirst
Do While Not rs4.EOF
Combo1.AddItem rs4(\"holding\")
rs4.MoveNext
Loop
,您是否考虑过更明确地告诉编译器您想要什么,例如:
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