解決delphi TAdoQuery組件的close方法導(dǎo)致”列名無效“錯(cuò)誤的問題
1,故障現(xiàn)象
一次程序運(yùn)行,出現(xiàn)如下錯(cuò)誤:

對(duì)應(yīng)代碼如下:

2,故障分析
Query_alert_2的語句在查詢分析器中單獨(dú)執(zhí)行是正常的。排除語句出錯(cuò)。
如果注解掉Query_alert_1,則錯(cuò)誤變?yōu)镼uery_alert_3執(zhí)行出錯(cuò):
2019-07-11 09:32:26 Query_alert_1執(zhí)行完畢
2019-07-11 09:32:27 Query_alert_2執(zhí)行完畢
2019-07-11 09:32:42 Do_Update_Statis出錯(cuò):列名 'bat_pos1' 無效。
如果注解掉Query_alert_1、Query_alert_2,則Query_alert_3執(zhí)行正常。
可見,出現(xiàn)錯(cuò)誤是delphi內(nèi)數(shù)據(jù)庫組件產(chǎn)生的,與數(shù)據(jù)庫執(zhí)行無關(guān)。
3,故障原因及解決
數(shù)據(jù)庫版本的SQLServer2005,執(zhí)行的這些SQL語句含有臨時(shí)表,如:
if OBJECT_ID('tempdb..#t1')>0
drop table #t1
執(zhí)行正式的SQL之前,會(huì)運(yùn)行以上語句,以刪除當(dāng)前同名的臨時(shí)表。
但實(shí)際運(yùn)行發(fā)現(xiàn),這些臨時(shí)表不一定會(huì)被刪除,而當(dāng)引用時(shí),可能會(huì)引用到以前的臨時(shí)表,導(dǎo)致欄位不存在錯(cuò)誤。
因此,在Query_alert_1、Query_alert_2,Query_alert_3語句的最后,都加上drop 臨時(shí)表的語句,以確保臨時(shí)表在下次使用前一定不存在。如:
--檢查臨時(shí)表是否在用,有則刪除,以防錯(cuò)誤
if OBJECT_ID('tempdb..#t1')>0
drop table #t1
if OBJECT_ID('tempdb..#t2')>0
drop table #t2
/*
執(zhí)行相關(guān)業(yè)務(wù)邏輯SQL
select *
into #t1
from table1
。。。
。。。
*/
--執(zhí)行完畢,清除臨時(shí)表,以便下次再使用
if OBJECT_ID('tempdb..#t1')>0
drop table #t1
if OBJECT_ID('tempdb..#t2')>0
drop table #t2
修改后,結(jié)果多條SQL語句順序執(zhí)行正常。

4,總結(jié)
關(guān)于數(shù)據(jù)庫臨時(shí)表,一定要注意在查詢器中執(zhí)行和在程序代碼中執(zhí)行是有區(qū)別的。
區(qū)別在于查詢器會(huì)自動(dòng)提交交易,并清除臨時(shí)表,而程序則不一定。
以上這篇解決delphi TAdoQuery組件的close方法導(dǎo)致”列名無效“錯(cuò)誤的問題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Delphi用TActionList實(shí)現(xiàn)下載文件的方法
這篇文章主要介紹了Delphi用TActionList實(shí)現(xiàn)下載文件的方法,需要的朋友可以參考下2014-07-07
Delphi 根據(jù)字符串找到函數(shù)并執(zhí)行的實(shí)例
這篇文章主要介紹了Delphi 根據(jù)字符串找到函數(shù)并執(zhí)行的實(shí)例的相關(guān)資料,希望通過本能幫助到大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-09-09
在Delphi實(shí)現(xiàn)在數(shù)據(jù)庫中存取圖像的圖文演示無錯(cuò)
最近打算學(xué)習(xí)Delphi實(shí)現(xiàn)在數(shù)據(jù)庫中存取圖像,網(wǎng)上的好多Delphi實(shí)現(xiàn)在數(shù)據(jù)庫中存取圖像都是錯(cuò)誤的,所以我把圖片給弄好了。2008-01-01
delphi實(shí)現(xiàn)將BMP格式圖形轉(zhuǎn)化為JPG格式圖形的方法
這篇文章主要介紹了delphi實(shí)現(xiàn)將BMP格式圖形轉(zhuǎn)化為JPG格式圖形的方法,通過簡(jiǎn)單的自定義函數(shù)調(diào)用系統(tǒng)自帶的changefileext及SaveToFile等方法來實(shí)現(xiàn)格式轉(zhuǎn)換功能,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12
Delphi實(shí)現(xiàn)獲取磁盤空間大小的方法
這篇文章主要介紹了Delphi實(shí)現(xiàn)獲取磁盤空間大小的方法,是一個(gè)很實(shí)用的功能,需要的朋友可以參考下2014-07-07
Delphi實(shí)現(xiàn)圖片滾動(dòng)切換的完整實(shí)例代碼
這篇文章主要介紹了Delphi實(shí)現(xiàn)圖片滾動(dòng)切換的完整實(shí)例代碼,通過本實(shí)例,讀者可以進(jìn)一步掌握Delphi控件及圖形處理的技巧,需要的朋友可以參考下2014-07-07

