2012-01-23 69 views
0

我有一個前端Access 2007數據庫使用MySQL ODBC連接器連接到MySql表。當使用ODBC鏈接到MySql時MS Access窗體不刷新

的問題是,如果數據是由另一個用戶在網絡上,或者如果數據被彈出形式改變改變鏈接到一個表的窗體不會刷新其數據。

如果我創建了一個VBA代碼,它檢測到更改,然後刷新表單或查詢,那麼在表格中顯示許多記錄的格式將跳轉到頂部,並且一些用戶將失去對記錄與他們有關的信息,並且必須向下滾動以再次找到它,這並不總是容易的。

以前,我用的是網絡上的唯一的訪問表時,記錄將在所有訪問形式的更新數據是否會有所改變,而且形式也不會回到頂部滾動...

是TI可能如果數據在MySql上更改,使Access窗體autamaticaly刷新其行?

一個可行的辦法是,如果我能得到的形式滾動到更新後的exacly同樣的位置,但不知道這是可以做到...

回答

1

檢查您訪問應用程序的ODBC刷新間隔相似。默認值顯示爲1500秒。也許較低的值將允許您的表單顯示其更新的內容,而無需代碼干預。

Office按鈕 - >訪問選項 - >高級,然後找到附近的選項節結束ODBC刷新間隔。另外,由於您已創建了檢測服務器上數據更改的代碼,因此可以刷新表單作爲響應,您可以爲表單設置書籤,刷新並返回到書籤表單行。

Recordset.Bookmark Property (DAO)

更新:改變窗體的記錄類型來動態集的關鍵是解決這一個。

+0

我剛剛嘗試過ODBC刷新,但有趣的是隻刷新行數據,如果該行滾動出可見屏幕並返回,否則它不會自行完成,即使強硬我也設置刷新到3秒。至於工作的書籤,它會將表單移動到記錄中,並將該記錄放置在屏幕頂部,而不是用戶記住的位置。確切的滾動位置會更好。感謝ODBC設置... – Lumis

+0

@Lumis當用戶從列表中選擇一條記錄時,列表查詢不再是當前查詢 –

+0

您似乎是對的,Dynaset更新表單而無需重新查詢或執行其他任何操作! – Lumis

1

你的第一個問題:「是TI可能使訪問如果數據在MySql上發生變化,它會自動刷新它的行嗎?「顯然是可以回答的:

當Access填充表單時,表單中的數據表示變得完全獨立於數據庫中具有相同主鍵的記錄 - MySQL不知道,您感興趣在任何變化中,所以它不會通知Access(實際上:沒有這樣做的機制)

關於滾動問題:在Access 2000中,通過激活記錄可以將其滾動到視圖中。我懷疑它可能與Access 2007中

+0

這裏的問題是如何使Access刷新其行或整個窗體,而不會在比可見屏幕更長的時間將窗體滾動回頂部? – Lumis

+0

IIRC訣竅是在窗體上執行「重新查詢」操作,然後執行之前激活的同一個記錄。將此粘貼到任何「有趣」的事件 –