2015-09-14 161 views
1

德爾福XE5和SQL Server 2012我有這樣的問題:當我打開表單我連接到數據庫和我賦值我的領域,這樣的 -FireDac現場沒有發現

dbeCustomer.DataSource := DataForm.SQLDS; 
dbeCustomer.DataField := 'Customer'; 

一切運作良好,直到我嘗試運行獨立的.exe程序。然後我收到一個錯誤 - '沒有找到'字段'客戶'。也就是說,如果我從Debug文件夾運行編譯的程序,所有工作都很好。當我在Debug文件夾外運行該程序時,出現錯誤。 如果我修改我的代碼,這一切方式再次正常工作的每一個地方:

dbeCOwner.DataSource := DataForm.SQLDS; 

try 
    dbeCOwner.DataField := 'COwner'; 
    except 
    dbeCOwner.DataField := 'COwner'; 
    end; 

任何想法怎麼會呢?謝謝。

+0

您的.Exe的位置不應該有任何區別。最可能的原因是你的代碼中沒有包含在q中的東西。請向你的q添加包含你引用的代碼的程序/函數的完整代碼。如果該單位不超過幾十行,則可能包含整個單位。另外,發生異常時,使用View |調試Windows |調用堆棧來查看它發生的位置。 – MartynA

+0

「你的.Exe的位置不應該對此產生任何影響」是的,這就是我的想法。然而.exe文件的行爲有所不同,具體取決於它是否在Debug文件夾或其他任何地方,這很奇怪...... – Peter

+0

好吧,將.Exe從Debug文件夾移動到其他位置,然後在調試器下從IDE運行它。這應該揭示你爲什麼會得到例外。 – MartynA

回答

-1

我嘗試猜測: 1.您在IDE中關閉「停止例外」 2.您的應用程序缺少DLL或數據庫文件至極只在你的調試目錄

我猜這是因爲你在示例代碼中吃了異常,所以你不會看到任何異常。

+0

沒有你的猜測是正確的,我想...... 這是我做的 '1)\t連接到SQL Server 2)\t撰寫一些SQL查詢(sqlStmt:=「SELECT TOP 50 * FROM MTable ORDER BY n系統「;) 3)\t指定價值,我TDBTexts 4)\t運行SQL query' 在這種情況下,我得到一個錯誤 '場 '有些領域' 沒有發現',如果我跑。 exe文件調試文件夾外。 但是,如果將第3行換行3再次正常工作。 – Peter

+0

你絕對正確。如果我已經正確地閱讀了你的問題,我可以在之前知道它。對此很抱歉。 –

0

僅填寫您提供的信息,無法猜出 可能導致您的問題的原因。由於您的應用的行爲 顯然取決於它在運行時的位置,因此顯而易見的 要做的是從IDE運行它,但在另一個目錄 之內運行,而不是您的調試。

  1. 在項目的Debug目錄中打開Windows資源管理器。將其中的所有內容 都移到您的項目目錄中。

  2. 在IDE中,轉到「查看|項目經理。

  3. 選擇Debug,右鍵單擊它並從彈出窗口中選擇Edit

  4. Output directory設置爲您的項目目錄。

  5. 在IDE中,轉到工具|選項並在彈出窗口中,轉至 Embarcadero debuggers | Language Exceptions並選中方框Notify on language exceptions

  6. 構建應用程序,並檢查您Debug文件夾仍然從第1步

  7. 運行應用程序&調試空。

+0

謝謝MartynA,我會按照你的建議... – Peter