是這樣的,現在我需要產生一個報表,因為產生的數據量本身不大,測試發現可能是SQL語句問題,因為多表關聯且條件比較多導致延時,總數據目前為9000條左右,產生數據的時間為大約1分30秒左右!而程序的反映是SQL Server超時,報表產生不出來!希望有能力的高手來看看,給點意見,最好不要推薦改SQL語句(萬不得已的情況下)!
注:現在發現了一種做法,可以成功生成報表,但是不能提示成功
將CommandTimeout設置為200,但是不能提示,可以成功生成!報表使用ActiveReport,VB Script程序!

解决方案 »

  1.   

    left join 连接查询呗!  你的表结构和查询语句是怎样的,给个大体结构。
      

  2.   


    SELECT distinct  rtrim(ltrim(a.Fld0005)) AS f01,
    rtrim(ltrim((SELECT fld0020 FROM hrs0030 WHERE fld0010 = a.fld0010))) AS f02,
    rtrim(ltrim(b.Fld0020)) AS f03,
    rtrim(ltrim(b.Fld0430)) AS f04,
    rtrim(ltrim((SELECT fld0020 FROM hrs0003 WHERE fld0010 = b.fld0430))) AS f05,
    rtrim(ltrim((SELECT sum(hrs0111.Fld0100) FROM hrs0111 INNER JOIN HRS0080 ON hrs0111.Fld0090 = hrs0080.Fld0010  where hrs0080.fld0040=1 and hrs0111.fld0005=a.fld0005 and hrs0111.fld0040=a.fld0040))) AS f06,
    rtrim(ltrim((SELECT sum(hrs0111.Fld0100) FROM hrs0111 INNER JOIN  HRS0080 ON hrs0111.Fld0090 = hrs0080.Fld0010  where hrs0080.fld0130=1 and hrs0111.fld0005=a.fld0005 and hrs0111.fld0040=a.fld0040))) AS f07,
    rtrim(ltrim((SELECT sum(hrs0111.Fld0100) FROM hrs0111 INNER JOIN  HRS0080 ON hrs0111.Fld0090 = hrs0080.Fld0010  where hrs0080.fld0060=1 and hrs0111.fld0005=a.fld0005 and hrs0111.fld0040=a.fld0040))) AS f08,
    rtrim(ltrim((SELECT sum(hrs0111.Fld0100) FROM hrs0111 INNER JOIN  HRS0080 ON hrs0111.Fld0090 = hrs0080.Fld0010  where hrs0080.fld0080=1 and hrs0111.fld0005=a.fld0005 and hrs0111.fld0040=a.fld0040))) AS f09,
    rtrim(ltrim((SELECT sum(hrs0111.Fld0100) FROM hrs0111 INNER JOIN  HRS0080 ON hrs0111.Fld0090 = hrs0080.Fld0010  where hrs0080.fld0090=1 and hrs0111.fld0005=a.fld0005 and hrs0111.fld0040=a.fld0040))) AS f10,
    rtrim(ltrim((SELECT sum(hrs0111.Fld0100) FROM hrs0111 INNER JOIN  HRS0080 ON hrs0111.Fld0090 = hrs0080.Fld0010  where hrs0080.fld0050=1 and hrs0111.fld0005=a.fld0005 and hrs0111.fld0040=a.fld0040))) AS f11,
    rtrim(ltrim((SELECT sum(hrs0111.Fld0100) FROM hrs0111 INNER JOIN  HRS0080 ON hrs0111.Fld0090 = hrs0080.Fld0010  where hrs0080.fld0150=1 and hrs0111.fld0005=a.fld0005 and hrs0111.fld0040=a.fld0040))) AS f12,
    rtrim(ltrim((SELECT sum(hrs0111.Fld0100) FROM hrs0111 INNER JOIN  HRS0080 ON hrs0111.Fld0090 = hrs0080.Fld0010  where hrs0080.fld0160=1 and hrs0111.fld0005=a.fld0005 and hrs0111.fld0040=a.fld0040))) AS f13,
    rtrim(ltrim((SELECT sum(hrs0111.Fld0100) FROM hrs0111 INNER JOIN  HRS0080 ON hrs0111.Fld0090 = hrs0080.Fld0010  where hrs0080.fld0170=1 and hrs0111.fld0005=a.fld0005 and hrs0111.fld0040=a.fld0040))) AS f14,
    rtrim(ltrim((SELECT sum(hrs0111.Fld0100) FROM hrs0111 INNER JOIN  HRS0080 ON hrs0111.Fld0090 = hrs0080.Fld0010  where hrs0080.fld0180=1 and hrs0111.fld0005=a.fld0005 and hrs0111.fld0040=a.fld0040))) AS f15,
    rtrim(ltrim(a.Fld0040)) AS f16,
    rtrim(ltrim(b.Fld0450)) f17
      FROM HRS0111 a INNER JOIN HRS0010 b ON a.Fld0040 = b.Fld0110 where 1=1  And a.fld0010 = 'MJ-S'