var
b,e:string;
begin
b:=datetimetostr(DateTimePicker1.time);
e:=datetimetostr(DateTimePicker2.time);md.tj.close;                                                                                          // between '+QuoTedStr(b)+' and '+QuoTedStr(e)
md.tj.sql.clear;         md.tj.sql.add('select b.pingming,b.zl-a.zl z from(select  pingming,sum(zhongliang) zl    from mxb where  riqi between '+QuoTedStr(b)+' and '+QuoTedStr(e)+'  group by pingming) a,(select  pingming,sum(shijishuliang) zl    from kcb where  riqi between '+QuoTedStr(b)+' and '+QuoTedStr(e)+'   group by pingming ) bwhere a.pingming=b.pingmingorder by b.pingming' ) ;md.tj.open;我是比较2个表pingming,这个字段相同分别统计和,在用kcb 里边的值减去MXB里边的,显示出来。
pinming这个字段
// '''+edit1.text+'''在这个里边输入具体的值也可以查到,,大侠们帮下忙。。急,等!!!!!!!!!!!!

解决方案 »

  1.   

    var
      b,e ,sqlstr:string; begin 
    b:=datetimetostr(DateTimePicker1.time); 
    e:=datetimetostr(DateTimePicker2.time);
     
    sqlstr := 'select t1.pingming,sum(t1.zhongliang)-sum(t2.shijishuliang) z from mxb t1 ';
    sqlstr := sqlstr + ' inner join kcb t2 on t1.pingming=t2.pingming  group by t1.pingming';
    sqlstr := sqlstr + ' and t1.riqi between '+QuoTedStr(b)+' and '+QuoTedStr(e);
    sqlstr := sqlstr + ' and t2.riqi between '+QuoTedStr(b)+' and '+QuoTedStr(e);
    if trim(edit1.text)<>'' then
      sqlstr := sqlstr + ' and t1.pingming like '+quotoedstr(edit1.text);
    sqlstr := sqlstr + ' order by t1.pingming';md.tj.close;                                                                         
    md.tj.sql.clear;        
    md.tj.sql.add(sqlstr) ; 
    md.tj.open; end;
      

  2.   

    var 
      b,e ,sqlstr:string; begin 
    b:=datetimetostr(DateTimePicker1.time); 
    e:=datetimetostr(DateTimePicker2.time); sqlstr := 'select t1.pingming,sum(t1.zhongliang)-sum(t2.shijishuliang) z from mxb t1 '; 
    sqlstr := sqlstr + ' inner join kcb t2 on t1.pingming=t2.pingming  group by t1.pingming'; 
    sqlstr := sqlstr + ' and t1.riqi between '+QuoTedStr(b)+' and '+QuoTedStr(e); 
    sqlstr := sqlstr + ' and t2.riqi between '+QuoTedStr(b)+' and '+QuoTedStr(e); 
    if trim(edit1.text) <>'' then 
      sqlstr := sqlstr + ' and t1.pingming like '+quotoedstr('%'+edit1.text+'%'); 
    sqlstr := sqlstr + ' order by t1.pingming'; md.tj.close;                                                                        
    md.tj.sql.clear;        
    md.tj.sql.add(sqlstr) ; 
    md.tj.open; end;
      

  3.   

    提示错误啊。提示and出有错误。
      

  4.   

    我这没有装Delphi,没有测试过,group by 位置错了
    var 
      b,e ,sqlstr:string; begin 
    b:=datetimetostr(DateTimePicker1.time); 
    e:=datetimetostr(DateTimePicker2.time); sqlstr := 'select t1.pingming,sum(t1.zhongliang)-sum(t2.shijishuliang) z from mxb t1 '; 
    sqlstr := sqlstr + ' inner join kcb t2 on t1.pingming=t2.pingming ; 
    sqlstr := sqlstr + ' and t1.riqi between '+QuoTedStr(b)+' and '+QuoTedStr(e); 
    sqlstr := sqlstr + ' and t2.riqi between '+QuoTedStr(b)+' and '+QuoTedStr(e); 
    if trim(edit1.text) <>'' then 
      sqlstr := sqlstr + ' and t1.pingming like '+quotoedstr('%'+edit1.text+'%'); 
    sqlstr := sqlstr + ' group by t1.pingming order by t1.pingming'; md.tj.close;                                                                        
    md.tj.sql.clear;        
    md.tj.sql.add(sqlstr) ; 
    md.tj.open; end;
      

  5.   

    //按照你写的var 
      b,e ,sqlstr:string; begin 
    b:=datetimetostr(DateTimePicker1.time); 
    e:=datetimetostr(DateTimePicker2.time); sqlstr := 'select b.pingming,b.zl-a.zl z from'; 
    sqlstr := sqlstr + ' (select  pingming,sum(zhongliang) zl   from mxb where riqi between '+QuoTedStr(b)+' and '+QuoTedStr(e)+' group by pingming) a,'; 
    sqlstr := sqlstr + ' (select  pingming,sum(shijishuliang) zl  from kcb where riqi between '+QuoTedStr(b)+' and '+QuoTedStr(e)+' group by pingming) b,'; 
    sqlstr := sqlstr + ' where a.pingming=b.pingming'
    if trim(edit1.text) <>'' then 
      sqlstr := sqlstr + ' and a.pingming like '+quotoedstr('%'+edit1.text+'%'); 
    sqlstr := sqlstr + ' order by a.pingming'; md.tj.close;                                                                        
    md.tj.sql.clear;        
    md.tj.sql.add(sqlstr) ; 
    md.tj.open; end;