在另一种形式运行一个过程

问题描述 投票:3回答:3

我有一个运行一个程序,在Outlook中创建一个电子邮件,附上PDF到它的形式。它的记录源是一个不可更新的查询。该程序运行正常。我现在想从另一种形式运行该程序,但我不断收到一条消息说,它不能这样做,因为记录源是不可更新。在新的形式的编码是:

Private Sub CourseCert_Click()
On Error GoTo CourseCert_Click_Err

DoCmd.OpenForm "frmCourseDetailsDone", acNormal, "", "[StaffLookup]=" & [StaffLookup], , acNormal
Run Forms!frmCourseDetailsDone.Command23_Click
DoCmd.Close acForm, "frmCourseDetailsDone"

CourseCert_Click_Exit:
    Exit Sub

CourseCert_Click_Err:
    MsgBox Error$
    Resume CourseCert_Click_Exit

End Sub

由于它工作在旧的形式我不明白为什么它不会在新形式的合作。

ms-access
3个回答
2
投票

而不是使用

Forms!frmCourseDetailsDone.Command23_Click

我会使代码Command23_Click一个公共过程,然后调用程序,而不是直接引用一个按钮,另一种形式。

Public sub Command23_Click() 

Call Command23_Click

0
投票

在窗体调用子

Form_frmName.PublicSubName(anyVars)

例如 -

Form_NewClient.SetID()

从另一个模块调用子

Call MyPublicSub

例如 -

Call SetID()

0
投票

我不得不做这样得到它的工作形式为公共职能没有工作

'--- In Form Materials
Private Sub Calc_Click()
    Select Case Me.CATEGORY
    Case "Ply"
        On Error Resume Next
        'CurrentDb.Execute Forms![CASE].GetPlyQty
        Run Forms![CASE].GetPlyQty
        Me.Qty = PlyQty '(PlyQty is in Globals module)
End Select
End Sub

'--- In Globals module
Public PlyQty As Double


'--- In form "Case"
Public Sub GetPlyQty()
    Dim paintarea As Double
    PlyQty = CalcPly(paintarea)
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.