我有一个dbcombobox,里面是员工号,我想让其他的三个dbedit(分别是姓名、部门、职务)显示dbcombobox里选择的员工号的员工的信息,我在datamodule里做了一个t_empinfo,一个q_emp1(sql语句是:select 姓名,部门,职务 from 员工信息 where 员工号=:EmpID),然后把dbcombobox连上t_empinfo,把三个dbedit连上q_emp1 ,然后在dbcombo1的onclick应如何写代码?

解决方案 »

  1.   

    在dbcombo1的OnChange事件中写如下代码:
    q_emp1.active:=false;
    q_emp1.parambyname('empid').asstring:=dbcombo1.text;
    q_emp1.active:=true;
      

  2.   

    只要DBEDIT和数据库字段邦定,使用TABLE.LOCATE定位到DBCOMBOBOX里的员工号就可以了
      

  3.   

    兩種都可以用,只要你覺得哪一種比較方便.
    不過我還是比較贊同第一種方法.
    第一種方法速度比較快.還有數據大時就顯示出優勢來.
    上面的寫得不是很完整:
    q_emp1.active:=false;
    q_emp1.close;
    q_emp1.sql.clear;
    q_EMP1.sql.add('select ... from *.db where fields=:empid');
    q_emp1.parambyname('empid').asstring:=dbcombo1.text;
    q_emp1.open;
      

  4.   

    dbcombobox.text可能不行,需要用dbcombox.fieldvalue吧,感觉想法不是太好,应该用list,而不是combobox,
      

  5.   

    很奇怪,我的q_emp1里没有parambyname属性,怎么回事?
      

  6.   

    我用的是adoquery,q_emp1里只有个parameters属性,写成datamodule2.Q_Emp1.Parameters[0].Value:=dbcombobox1.Text;可以吗?