2012-04-04 84 views
2

我希望用户能够从下拉列表中选择组合框列出数据库的一些字段,然后在下面输入搜索字词,然后输入所有符合查询的结果显示在dbgrid中。我不确定如何将ComboBox的当前值链接到sql语句中。我试过用这个如何搜索数据库中的特定字段

begin 
    with ADOQuery do begin 
     Close; 
     SQL.Clear; 
     SQL.Add ('SELECT * FROM List WHERE combobox1.text =' + QuotedStr (Asearchterm.Text)); 
     Open; 

而且它不起作用。我收到的错误是“参数combobox1.text没有默认值”。有任何想法吗?

+1

我想'combobox1.text'是组合框中的值,在这种情况下,它不需要是字符串的一部分。 – 2012-04-04 14:39:58

+0

我有点困惑,但你的意思是不是该SQL线的一部分?我试图设置combobox1到另一个变量,并把它放在那里,但它仍然没有工作 – captiv 2012-04-04 14:46:00

+0

*不起作用*不是一个很好的错误描述。决不。添加从数据库引擎获得的适当的错误消息。 – TLama 2012-04-04 14:47:53

回答

3

如果你想要使用combobox1文本值作为SQL语句的一部分,你会建立沿

'SELECT * FROM List WHERE [' + combobox1.text + '] = ''' + QuotedStr(Asearchterm.Text) + '''' 

行中的SQL字符串可能是你在找什么。我在QuotedStr周围添加了额外的引号,因为我猜测过滤器并不总是数值。这将适用于数字以及非数字值。

+0

是的,工作谢谢你! – captiv 2012-04-04 14:49:38

+1

太好了,请标记为答案,谢谢 – 2012-04-04 14:51:31

+1

不要通过追加用户输入的值来构建查询。使用参数化查询来防止SQL注入。 – mghie 2012-04-04 14:55:46

1

而不是'combobox1.text'你必须把你正在寻找的实际列名称。您可以使用LIKE关键字和一些通配符。是这样的:

SELECT * FROM 'table WHERE 'column' LIKE '%YOUR_SEARCH_TEXT%'; 

这是一个搜索...如果你想找到确切的字符串,那么你必须使用的,而不是LIKE

=操作

More info here

相关问题