有3张表,
表a:销售员基本信息表,包含字段:工号、姓名等
表b:销售员的业务记录表,包含字段:姓名、客户名称、地址、金额等,就是没有工号,这张表的内容是手工输入的(这张表中回出现一个销售员对应多个客户的情况,反之则不会)
表c;销售业绩统计表,包含字段:工号、姓名(从表b中得到)、金额(从表b中得到)等
现我要在表c中根据‘姓名’,(也就是对号入坐)从表a中取‘工号’数据插入表c中的‘工号’,并按‘工号’对表进行排序,怎么办?其他数据已取,就剩工号。我是这样写的代码,有错,请高人查错,或给出代码,谢谢!!在这里我就取姓名及工号这两个字段
query2.Connection:=pubfunc.ac1   //连接方法已写
query2.close;
query2.SQL.text='select * from 表c';
query2.open;
query2.FieldByName('姓名').AsString:=表b.Fieldbyname('cr017').AsString;
stat_query9.Close;
stat_query9.SQL.Text:='select 工号 from 表a where (姓名=query2.fieldbyname('姓名').asstring)';              //根据姓名取序号
stat_query9.Open;
query2.fieldbyname('工号').asstring:=stat_query9.fieldbyname('工号').asstring;
就是不行,不知道怎么弄了,本人很菜。语法应该没有错误,可能是思想错了。

解决方案 »

  1.   

    你先把用while not 表A.eof do 把表A中的工号和姓名写入表C中,然后再根据表C中的姓名在表B中提出相应姓名的数据插入表C后的金额字段就行了,(如有多个同姓名的金额就用select sum(金额) from 表B where 姓名=表C.姓名),最后就排序。
      

  2.   

    query2.Connection:=pubfunc.ac1   //连接方法已写
    query2.close;
    query2.SQL.Clear;
    query2.SQL.text :='select * from 表c';
    query2.open;
    query2.FieldByName('姓名').AsString:=表b.Fieldbyname('cr017').AsString;
    stat_query9.Close;
    stat_query9.SQL.Clear;
    stat_query9.SQL.Text:='select 工号 from 表a';
    stat_query9.SQL.Text:='where (姓名=aquery2.fieldbyname('姓名').asstring)';              //根据姓名取序号
    stat_query9.Open;
    query2.fieldbyname('工号').asstring:=stat_query9.fieldbyname('工号').asstring;
      

  3.   

    to  zhlwyy(海龙):
    还是不行,错误:stat_query:field '工号'not found  谢谢先
    to  kjbdyw(小文): 
    表a是所有销售员的信息,而表c并不是所有销售员都有的啊,要是先把表a中的销售员的工号及姓名先插入表c,这样不行的  谢谢依然
    to zhuangjunx(孤星):
    谢谢!
      

  4.   

    问:delphi 可以对SQL server 中的视图进行操作吗?
      

  5.   

    我问题的解决了,我建了一个视图,然后让,cxgrid直接访问这个视图,谢谢各位!散分~~~~~~