使用adoquery 出現msvcrt.dll問題 |
答題得分者是:P.D.
|
shawn_hsu
一般會員 發表:4 回覆:1 積分:1 註冊:2006-07-06 發送簡訊給我 |
請教各位前輩:
當我執行以下sql 時,會出現msvcrt.dll錯誤,參考如下: 1.adoqry.SQL.Add('SELECT LEFT(TG042,6) AS TG042,TG004,MAX(MA002) AS MA002,TG005,MA017,MAX(MR003) AS MR003,TG006,MB006,SUM(TH013)AS TH013 FROM COPTG'); 2. adoqry.SQL.Add(' LEFT JOIN COPTH ON TG001=TH001 AND TG002=TH002'); 3. adoqry.SQL.Add(' LEFT JOIN INVMB ON MB001=TH004'); 4. adoqry.SQL.Add(' LEFT JOIN COPMA ON MA001=TG004'); 5. adoqry.SQL.Add(' LEFT JOIN CMSMR ON MR002=MA017'); 6. adoqry.SQL.Add(' WHERE TG042 >=:Y1 AND TG042<=:Y2'); 7. adoqry.SQL.Add(' AND TG023 =''Y'''); 8. adoqry.SQL.Add(' AND LEFT(TG006,2)=:TG006'); 9. adoqry.SQL.Add(' GROUP BY TG042,TG004,TG005,MA017,TG006,MB006'); 10. adoqry.SQL.Add(' HAVING SUM(TH013)>0'); 11. adoqry.SQL.Add(' ORDER BY TG042,TG004,MA017,MB006'); 當執行到第7行時,就會出現 Access violation at address 77C1809E in module ‘msvcrt.dll’. Write of address 03D16000’. 這是什麼原因呢,我有試著把adoquery.cachesize 調為3000但還是不行, 但是若把第3、4、5行remark起來就ok,是cache 不夠大嗎? 還是哪裡我沒有設定好呢,請各位前輩指導小弟,謝謝。 |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
請問你有沒有試過把這些變成一句話
adoqry.sql.text:= 'select .....' 就好了 使用 sql.add 不但浪費資源同時還損耗效能, 這猶如 我由台北到宜蘭, 直接坐到一趟車就可到, 但非得要從台北先坐到屏東,再搭南迴到台東, 轉花東線到花蓮, 再由花蓮搭北迴到宜蘭一樣 先試試一句話看看能不能過吧! ===================引 用 shawn_hsu 文 章=================== 請教各位前輩: 當我執行以下sql 時,會出現msvcrt.dll錯誤,參考如下: 1.adoqry.SQL.Add('SELECT LEFT(TG042,6) AS TG042,TG004,MAX(MA002) AS MA002,TG005,MA017,MAX(MR003) AS MR003,TG006,MB006,SUM(TH013)AS TH013 FROM COPTG'); 2. adoqry.SQL.Add(' LEFT JOIN COPTH ON TG001=TH001 AND TG002=TH002'); 3. adoqry.SQL.Add(' LEFT JOIN INVMB ON MB001=TH004'); 4. adoqry.SQL.Add(' LEFT JOIN COPMA ON MA001=TG004'); 5. adoqry.SQL.Add(' LEFT JOIN CMSMR ON MR002=MA017'); 6. adoqry.SQL.Add(' WHERE TG042 >=:Y1 AND TG042<=:Y2'); 7. adoqry.SQL.Add(' AND TG023 =''Y'''); 8. adoqry.SQL.Add(' AND LEFT(TG006,2)=:TG006'); 9. adoqry.SQL.Add(' GROUP BY TG042,TG004,TG005,MA017,TG006,MB006'); 10. adoqry.SQL.Add(' HAVING SUM(TH013)>0'); 11. adoqry.SQL.Add(' ORDER BY TG042,TG004,MA017,MB006'); 當執行到第7行時,就會出現 Access violation at address 77C1809E in module ‘msvcrt.dll’. Write of address 03D16000’. 這是什麼原因呢,我有試著把adoquery.cachesize 調為3000但還是不行, 但是若把第3、4、5行remark起來就ok,是cache 不夠大嗎? 還是哪裡我沒有設定好呢,請各位前輩指導小弟,謝謝。 |
it1506
初階會員 發表:32 回覆:89 積分:49 註冊:2011-02-16 發送簡訊給我 |
|
shawn_hsu
一般會員 發表:4 回覆:1 積分:1 註冊:2006-07-06 發送簡訊給我 |
P.D 版主您好:
小弟有嘗試您說的改成sql.text='....'的方式,但執行到adoquery.open時還是會出現相同的錯誤字眼,這是為什麼呢,難道是資料太多導致的嗎?謝謝。 ===================引 用 P.D. 文 章=================== 請問你有沒有試過把這些變成一句話 adoqry.sql.text:= 'select .....' 就好了 使用 sql.add 不但浪費資源同時還損耗效能, 這猶如 我由台北到宜蘭, 直接坐到一趟車就可到, 但非得要從台北先坐到屏東,再搭南迴到台東, 轉花東線到花蓮, 再由花蓮搭北迴到宜蘭一樣 先試試一句話看看能不能過吧! ===================引 用 shawn_hsu 文 章=================== 請教各位前輩: 當我執行以下sql 時,會出現msvcrt.dll錯誤,參考如下: 1.adoqry.SQL.Add('SELECT LEFT(TG042,6) AS TG042,TG004,MAX(MA002) AS MA002,TG005,MA017,MAX(MR003) AS MR003,TG006,MB006,SUM(TH013)AS TH013 FROM COPTG'); 2. adoqry.SQL.Add(' LEFT JOIN COPTH ON TG001=TH001 AND TG002=TH002'); 3. adoqry.SQL.Add(' LEFT JOIN INVMB ON MB001=TH004'); 4. adoqry.SQL.Add(' LEFT JOIN COPMA ON MA001=TG004'); 5. adoqry.SQL.Add(' LEFT JOIN CMSMR ON MR002=MA017'); 6. adoqry.SQL.Add(' WHERE TG042 >=:Y1 AND TG042<=:Y2'); 7. adoqry.SQL.Add(' AND TG023 =''Y'''); 8. adoqry.SQL.Add(' AND LEFT(TG006,2)=:TG006'); 9. adoqry.SQL.Add(' GROUP BY TG042,TG004,TG005,MA017,TG006,MB006'); 10. adoqry.SQL.Add(' HAVING SUM(TH013)>0'); 11. adoqry.SQL.Add(' ORDER BY TG042,TG004,MA017,MB006'); 當執行到第7行時,就會出現 Access violation at address 77C1809E in module ‘msvcrt.dll’. Write of address 03D16000’. 這是什麼原因呢,我有試著把adoquery.cachesize 調為3000但還是不行, 但是若把第3、4、5行remark起來就ok,是cache 不夠大嗎? 還是哪裡我沒有設定好呢,請各位前輩指導小弟,謝謝。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |