-
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ưa
Tại form 2Mã PHP:Public Function abc()
Forms!form1!cmb1 = Forms!form2!Text2
DoCmd.Close
End Function
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)
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 đó):
-Tại form1 bạn code cho sự kiện On ActivateMã:blnGoi_textbox_AfterUpdate = true
Forms("form1").SetFocus
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