• Gọi thực hiện 1 Private Sub trên Form này từ Form khác.
  • Gọi thực hiện 1 Private Sub trên Form này từ Form khác.

    Minh Tiên > 23-01-14, 12:31 PM

    Nhờ các ACE Pro chỉ giáo cách gọi thực hiện 1 Private Sub hoặc Function trên form này từ 1 Form khác. Cụ thể:

    1. tmtien261 có: 2 Form (form1, form2).
    2. tmtien261 muốn: Khi 2 form đều đang mở. Click 1 nút trên Form2 thì form2 đóng, sau đó gọi thực hiện lệnh textbox_AfterUpdate trên Form1.

    tmtien261 đã nhờ "Bác Google" nhưng vẫn ko làm được.
    Xin các Pro chỉ giúp !
    Thanks !
  • RE: Gọi thực hiện 1 Private Sub trên Form này từ Form khác.

    ttm20062008 > 23-01-14, 02:28 PM

    Giả sử Form 2 có text box tên Text2, Form 1 có combobox tên cmb1.
    Code nút button form 2
    Mã PHP:
    Private Sub Command4_Click()
    Forms!form1!cmb1 Me.Text2
    DoCmd
    .Close
    End Sub 
  • RE: Gọi thực hiện 1 Private Sub trên Form này từ Form khác.

    Minh Tiên > 23-01-14, 04:54 PM

    Chưa đúng yêu cầu bạn ơi !
    Ý mình là từ form 2 yêu cầu thực thị 1 Function hoặc Sub trên Form1 (VD như: gọi Sub textbox_AfterUpdate) chứ ko phải gán giá trị cho các đối tượng trên Form1 !
    Thanks bạn đã quan tâm !
  • RE: Gọi thực hiện 1 Private Sub trên Form này từ Form khác.

    ttm20062008 > 23-01-14, 05:43 PM

    Cách của em thế này không biết đúng chưa007
    Mã PHP:
    Public Function abc()
    Forms!form1!cmb1 Forms!form2!Text2
    DoCmd
    .Close
    End 
    Function 
    Tại form 2
    Mã PHP:
    Private Sub Command4_Click()
    Call abc
    End Sub 
  • RE: Gọi thực hiện 1 Private Sub trên Form này từ Form khác.

    MTNQ > 24-01-14, 01:32 AM

    (23-01-14, 12:31 PM)tmtien261 Đã viết: Nhờ các ACE Pro chỉ giáo cách gọi thực hiện 1 Private Sub hoặc Function trên form này từ 1 Form khác. Cụ thể:

    1. tmtien261 có: 2 Form (form1, form2).
    2. tmtien261 muốn: Khi 2 form đều đang mở. Click 1 nút trên Form2 thì form2 đóng, sau đó gọi thực hiện lệnh textbox_AfterUpdate trên Form1.

    tmtien261 đã nhờ "Bác Google" nhưng vẫn ko làm được.
    Xin các Pro chỉ giúp !
    Thanks !

    1/Thay Private bằng Public
    -VD: Sửa Private Sub cmdLuu_Click() bằng Public Sub cmdLuu_Click()
    2/Gọi thủ tục cmdLuu_Click() trên form "frmXuathangban" theo cú pháp như sau:
    Mã:
    Forms("frmXuathangban").cmdLuu_Click
  • RE: Gọi thực hiện 1 Private Sub trên Form này từ Form khác.

    Minh Tiên > 24-01-14, 11:58 AM

    Đúng như "MTNQ" hướng dẫn thay đổi từ Private thành Public là OK !
    Nhưng còn Private thì sao bạn ? Có thực hiện được ko ?
    Thanks !
  • RE: Gọi thực hiện 1 Private Sub trên Form này từ Form khác.

    Xuân Thanh > 24-01-14, 01:18 PM

    1/ Private Sub chỉ thực hiện cho form hiện hành
    2/ Public hoặc Function có thể gọi lệnh từ bất cứ đâu trong CSDL
    Bạn nên tìm hiểu kỹ hơn về hàm và thủ tục nhé
    Thân mến
  • RE: Gọi thực hiện 1 Private Sub trên Form này từ Form khác.

    MTNQ > 24-01-14, 03:10 PM

    (24-01-14, 11:58 AM)tmtien261 Đã viết: Nhưng còn Private thì sao bạn ? Có thực hiện được ko ?
    Thanks !

    Đúng là tmtien261 chính hiệu (cứ thích hỏi đố mọi người) 015
    Câu trả lời là: được! (nhưng chỉ đưa ra để phân tích và tham khảo thui nhé!)

    1/ phân tích:
    Khi khai báo Private cho hàm ( thủ tục) thì hàm đó chỉ sử dụng cục bộ trong modul mà thui, các modul khác không thể "nhìn thấy" hay sử dụng được

    Như vậy để gọi một thủ tục được khai báo Private trong một form nào đó thì trước tiên ta phải mở form đó, đưa focus vào form, sử dụng thủ tục sự kiện trong nội bộ form để gọi các thủ tục khác trong cùng form

    2/ Thực hiện:
    -Khai báo một biến toàn cục Public blnGoi_textbox_AfterUpdate As boolean ở đầu một Modul
    -Tại form2 bạn viết lệnh (cho nút nhấn hay chèn trong một thủ tục nào đó):
    Mã:
    blnGoi_textbox_AfterUpdate = true
    Forms("form1").SetFocus
    -Tại form1 bạn code cho sự kiện On Activate

    Mã:
    Private Sub Form_Activate()
        If blnGoi_textbox_AfterUpdate Then
            blnGoi_textbox_AfterUpdate = False
            Call textbox_AfterUpdate
        End If
        
    End Sub
  • RE: Gọi thực hiện 1 Private Sub trên Form này từ Form khác.

    MTNQ > 24-01-14, 10:13 PM

    Lúc trưa đang ở cơ quan nên không có thời gian để viết nhiều
    Mình tiếp tục nhé:
    Cách 2:

    1/ viết một hàm để gọi các thủ tục trong form (Hàm này viết trong form1)
    VD:
    Mã:
    Function Goithutuctulenhngoaiform1()  
                Call Text0_AfterUpdate        
    End Function

    2/Gọi hàm này từ form khác
    Mã:
    Private Sub Command0_Click()
        If CurrentProject.AllForms("form1").IsLoaded = False Then
            DoCmd.OpenForm "form1", acViewNormal
        End If
        Forms("form1").Goithutuctulenhngoaiform1
        
    End Sub

    Demo call Private sub from another form
  • RE: Gọi thực hiện 1 Private Sub trên Form này từ Form khác.

    Xuân Thanh > 24-01-14, 10:43 PM

    Khi chuyển sang Function thì có thể gọi từ bắt cứ đâu
    Vì thế lại nói lại ý kiến của bạn tmtien261 ở topic khác : nên tập viết trong modul, classmodul để dùng cho công việc của mình
    Thân mến