如何除錯SQL字串

2021-10-06 12:04:21 字數 981 閱讀 6904

總覽

我們在這裡遇到的最流行(經常發生而不是最不喜歡)的問題之一是在vba**中建立/操作sql字串。 在其他編碼環境中也是如此,但是我將在這裡處理vba。

說明

之所以如此困難,是因為所有工作都在重定向級別上完成。 我的意思是,編碼器永遠不會直接與sql本身一起工作,而是與**一起工作,而**又依賴於**來生成他們所設想的sql。 這與編碼人員歷來處理指標的問題非常相似。

解決方案

我經常向那些為此感到掙扎的編碼人員(任何級別的編碼人員-經驗豐富的編碼人員也會遇到這種情況)建議使用一種技術,即使用

msgbox()函式或debug.print進入偵錯程式視窗的立即窗格 ,以在使用sql之前在字串中顯示sql的值。

msgbox()相比,「即時窗格」選項的好處是可以將其複製並貼上-例如,以位元組為單位的帖子。

另乙個選擇,假設您相對滿意

在vba中進行除錯只是簡單地跟蹤(可以設定乙個斷點來執行此操作)到將執行sql字串的行,然後可以直接檢視字串值(在debug模式下以各種方式進行,包括列印到立即窗格 )。

要嘗試的第三件事,因為有時通過vba執行時看到的行為和錯誤訊息與執行完整的querydef(在access資料庫中儲存的查詢)所看到的行為和錯誤訊息不同,因此,需要列印sql並將其放入querydef物件中,看看當您嘗試執行它時會發生什麼。 為此,只需建立乙個querydef,並在將其開啟進行設計時切換到sql檢視,然後將複製的sql字串貼上到已存在的位置。 從那裡執行,看看會發生什麼。 與通過vba執行資訊相比,您可能會或可能不會獲得更多資訊。

結論

真正理解sql字串的含義以及在什麼地方可能出現問題的時候要容易得多,當您可以完整地並以其真實形式看到它時,而不是在**即將建立時。

這也是在論壇上詢問sql問題的更好的方法。 沒有人會很高興被問到有關您發布的vba**的sql問題。

from:

sql 字串轉陣列 sql 字串分割陣列

update tempcolor set color 1 dbo.func strarraystrofindex color,1 alter function dbo func strarraystrofindex str varchar 1024 要分割的字串 split varchar 10 分...

sql中字串被截斷的問題除錯

今天下午在程式呼叫乙個儲存過程的時候出現了字串截斷問題,因為自己是實習生,而且對sql比較生疏,所以花了乙個多小時才排查出來。首先是檢視報錯資訊,執行儲存過程 出錯 物件名 b 無效。16 03 26,124 error stderr com.ztkj.batj.exception.daoexcep...

sql擷取字串拼接字串修改字串

擷取字串 oracle substr string,start position,length string 為要擷取的字串 start position為開始擷取的位數 位數從1開始,如果是負數,表示從右邊開始擷取 length表示擷取的長度 如果不寫表示去後面全部 例子 select subst...