我先建了一个表A,里面有两个字段“供应商编号”“供应商名称”,输入了几条记录。又建了一个表B,里面有字段“签订日期”“供应商编号”“供应商名称”,我想在表B输入记录的时候,“供应商编号”“供应商名称”两个字段能从表A中读取,(例如有个象
combox的框用于让我直接选出表A中已填入的记录,放到表B里),请问如何实现呀??

解决方案 »

  1.   

    给你说个大概的思路
    你先把A表的内容取出来加到COMMBOBOX中然后选择在确定后再通过COMBOBOX中的内容在A中取出相应的记录写到B中
    COMBOBOX加内容这样写
    adoquery1.close;
    adoquery1.sql.clear;
    adoquery1.sql.add('select 供应商编号 from A');
    adoquery1.open;
    while not adoquery1.eof do 
     begin
        combobox1.items.add(adoquery1.fileds[0].asstring);
        adoquery1.next;
     end;
    然后在你选择后确定的时候把供应商编号供应商名称写到B中
    adoquery1.close;
    adoquery1.sql.clear;
    adoqeury1.sql.add('insert into B (签定日期,供应商编号,供应商名称)');
    adoquery1.sql.add('(:v1,:v2,:v3)');
    adoqeury1.excutsql;
    这之前你可以通过SQL取出供应商的编号和名称赋给v2,v3同时把时间赋给V1
      

  2.   

    用DBLOOKUPCOMBOBOX控件可以实现你的想法!同时在B表对应的TABLE或QUERY中为“供应商名称”建立LOOKUP字段,这样在DBGRID中都可以自动显示了
      

  3.   

    TO redhf(农民的儿子)"同时在B表对应的TABLE或QUERY中为“供应商名称”建立LOOKUP字段"不太懂,能不能说清楚一点,什么叫建立 LOOKUP字段那???
      

  4.   

    TO Northwindrocker(北风) 能不能输入B表的记录时,DBGRID焦点跳到了如 “供应商”字段,就能有象COMBOX的东西直接选出记录填入B表,这样就不用 INSERT 语句了呀!所以问题就是COMBOX怎么和DBGIRD的某个记录关联起来那?
      

  5.   

    你的表A和表B存在大量的重复字段啊,而且设计也不符合3NF。表A: SupplierID, SupplierName
    表B:DateIn, SupplierID在表B中输入数据时,我假定你是用一个窗体来做的。那么要用到DBLookupCombobox。对于DBLCB,你的设置要包括:Datasource: TableB对应的DS;
    Field: SupplierID;
    LookupSource: TableA对应的DS;
    KeyField: SupplierID;
    还有一个Field(名字一下子想不起来了):SupplierName这样,你在输入时点那个DBLCB,弹出来的是名称,选择一个后将对应的SID存到表B中去。