2013-07-08 26 views
0

我們正在將Access窗體/ Access數據庫遷移到Access窗體/ SQL數據庫。驗證訪問中的整行/記錄

我有模仿驗證訪問中發生的問題。

當用戶進入一個新的記錄,並跳過必填字段,並試圖在訪問保存它顯示一個消息說,有些字段是必須的(驗證規則)

,我的問題是,雖然同場景爲我提供了一個關於缺少字段的SQL異常。儘管我有一個驗證規則。 驗證規則不起作用,除非先移至該字段,然後嘗試從其中退出或保存。但它不起作用,例如1)開始一個新的記錄2)在第一個字段中鍵入一些東西3)按下箭頭保存記錄

我該如何做整個行驗證(pref無需度假編寫代碼)在接下來的屏幕截圖顯示

實例,最後一欄顯示應該有一個價值,但驗證,這是存在的,不是強制執行,除非你專門去到現場,然後鍵入一些錯誤。 正如你所看到的,最後2條記錄沒有經過驗證就被保存了。

enter image description here

回答

1

你需要欣賞Access和SQL Server之間的差異。

  • 訪問是一個單用戶集成的數據庫/用戶界面 - 簡單易用,通常由同一個人簡單編程。
  • SQL Server是一個高功率多用戶數據庫只有那些依賴別的東西來提供用戶界面:Windows窗體項目,一個網站或(在你的情況下)訪問。它期望它的程序員和用戶將是不同的人,他們擁有完全不同的技能,而前者需要保護它不受後者的影響。

你已經從一層到三層解決方案的解決方案,層次爲用戶界面層(Access) - 業務邏輯層(Access/SQL Server?) - 數據層(SQL Server )。數據驗證需要在每個信息的每個層上進行。

我建議你上的多層應用程序閱讀起來。

對於您的特定問題 - 如果選擇的是唯一的「剪報」和「種子」,那麼這應該由一個新表的外鍵關係來控制,而不是使用文本字段之間。您的用戶界面可以使用此功能生成組合框選擇,以防止無效數據進入,即使FK關係發生,FK關係也會拒絕。只需在FK表中添加一條記錄即可適應業務邏輯的變化(例如允許「樹苗」)。

+0

我明白,但驗證設置訪問應該適用於整個行,因爲它適用於單個字段。 我的全部要求是進入一個將其發送到SQL數據庫 – AngelicCore

+0

如果直接訪問該表(這是一個壞主意),則驗證需要在SQL Server中,不能訪問前檢查記錄,驗證一個。 –

+0

我通過表單訪問它。 我現在已經使用VBA代碼完成了它們。奇蹟般有效。 – AngelicCore