2011-05-06 122 views
2

我有一個訪問數據庫保存在網絡位置,以便在公司工作的600名員工中的任何一位都可以訪問數據庫。當他們打開主窗體時,它會運行一個生成表查詢。但是,MS Access中有一個彈出窗口,聲明「您即將運行將修改表中數據的生成表查詢,是否要繼續?」訪問確認消息

如果窗體沒有按下是,窗體將無法正常運行,所以我想禁止此提示,以便它不詢問它們。我從選項>編輯/查找>確認菜單中更改了設置,以便它不顯示此確認。但是,這顯然是一個本地設置,所以爲了執行此操作,每個用戶都必須更改這些設置。

是否有任何其他可能的解決方案來抑制確認信息?

回答

2

是的,從VBA:

DoCmd.ShowWarnings False   ' Don't show warning popup 
DoCmd.RunQuery "MyMakeTableQuery" ' Run the make table query silently 
DoCmd.ShowWarnings True    ' Turn warnings back on 
+0

我發現它是DoCmd.SetWarnings不是DoCmd.ShowWarnings – dangalg 2017-11-20 05:17:31

2

使用DoCmd.SetWarnings False從彈出阻止消息框。但是,請注意,此操作對Access應用程序來說是全球性的。必須根據需要重新啓用DoCmd.SetWarnings True的警告。

0

你還可以嘗試:

Application.SetOption "Confirm Action Queries", False 

如果您還沒有準備好,你可能希望有一個隱藏的表單打開每次打開數據庫時。您可以使用該窗體的OnOpen事件來運行上面的啓動代碼。

3

有這麼多錯在這裏,我幾乎不知道從哪裏開始:

  1. 你不可能有600人使用的Access數據庫。

  2. 如果不止一個人打開它並運行MakeTable,它將會中斷,因爲您會進行兩個用戶之間發生碰撞的結構更改。

  3. 關閉錯誤通知是一個巨大的錯誤。你不知道你可能最終忽略哪些錯誤。

  4. 關閉SetWarnings意味着您可以從SQL DML語句中獲得不一致的更新,然後您無法知道哪些數據已更新。

  5. MakeTable查詢不屬於任何生產應用程序。相反,創建一個持久表,然後將其清理出來並添加新記錄。但它不屬於你的主應用程序 - 這是臨時數據的定義,因爲它不斷被替換,所以它需要在一個單獨的臨時數據庫中。

  6. 您可能希望所有用戶都擁有自己的臨時數據庫,以便一次打開多個應用程序時不會發生衝突。

+1

那麼說。我想補充一點,通過打開表單的行爲查詢讓我對該應用程序的設計高度懷疑! – 2011-05-07 22:11:12

+0

第一點有一點輕蔑:你不可能有一個由600人*一次使用的Access數據庫*。如果您可以確保在任何給定時間只有一小部分登錄(例如由於輪班工作),那麼總共可以有600個用戶。與其餘的人沒有任何爭執。 – RolandTumble 2011-05-09 18:07:55

+0

如果有600人理論上被允許使用數據庫,我會非常擔憂。我的猜測是,這個數字被大大誇大了,不管它是否意圖代表非同時用戶人口。 – 2011-05-12 00:41:17