2014-12-22 42 views
-1

我創建了一個形式與形式兩個TextBox.The財產記錄源和文本的一個控件訪問有一個初始屬性設置。我在vba Access中有一個文本框。當我設置ControlSource屬性使用設計它的作品。但如果我嘗試這樣做編程它不

當用戶點擊位於同一窗體上的一個按鈕時,形式以及一個文本框的控件屬性的記錄源屬性應該改變到一個不同的源。

我通過將其設定爲初始屬性測試控件的源(當按鈕點擊應該改變的人)。但是,當我試圖通過編程的方式來實現時,它不起作用。任何幫助,將不勝感激。使用Access 2000 IM中的代碼如下所示:

代碼隱藏

Private Sub Dry_Type_Click() 
    Me.RecordSource = "Engineering Schedule2" 
    Dim strcatnum As String 
    Dim param As String 
    strcatnum = "5203" 
    param = "Catalog Number Log " & strcatnum 

    catnumbox.ControlSource = "=DLookup(""[Catalog Number]""," & param & ",""[Sequence No]="" & [Sequence Number])" 
End Sub 
+0

可能有一些自動生成的代碼,設計師把在另一個地方。我建議您嘗試查找該代碼並確保您正在執行類似的操作。 – ryanyuyu

回答

1

catnumbox.ControlSource = 「=使用DLookup(」 「[目錄號]」 「 」「 目錄號日誌5203 」「, 」「[序列否] = 」「 & [序列號])」

+0

感謝您的幫助!如果數字「5203」必須多次更改,該怎麼辦?我正在嘗試暗淡的catnum,catnum =「5204」。然後........「目錄號日誌」和catnum「...但它給了我一個錯誤。凸輪你幫我那部分請 – CodeEngine

+1

你需要在一個引用的字符串中使用雙引號:VBA在結果中將它作爲一個單引號:在外部構建一個可識別部分比較容易:param =「Catalog Number Log」&catnum,然後使用參數字符串:「= DLookup(」「[Catalog Number]」「, param,「」[序列號] =「」和[序列號])「 –

+0

非常感謝你的幫助!非常好的答案! – CodeEngine

1

通過VBA設置時,大多數事件不會被觸發。您應該將要求放入程序中,並在任何所需的事件或程序中調用該程序。

1

您不需要在運行時更改ControlSource。您可以在設計時做到這一切,沒有任何控制源以外的VBA,也無需將任何報價翻倍。

假設你5203來自一個文本框txtLogNum。它可以是綁定的或不綁定的。

在設計時,對catnumbox設置控件到:

=DLookup("[Catalog Number]", 
     "Catalog Number Log " & [txtLogNum], 
     "[Sequence No]=" & [Sequence Number]) 

現在,每當[序號]或[txtLogNum]變化,Access將重新評估catnumbox。

編輯 - 又如ADDED

如果你不想catnumbox改變,直到用戶點擊[乾式],然後在設計時離開控件空白。在ControlSource中使用表達式的主要原因是它可以自動重新計算。

這VBA還解決您的評論對兩個組合框。

Private Sub Dry_Type_Click() 
Dim LogTableName As String 
Me.RecordSource = "Engineering Schedule2" 
LogTableName = "Catalog Number Log " & _ 
       [cboLogNumPart1] & _ 
       [cboLogNumPart2] 
catnumbox.Value = DLookup("[Catalog Number]", LogTableName, _ 
          "[Sequence No]=" & [Sequence Number]) 
End Sub 

這是什麼不會做的是觸發任何事件或基於catnumbox價值的任何重新計算。

+0

問題是我最初設置了一個@ @Tom的不同表格「目錄NUMBER日誌」的控制源爲貓號碼3400然後我會有兩個組合框。數字52,53,54,55的第一個組合框。這些數字中的每一個都可以與數字爲0-49的第二個組合框組合。示例5201 ... 5049。 5301 ... 5349 etc ... – CodeEngine

+0

如果您不希望catnumbox更新,直到用戶單擊[Dry Type],然後將控制源設置爲空白,並直接在VBA中直接計算其新值,而無需額外的複雜度。我將把代碼放入我的答案中進行編輯。 –

相關問題