2012-05-07 97 views
0

這很複雜。我對Access並不太熟悉,而且我是一名程序員(意思是說,我可能會讓自己變得更難,而且看不到「簡單」的答案)。存在的問題:Access 2007,VBA,父子表單,記錄集不可更新

讓我們考慮一下(例子): 我們有一個庫數據庫的東西。我有一本書的特定副本。我的書可以有幾種狀態:檢查出來,在書架上,銷燬,氣味怪異/粘滯/佣金....我需要在Access中有兩種形式。一個用於我的書的基本信息,一個用於實際更新狀態。狀態變化時,需要記錄大量的數據,因此需要單獨的表單。這本書的形式本身只包含基本信息和租賃歷史的小型子表格;該書的形式需要包含當前狀態。我的實際狀態表有一個statusid,bookid,時間戳。

現在......因爲我不知道Access會遇到問題......我將我的書籍和狀態表單解開,並從VBA中填充了recorset/query。但是當我試圖連接兩者時,它對我大吼一聲; 「沒有約束」它告訴我。我認爲這很好,並將查詢移到實際的前端訪問查詢部分(左側)和vba外,並適當地綁定我的表單。但現在。它說我的記錄集不可更新。我假設因爲我使用連接和嵌套的選擇語句等來獲得本書的當前狀態。我只需要能夠修改這些文本字段,並且我可以自己寫入插入/更新。我在網上發現了一些表示要創建表的東西,但我也讀過這個東西在多用戶環境下不起作用。當書籍窗體打開並且用戶單擊一個按鈕來更改我的書籍的狀態以及保存/關閉該狀態窗體時,我需要能夠重新查詢書籍窗體以顯示更新的狀態。

那麼......我該怎麼辦?

+0

哦。我只需要書的形式向書表及任何額外的數據(如當前狀態)綁定表中沒有獲得通過一個VBA查詢?和處理通過Form_Current upating它()? –

回答

0

如果我理解正確,你的問題是,你必須在MainForm的一個複雜的查詢,並希望打開第二個表單以更新查詢的一個基礎表,然後想改變在新打開的窗體當前記錄和保存它,然後重新查詢原始表單? 我知道你是一個程序員,所以最通用的方式做到這一點,似乎對我說: 按鈕打開與正確的記錄模式作案的新形式的MainForm(即確保原有形式的代碼之後執行休息模態窗體關閉),做你的魔術模式窗體,然後重新查詢MainForm的。

嘗試這樣:

Private Sub myButton_Click() 
    DoCmd.OpenForm "myEditForm", acNormal, , ID = 4, acFormEdit, acDialog 
    me.requery 
End Sub 
相關問題