2011-05-26 69 views
-1

表名是水,它有两个字段fname和序列号。ms访问数据库搜索不按预期工作

在字段fname中假设一个值'bill'有3个序列1,2和3.现在我需要当我在文本框1中键入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

请解释什么错误! – Dabblernl 2011-05-26 07:46:13

+0

它不工作的方式?你是否收到任何错误讯息? – mdm 2011-05-26 11:14:32

+0

重新提出相同的问题在这里是不可接受的行为。如果你想引起人们对你的问题的关注,那么两天后你将被允许[放置赏金](http://stackoverflow.com/faq#bounty)。您也可以[编辑您的问题](http://stackoverflow.com/posts/6136258/edit)添加其他信息,这可能会使您的问题更易于理解和回答。 – Will 2011-05-26 12:53:46

回答

0

我真的不知道是什么问题,但你的循环应该看起来更像是这样的:

rs4.MoveFirst 
Do While Not rs4.EOF 
    Combo1.AddItem rs4("holding") 
    rs4.MoveNext 
Loop 
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 
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