2010-05-16 90 views
4

我有一個窗體上的組合框傳遞組合框值到SQL查詢MS ACCESS

我希望組合框的文本被傳遞到查詢。

我的查詢是:

select..from..where something=[Forms]![Enter Data]![comboCup] 

窗體名稱是輸入數據和組合框的名字是combocup。我應該怎麼做:

[Forms]![Enter Data]![comboCup]![text] 

[Forms]![Enter Data]![comboCup]![value] 

+0

說更多的關於源的組合框。是1列還是更多? – Smandoli 2010-05-16 19:42:00

回答

6

您應該使用[Forms]![Enter Data]![comboCup]。

正如@Remou所說的,Access控件的.Text屬性只有在控件具有焦點時纔可用。

的.Value屬性是多餘的,因爲它的所有訪問控制的默認屬性,所以這兩個是相同的:

[Forms]![Enter Data]![comboCup] 
    [Forms]![Enter Data]![comboCup].Value 

(還要注意的是像。文本和.value的屬性由點分隔運營商,而不是爆炸,它描繪的集合)

一個問題是可以值得關注的是,如果你想使用組合框的值的追加查詢的SELECT語句。在這種情況下,建議您將組合框聲明爲已保存查詢中的參數。如果你不這樣做,它可能會導致該行不被插入,而如果你聲明參數,它將解析爲Null,它是引用組合框中的值。

+0

即時通訊對不起,你能解釋一下你的意思是追加查詢嗎? – 2010-05-16 20:03:02

+0

INSERT INTO MyTable(MyField)值([Forms]![Enter Data]![comboCup])。如果將表單控件定義爲參數,那將會更好。 – 2010-05-17 21:19:25

+1

在不知道你在找什麼的情況下,通過Google找到答案並不容易,而搜索當前的Access幫助文件是一場噩夢。這個答案現在在我的搜索谷歌的第一頁是一個證明它是多麼有用。 – 2013-09-17 07:52:48

0

如果你的窗體模塊中工作,你可以做這樣的事情(僅僅是僞代碼):

Event comboCup_afterUpdate() 
    strCup = Me!comboCup 
    strSQL = "SELECT ... etc ... ='" & strCup & "'" 
End Sub 

如果在不同的模塊,然後仍然使用變量如上文所示;然而,在這種情況下,用於識別表單中字段的語法需要很多工作。如果這一切都有道理,我可以告訴你更多。

+2

接下來會發生什麼? – Fionnuala 2010-05-16 19:41:54

+0

此答案與「將組合框的文本傳遞到查詢中」有何關係? – 2010-05-16 19:49:14

2

也沒有。文本僅在控件具有焦點時可用。 comboCup的值是綁定列。確保您的查詢正在查找該值,否則您將需要引用組合的列屬性。

1
Dim comboBoxText As String 

comboBoxText = Me.YourComboboxName.Column(1) 

注意:組合框列1基於陣列