首先是一个combobox,选项是表1的内容
下边是一个edit,要求combobox选择表1中的一个选项后,edit中显示相应的信息,这些信息是通过查询表2得到的这个edit的代码应该怎么写?我是菜鸟,求问,谢谢了 

解决方案 »

  1.   


    q.close;
    q.sql.text := 'select * from 表2 where 字段='+QuotedStr(combobox.text);
    q.open;
    edit.text := q.fieldbyname('字段').asstring;
      

  2.   

        adoquery1.Close;
        adoquery1.sql.clear;
        adoquery1.SQL.add('select * from 表1');
        adoquery1.Open;
      while not adoquery1.eof do
       begin
         combobox1.Items.add(adoquery1.FieldValues['列名']);
         adoquery1.Next;
       end;
        adoquery1.Close;
        adoquery1.sql.clear;
        adoquery1.SQL.add('select * from 表2 where 列名='''+combobox1.text+'''');
        adoquery1.Open;
        edit1.text:=adoquery1.fieldbyname('列名').asstring;
      

  3.   

    不好意思啊,刚才写错了,麻烦再看一下谢谢了combobox中选定kb_id
    通过kb_id查询表1得到与kb_id对应的p_pro_id
    再通过p_pro_id查询表2得到与p_pro_id对应的所有的p_pro_pname(注:一个p_pro_id对应多个p_pro_pname)
    然后再在edit中显示所有的p_pro_pname
      

  4.   

    循环你得到的结果,累加到edit中,另外p_pro_id 可以直接存在combox的item中,添加时用AddObject
    ComboBox1.Items.AddObject('kb_id的值',TObject(p_pro_id的值))
    读取时 Integer(ComboBox1.Items.Objects[索引]);
      

  5.   

    with adoquery1 do
    begin
      close;
      sql.text := 'select * from 表1';
      Open;
      combobox1.clear;
      while not eof do
      begin
        combobox1.items.add(filedbyname('').asstring);
        Next;
      end;
    end;combobox1的onchange事件写procedure TForm1.ComboBox1Change(Sender: TObject);
    begin
      with adoquery1 do
      begin
        close;
        sql.text := 'select * from 表2 where 条件=:a';
        parameters.parambyname('a').value := combobox1.text;
        Open;
        if not eof then
        edit1.text := fieldByname('').asstring;
      end;
    end;