我要作一個利用combobox1的items中的選項作為字段名來作為查詢的字段名.
如:
select * from *.db where combobox1.text=edit1.text
我知道這樣是錯誤,我想問一下到底要怎樣來實現combobox1的選項
produce form1.create (sender:tobject);
ComboBox1.Clear;
  for i:=0 to ADOQuery1.FieldCount-2 do
    ComboBox1.Items.Add(ADOQuery1.Fields[i].FieldName);
    ComboBox1.ItemIndex:=0;
produce form1.button1click (sender:tobject);
var
fstr:string;
begin
case ComboBox1.ItemIndex of
    0,4:fstr:='select * from *.db where(%s%s%s) order by %s';
    showmessage(fstr);
   為什么我就不能顯示我所要查詢的值.而且我一改變combobox1的值就不能查詢選擇的字段名?
  

解决方案 »

  1.   

    改写成这样:
    produce form1.button1click (sender:tobject);
    var
    fstr:string;
    begin
    case ComboBox1.ItemIndex of
        0,4:fstr:='select * from *.db where '+combobox1.text+'='+''''+edit1.text+'''';
        showmessage(fstr);
    end;
    end;
      

  2.   

    不行!
    如果我選擇的是combobox1.itemindex=2時或者是其它索引值時就不能用了.
    上面你提到的我早就想到了
    不過還是謝謝你的回答.
      

  3.   

    如果是这样,那么肯定是你的其余字段的数据类型不是数值型,如果是字符型
    的数据是要加上引号的:
    假如有表namecard(name,sex,age)//其中前两个字段是字符型,age是数值型
    insert into namecard values('张三丰','男',105);
    你再改改你的程序吧
      

  4.   

    select * from *.db where combobox1.item(combobox1.itemindex).text=edit1.text我觉得使用combox1.text不是你所选择的项的内容,而始终是写在combobox的text属性的内容。试试看
      

  5.   

    我的意思就是你没有把你选择的项的内容取出来。希望你能明白。
    combobox1.item(combox1.itemindex).string?
    combobox1.item(combox1.itemindex).text?还是别的?
      

  6.   

    這樣子是不行的.
    這樣會把combobox1.itemindex所有的值都取出來.
    你可以用你這種方法去試試看.
    我也知道必須取combobox1.text.但是要怎樣才能取到除了itemsindex:0外的值.
      

  7.   

    procedure TForm1.FormShow(Sender: TObject);
    var
    i:integer;
    begin
    ComboBox1.Clear;
      for i:=0 to ADOQuery1.FieldCount-2 do
        ComboBox1.Items.Add(ADOQuery1.Fields[i].FieldName);
        ComboBox1.ItemIndex:=0; 
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
    result:string;
    begin
    case ComboBox1.ItemIndex of
       0,4:result:='select * from *.db where (%s%s''%s'')';end;
     showmessage(result);
    end;end.
    這是我測試用的你可以看看并幫我改一下.
      

  8.   

    我认为我的方法可以。我没有delphi没有办法测试,但是我知道
    combobox.item[combobox.itemindex]就是指你当前选中的项。至于怎么渠道其中的字符串我忘记了,好长时间没有用delphi了。
    "這樣會把combobox1.itemindex所有的值都取出來"是什么意思呢?把
    case ComboBox1.ItemIndex of
       0,4:result:='select * from *.db where (%s%s''%s'')';改成result : = 'select * from *.db where '+combobox.item[combobox.itmeindex].string + '= %s'我觉得应该没有问题。
      

  9.   

    "這樣會把combobox1.itemindex所有的值都取出來"是什么意思呢?
    就是把加到combobox的items全部取出來
    你說的我都有試過還是不行.
    我知道我没有把选择项的内容取出来.
    我要的也是把選擇項內容取出來.
    sigh!
      

  10.   

    请你做一个简单的程序,上面有一个button,一个combobox,再button德click事件中写一下代码
    begin
    showmessage(combobox.items[combobox.itemindex].String);
    end;
    告诉我showmessage中的内容。
      

  11.   

    procedure TForm1.Button3Click(Sender: TObject);
    begin
    showmessage(combobox1.items(combobox1.itemindex).Text);
    end;
    這樣還是會出錯的而且你的[]更是錯誤的.
    missing operator or semicolon 的錯誤提示.