帮忙检查有和语法错误:
sSQL := 'SELECT t_unit.f_cunitid f_type,f_salestatu,f_saleprice,f_cutstatu,f_cutprice,'
   +'feedetail.f_number,f_money,f_zw,f_f1,f_f2,f_f3,f_kd,'
   +'(feedetail.f_zw + feedetail.f_f1 + feedetail.f_f2 + feedetail.f_f3 + feedetail.f_kd) f_hj,'
   +'(feedetail.f_money - (feedetail.f_zw + feedetail.f_f1 + feedetail.f_f2 + feedetail.f_f3 + feedetail.f_kd)) f_sf,'
   +'(saleticket.f_saleprice - (feedetail.f_money -'
    +'(feedetail.f_zw + feedetail.f_f1 + feedetail.f_f2 + feedetail.f_f3 + feedetail.f_kd))) f_tlhj,'
   +'((saleticket.f_saleprice - (feedetail.f_money - (feedetail.f_zw + feedetail.f_f1'
    +' + feedetail.f_f2 + feedetail.f_f3 + feedetail.f_kd)))/saleticket.f_saleprice) f_tll '
    +'FROM  t_unit LEFT JOIN '
  +'(SELECT t_unit.f_cunitid,COUNT(t_ticket.f_ctickstatu) f_salestatu,'
    +'SUM(f_ipm * t_ticket.f_cuprice) f_saleprice '
  +'FROM t_ticket INNER JOIN t_bookseat ON t_ticket.f_ibusnoid = t_bookseat.f_ibusnoid '
  +'INNER JOIN t_businfo ON t_bookseat.f_cbusnmid = t_businfo.f_cbusnmid '
    +'INNER JOIN t_unit ON t_businfo.f_cunitid = t_unit.f_cunitid '
    +' AND (t_bookseat.f_dtstarttime BETWEEN '''+ FormatDatetime('yyyy-mm-dd hh:nn:ss',Dtp_Start.DateTime)
    +''' AND '''+ FormatDatetime('yyyy-mm-dd hh:nn:ss',Dtp_End.DateTime)+''')'
    +'GROUP BY t_unit.f_cunitid) AS saleticket ON t_unit.f_cunitid = saleticket.f_cunitid '
    +' LEFT JOIN '
    +'(SELECT t_unit.f_cunitid,COUNT(t_ticket.f_ctickstatu) f_cutstatu,SUM(t_ticket.f_cuprice)'
    +' f_cutprice'
  +' FROM t_ticket INNER JOIN t_bookseat ON t_ticket.f_ibusnoid = t_bookseat.f_ibusnoid'
  +' INNER JOIN t_businfo ON t_bookseat.f_cbusnmid = t_businfo.f_cbusnmid'
  +' INNER JOIN t_unit ON t_businfo.f_cunitid = t_unit.f_cunitid'
  +' WHERE t_ticket.f_ctickstatu =''3'''
    +' AND (t_bookseat.f_dtstarttime BETWEEN '''+ FormatDatetime('yyyy-mm-dd hh:nn:ss',Dtp_Start.DateTime)
    +''' AND '''+ FormatDatetime('yyyy-mm-dd hh:nn:ss',Dtp_End.DateTime)+''')'
    +' GROUP BY t_unit.f_cunitid) AS cutticket ON t_unit.f_cunitid = cutticket.f_cunitid'
    +' LEFT JOIN '
    +'(SELECT t_unit.f_cunitid,SUM(t_feedetail.f_icount) f_number,SUM(t_feedetail.f_cusum) f_money,'
    +' SUM(t_feedetail.f_cuzwf) f_zw,SUM(t_feedetail.f_cufj1) f_f1,'
  +' SUM(t_feedetail.f_cufj2) f_f2,SUM(t_feedetail.f_cufj3) f_f3,SUM(t_feedetail.f_cukdf) f_kd'
  +' FROM t_feedetail INNER JOIN t_bookseat ON t_feedetail.f_ibusnoid = t_bookseat.f_ibusnoid'
  +' INNER JOIN t_businfo ON t_bookseat.f_cbusnmid = t_businfo.f_cbusnmid'
  +' INNER JOIN t_unit ON t_businfo.f_cunitid = t_unit.f_cunitid'
    +' WHERE (t_feedetail.f_cfeeid = ''01'''
    +' OR t_feedetail.f_cfeeid = ''04'')'
    +' AND t_feedetail.f_crenderno3 <> '''''
    +' AND (t_feedetail.f_dtrender2 BETWEEN ''' + FormatDatetime('yyyy-mm-dd hh:nn:ss',Dtp_Start.DateTime)
    +''' AND ''' + FormatDatetime('yyyy-mm-dd hh:nn:ss',Dtp_End.DateTime) +''')'
    +'GROUP BY t_unit.f_cunitid) AS feedetail ON t_unit.f_cunitid = feedetail.f_cunitid'
    +'WHERE  t_unit.f_vcunitid='''+copy(CBX.text,1,10)+'''';

解决方案 »

  1.   

    报错信息是什么?(建立楼主少用SQL语句动态生成,用参数的形式会好一点的,这样会有危险的)
      

  2.   

    我天,第一次看到风格如此与众不同的程序哦!我用Now代替你程序中的日期时间,得到结果如下,你看看对不对吧:
    SELECT t_unit.f_cunitid f_type,f_salestatu,f_saleprice,f_cutstatu,f_cutprice,feedetail.f_number,f_money,f_zw,f_f1,f_f2,f_f3,f_kd,(feedetail.f_zw + feedetail.f_f1 + feedetail.f_f2 + feedetail.f_f3 + feedetail.f_kd) f_hj,(feedetail.f_money - (feedetail.f_zw + feedetail.f_f1 + feedetail.f_f2 + feedetail.f_f3 + feedetail.f_kd)) f_sf,(saleticket.f_saleprice - (feedetail.f_money -(feedetail.f_zw + feedetail.f_f1 + feedetail.f_f2 + feedetail.f_f3 + feedetail.f_kd))) f_tlhj,((saleticket.f_saleprice - (feedetail.f_money - (feedetail.f_zw + feedetail.f_f1 + feedetail.f_f2 + feedetail.f_f3 + feedetail.f_kd)))/saleticket.f_saleprice) f_tll FROM  t_unit LEFT JOIN (SELECT t_unit.f_cunitid,COUNT(t_ticket.f_ctickstatu) f_salestatu,SUM(f_ipm * t_ticket.f_cuprice) f_saleprice FROM t_ticket INNER JOIN t_bookseat ON t_ticket.f_ibusnoid = t_bookseat.f_ibusnoid INNER JOIN t_businfo ON t_bookseat.f_cbusnmid = t_businfo.f_cbusnmid INNER JOIN t_unit ON t_businfo.f_cunitid = t_unit.f_cunitid  AND (t_bookseat.f_dtstarttime BETWEEN '2003-08-18 15:01:03' AND '2003-08-18 15:01:03')GROUP BY t_unit.f_cunitid) AS saleticket ON t_unit.f_cunitid = saleticket.f_cunitid  LEFT JOIN (SELECT t_unit.f_cunitid,COUNT(t_ticket.f_ctickstatu) f_cutstatu,SUM(t_ticket.f_cuprice) f_cutprice FROM t_ticket INNER JOIN t_bookseat ON t_ticket.f_ibusnoid = t_bookseat.f_ibusnoid INNER JOIN t_businfo ON t_bookseat.f_cbusnmid = t_businfo.f_cbusnmid INNER JOIN t_unit ON t_businfo.f_cunitid = t_unit.f_cunitid WHERE t_ticket.f_ctickstatu ='3' AND (t_bookseat.f_dtstarttime BETWEEN '2003-08-18 15:01:03' AND '2003-08-18 15:01:03') GROUP BY t_unit.f_cunitid) AS cutticket ON t_unit.f_cunitid = cutticket.f_cunitid LEFT JOIN (SELECT t_unit.f_cunitid,SUM(t_feedetail.f_icount) f_number,SUM(t_feedetail.f_cusum) f_money, SUM(t_feedetail.f_cuzwf) f_zw,SUM(t_feedetail.f_cufj1) f_f1, SUM(t_feedetail.f_cufj2) f_f2,SUM(t_feedetail.f_cufj3) f_f3,SUM(t_feedetail.f_cukdf) f_kd FROM t_feedetail INNER JOIN t_bookseat ON t_feedetail.f_ibusnoid = t_bookseat.f_ibusnoid INNER JOIN t_businfo ON t_bookseat.f_cbusnmid = t_businfo.f_cbusnmid INNER JOIN t_unit ON t_businfo.f_cunitid = t_unit.f_cunitid WHERE (t_feedetail.f_cfeeid = '01' OR t_feedetail.f_cfeeid = '04') AND t_feedetail.f_crenderno3 <> '' AND (t_feedetail.f_dtrender2 BETWEEN '2003-08-18 15:01:03' AND '2003-08-18 15:01:03')GROUP BY t_unit.f_cunitid) AS feedetail ON t_unit.f_cunitid = feedetail.f_cunitidWHERE  t_unit.f_vcunitid='CBX.text'
    ————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  3.   

    报错为:Progect hyzw_Cxtj.exe raised exception class EOleException with message
    '第一行:'t_unit'附近有语法错误。',Process stopped.
      

  4.   

    't_unit'附近有语法错误。',后面掉了‘逗号’
      

  5.   

    f_type,f_salestatu,f_saleprice,f_cutstatu,f_cutprice 前面都要加上数据表的名字
      

  6.   

    sSQL:= 'SELECT t_businfo.f_cbusnmid f_type,f_salestatu,f_saleprice,f_cutstatu,f_cutprice,'
      +'feedetail.f_number,f_money,f_zw,f_f1,f_f2,f_f3,f_kd,'
       +'(feedetail.f_zw + feedetail.f_f1 + feedetail.f_f2 + feedetail.f_f3 + feedetail.f_kd) f_hj,'
       +'(feedetail.f_money - (feedetail.f_zw + feedetail.f_f1 + feedetail.f_f2 + feedetail.f_f3 '
        +' + feedetail.f_kd)) f_sf,'
      +'(saleticket.f_saleprice - (feedetail.f_money - (feedetail.f_zw + feedetail.f_f1 '
        +'+ feedetail.f_f2 + feedetail.f_f3 + feedetail.f_kd))) f_tlhj,'
      +'((saleticket.f_saleprice - (feedetail.f_money - (feedetail.f_zw + feedetail.f_f1'
        +'+ feedetail.f_f2 + feedetail.f_f3 + feedetail.f_kd)))/saleticket.f_saleprice) f_tll'
        +' FROM t_businfo '
        +' LEFT JOIN '
      +'(SELECT t_businfo.f_cbusnmid,COUNT(t_ticket.f_ctickstatu) f_salestatu,'
        +' SUM(f_ipm * t_ticket.f_cuprice) f_saleprice'
      +' FROM t_ticket INNER JOIN t_bookseat ON t_ticket.f_ibusnoid = t_bookseat.f_ibusnoid'
      +' INNER JOIN t_nobus ON t_bookseat.f_cnumber = t_nobus.f_cnumber'
      +' INNER JOIN t_businfo ON t_nobus.f_cbusnmid = t_businfo.f_cbusnmid'
        +' AND (t_bookseat.f_dtstarttime BETWEEN ''' + FormatDatetime('yyyy-mm-dd hh:nn:ss',Dtp_Start.DateTime)
        +''' AND ''' + FormatDatetime('yyyy-mm-dd hh:nn:ss',Dtp_End.DateTime) +''')'
       +' GROUP BY t_businfo.f_cbusnmid) AS saleticket ON t_businfo.f_cbusnmid = saleticket.f_cbusnmid'
        +' LEFT JOIN '
        +'(SELECT t_businfo.f_cbusnmid,COUNT(t_ticket.f_ctickstatu) f_cutstatu,SUM(t_ticket.f_cuprice) f_cutprice'
      +' FROM t_ticket INNER JOIN t_bookseat ON t_ticket.f_ibusnoid = t_bookseat.f_ibusnoid'
      +' INNER JOIN t_nobus ON t_bookseat.f_cnumber = t_nobus.f_cnumber'
      +' INNER JOIN t_businfo ON t_nobus.f_cbusnmid = t_businfo.f_cbusnmid'
      +' WHERE t_ticket.f_ctickstatu = ''3'''
        +' AND (t_bookseat.f_dtstarttime BETWEEN ''' + FormatDatetime('yyyy-mm-dd hh:nn:ss',Dtp_Start.DateTime)
        +''' AND ''' + FormatDatetime('yyyy-mm-dd hh:nn:ss',Dtp_End.DateTime) +''')'
        +' GROUP BY t_businfo.f_cbusnmid) AS cutticket ON t_businfo.f_cbusnmid = cutticket.f_cbusnmid'
        +' LEFT JOIN '
        +' (SELECT t_businfo.f_cbusnmid,SUM(t_feedetail.f_icount) f_number,'
        +' SUM(t_feedetail.f_cusum) f_money,SUM(t_feedetail.f_cuzwf) f_zw,SUM(t_feedetail.f_cufj1) f_f1,'
      +' SUM(t_feedetail.f_cufj2) f_f2,SUM(t_feedetail.f_cufj3) f_f3,SUM(t_feedetail.f_cukdf) f_kd'
      +' FROM t_feedetail INNER JOIN t_bookseat ON t_feedetail.f_ibusnoid = t_bookseat.f_ibusnoid'
      +' INNER JOIN t_nobus ON t_bookseat.f_cnumber = t_nobus.f_cnumber'
      +' INNER JOIN t_businfo ON t_nobus.f_cbusnmid = t_businfo.f_cbusnmid'
        +' AND (t_feedetail.f_dtrender2 BETWEEN ''' + FormatDatetime('yyyy-mm-dd hh:nn:ss',Dtp_Start.DateTime)
        +''' AND ''' + FormatDatetime('yyyy-mm-dd hh:nn:ss',Dtp_End.DateTime) +''')'
        +' GROUP BY t_businfo.f_cbusnmid) AS feedetail ON t_businfo.f_cbusnmid = feedetail.f_cbusnmid'
        +' WHERE t_businfo.f_cbusnmid <> '''''
        +' AND f_salestatu <> '''''
        +' ANd  t_businfo.f_cbusnmid='''+Trim(CBX.Text)+'''';