ms Access数据库搜索无法按预期进行

问题描述

| 表名是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
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...