0

我正在尝试在 MS Access 的“代码生成器”部分编写代码,该代码将从记录中的按钮中提取标题。我有一个名为 Main Menu 的表,其中包括字段“ RecordID、Caption 和 Report to Run。我需要这个按钮来根据 MainMenu 表中的标题名称分配它的标题。

前任。按钮 A(记录 ID = 1,标题 = 借款人,要运行的报告 = rptCurrentBorrowers)。

单击我需要此按钮的标题为 = Borrower,通过从按钮 A 的记录中读取标题。我无法在需要从 MainMenu 表中拉出的按钮中专门写下标题。

4

2 回答 2

1

我的猜测是,此表单正在显示来自其他表的记录,并且当您浏览这些记录时,您希望按钮标题根据对 [Main Menu] 表的查找进行更改。

On Current如果是这样,那么在该表单 ( ) 的事件中类似以下的语句Sub Form_Current()可能会起到作用:

me.Button_A.Caption = DLookup("Caption", "Main Menu", "RecordID=" & me.RecordID.Value)
于 2013-03-22T23:24:37.950 回答
1

戈德汤普森指出我在正确的位置。因此,在进行了大量研究之后,我不仅发现了如何实现这种类型的代码,而且发现了它为什么有用。DLookup 只需在数据库中搜索记录或查询,然后根据其标准将信息拉入其脚本位置。我需要为按钮标题实现此功能的原因是,我的最终用户能够从表格中更改按钮的标题,而不是操纵实际代码。这是我完成的 VBA 代码,带有工作按钮。

Private Sub Form_Open(Cancel As Integer)
    rptBorrower.Caption = DLookup("Caption", "MainMenu", "ReportID = 1")
    rptMediaList.Caption = DLookup("Caption", "MainMenu", "ReportID = 2")
    rptPastDue.Caption = DLookup("Caption", "MainMenu", "ReportID = 3")
End Sub


'' This code defines the Borrower Button
Private Sub rptBorrower_Click()
    rptBorrower.Caption = DLookup("Caption", "MainMenu", "ReportID = 1")

    Dim varBorrower As Variant
    varBorrower = DLookup("[ReportToRun]", "MainMenu", "[ReportID] = 1")
    DoCmd.OpenReport varBorrower, acViewReport

    rptBorrower_Click_Exit:
    Exit Sub
End Sub

'' This code is defines the Media List Button

Private Sub rptMediaList_Click()
    rptMediaList.Caption = DLookup("Caption", "MainMenu", "ReportID = 2")

    Dim varMediaList As Variant
    varMediaList = DLookup("[ReportToRun]", "MainMenu", "[ReportID] = 2")
    DoCmd.OpenReport varMediaList, acViewReport

    rptMediaList_Click_Exit:
    Exit Sub
End Sub

'' This code defines the Past Due Report Button

Private Sub rptPastDue_Click()
    rptPastDue.Caption = DLookup("Caption", "MainMenu", "ReportID = 3")

    Dim varPastDue As Variant
    varPastDue = DLookup("[ReportToRun]", "MainMenu", "[ReportID] = 3")
    DoCmd.OpenReport varPastDue, acViewReport

    rptPastDue_Click_Exit:
    Exit Sub
End Sub
于 2013-03-24T08:48:49.350 回答