在使用 C++Builder 6 進行資料庫開發時,開發者常會遇到 ADOQuery1->FieldByName("欄位名")->AsString 返回空值的情況,導致無法正確判斷查詢結果是否存在。這在輸入員工編號查詢、若無資料則提示「查無此人」的場景中尤為常見。
原始碼嘗試直接讀取欄位值,但 FieldByName 回傳的 Variant 可能為 NULL,導致後續邏輯判斷失效。截圖顯示兩者皆為 NULL,且執行時拋出錯誤。


正確的做法是先將欄位值轉為字串,再用 IsEmpty() 判斷是否為空:
AnsiString ID;
ID = ADOQuery1->FieldByName("員工號")->AsString;
if (ID.IsEmpty()) {
ShowMessage("查無此人");
return;
}
這樣即可避免 NULL 導致的例外,並正確處理查無資料的情況。
在 C++Builder 中使用 ADO 元件讀取資料時,務必先轉型為字串再檢查是否為空,切勿直接對 Variant 型別進行邏輯判斷。這是處理資料庫欄位可能為 NULL 的標準做法。