2011-11-30 127 views
1

我正在研究一個小的小項目,目前只是一個大型項目的測試,但我碰到了一個塊,我找不到解決方案。從表中選擇數據並自動填充字段

我有一個表中的項目列表,他們包含的信息,如項目名稱和價格。我有另一張銷售表。我有一個表格可以讓你選擇一個項目名稱,然而,我希望表格的其餘部分自動填充項目表中的信息。

當項目名稱字段被更改時,我可以使消息框出現,但是,通過搜索,我無法找到一種方法來搜索項目表中的字段值,然後讀取價格值,然後將價格值插入此表單中的字段。

一表 「的項目」: ITEMNAME:文本 價格:通貨

二表 「銷售」: ITEMNAME:文本 價格:通貨 日期:時間/日期

我希望我有如果沒有,我會很好地解釋自己,只是問,我會盡力澄清。

+0

你可以發佈你的兩個表的表定義嗎?這將幫助我們幫助你:) –

+0

更新了我的原始帖子。我的目標是有一個表格和一個顯示其項目名稱的項目表的下拉列表,選擇一個項目名稱將填寫項目名稱和價格在一些領域,所以價格可以稍後改變。謝謝:) –

回答

0

將事件過程(代碼構建器)添加到下拉框的onchange事件中。在設計視圖中右鍵單擊下拉菜單並選擇屬性。然後在屬性窗口中的事件選項卡上單擊更改行上的,然後單擊'...'按鈕。

在此事件的代碼中,您需要查詢數據庫(使用下拉框的索引或ID字段)將項目詳細信息拖到記錄集中。查詢看起來somethign像

"SELECT * FROM Items WHERE ItemID = " & dropdownboxname.value 

那裏有很多的如何做到這一點的網站

,那麼你可以在記錄的必填字段更新形式的各種文本框的例子。再次那裏有很多這樣的例子在網絡上

編輯:在迴應評論下面

你需要做的線沿線的somethign ...

Dim rsItems AS DAO.Recordset 
Set rsItems = CurrentDB.OpenRecordset("SELECT * FROM Items WHERE ItemID = " & dropdownboxname.value) 
If not rsItems.EOF Then 
    textbox1.text = rsItems![fieldname1] 
    textbox2.text = rsItems![fieldname2] 
end if 
Set rsItems = nothing 

讓我知道如果多數民衆贊成任何幫助;-)

+0

現在調查記錄集。如果我遇到任何問題,我會更新。 –

+0

要運行該查詢,我需要連接到表我假設,我已經看了一下,我找不到連接到本地表的方式,我找到了一個例子,但它來自一個從近10年前開始發佈,並沒有奏效。但我發現如何更新文本框。 –

2

看看Northwind datatabase(northwind.mdb)附帶Access。他們有幾個如何基於組合框更改值來更新表單的示例。

另外,您也可以查看Northwind數據庫中的表格設計。一般來說,將產品名稱用作兩個表格中的關鍵字段是個不錯的主意。會發生什麼(最終會發生)是產品名稱會因其中一個產品而發生變化,您必須更新引用該產品名稱的所有表格。

更好的設計是在產品表中使用關鍵字段(我建議使用AutonumberField),然後引用銷售表中的關鍵字段。這樣,如果產品名稱發生更改,您只需在一個位置進行更改,而不是很多。

下面是一個示例表的佈局來說明我的觀點:

表項目:

ItemID (Autonumber - Primary Key on the table) 
ItemName (Text - Name of product) 
Price (Currency) 

表:銷售

ItemID (Integer - Foreign Key to Items.ItemID) 
Quantity (Integer - # of units ordered) 
Price (Currency) 
OrderDate (Date/Time) 
+0

我遺漏了ID字段,它已經在那裏,所以我只是假設爲所有新表設置了ID字段。我來自PHP並使用MySQL。 我無法找到Northwind數據庫,但是我有更新字段現在排序,它只是試圖連接到表來運行SQL。 –

+0

我更新了我的答案,包括一個鏈接,從MS下載Northwind數據庫。 –

+0

謝謝,只是看了一下,這將有助於探索Access的更深入和更深入。自從我使用它以來已經有一段時間了,上次大約是6年前在學校的IT課程。 –

1

這裏大部分答案都張貼了太多的代碼和各種的SQL語句。因此,這些答案正在造成世界的貧困。

最簡單的方法是讓嚮導在窗體上構建一個組合框來選擇給定的項目。這個組合框將因此基於項目表。組合框的第一列將是項目表的PK(自動編號ID)。這個組合框因此將被綁定到銷售中的ItemID列。該向導還會「隱藏」該ID,但是您想要在該組合框中包括其他列,例如價格等。而且您可能應該在該組合框的第二列中顯示項目表中項目的描述。如上所述,您還需要包括價格欄。

因此,你選擇一個項目後,再有汽車馬蒂奇填寫價格欄,使用此代碼:

此代碼放在項目組合框的更新後事件:

Me.Price = me.ItemComboBox.column(2) 

所以,當你選擇一個項目,價格字段將自動填補你。並注意你如何只寫一行代碼。

因此,所有這些都可以使用內置的嚮導和一行代碼完成。

相關問題