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

由于它以旧形式工作,我不明白为什么它不能从新形式工作。

4

3 回答 3

2

而不是使用

Forms!frmCourseDetailsDone.Command23_Click

我会将代码 Command23_Click 设为公共过程,然后直接调用该过程,而不是引用另一种形式的按钮。

Public sub Command23_Click() 

Call Command23_Click
于 2013-09-24T18:17:58.373 回答
1

在表单中调用 sub

Form_frmName.PublicSubName(anyVars)

例子 -

Form_NewClient.SetID()

从另一个模块调用 Sub

Call MyPublicSub

例子 -

Call SetID()
于 2016-10-22T17:14:32.480 回答
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
于 2016-10-29T13:23:50.153 回答