• Mở form mới thì đóng form đang mở
  • Mở form mới thì đóng form đang mở

    bằng lăng > 24-08-18, 03:42 PM

    Cho mình hỏi mình tạo menu (menu toolbar) mở form 1 và form 2. Làm thế nào khi mình chọn menu mở form 2 thì đóng form 1 đã mở trước đó và ngược lại. Cám ơn các a/c
  • RE: Mở form mới thì đóng form đang mở

    Cuong Servenet > 24-08-18, 04:02 PM

    chia sẻ cho bạn 1 cách mình hay sửa dụng.

    Mod_share
    [code]
    Public Sub Open_frm(C_frm, O_frm)
        DoCmd.SelectObject acForm, C_frm
        DoCmd.Minimize
        DoCmd.OpenForm O_frm, acNormal
    End Sub

    '-------------------------------------------------------------------------------------
    ' Forms Close
    '-------------------------------------------------------------------------------------
    Public Sub Close_frm(C_frm, O_frm)
        DoCmd.Close acForm, C_frm
        DoCmd.OpenForm O_frm, acNormal
        DoCmd.SelectObject acForm, O_frm
        DoCmd.Restore
    End Sub

    Public Function IsOpen(FN As String) As Integer
        Dim i As Integer
        IsOpen = False
        '
        For i = 0 To Forms.Count - 1
            If Forms(i).name = FN Then
                IsOpen = True
            End If
        Next
    End Function

    ※form_menu
    [code]
    Private Sub NhanVien_Click()
        Call Open_frm("Menu_main", "FRM_NhanVien)
    End Sub

    ※nut dong Form nhan
    Private Sub Dong_Click()
    On Error GoTo Err_Dong_Click
        Dim sForm   As String
            
        If IsOpen("MENU_Master") Then
            sForm = "Menu_Main"
        End If
        '
        Call Close_frm("FRM_NhanVien", sForm)
        
    Exit_Dong_Click:
        Exit Sub
    Err_Dong_Click:
        MsgBox ERR.Number & Chr(13) & Chr(10) & ERR.Description
        Resume Exit_Dong_Click
    End Sub
  • RE: Mở form mới thì đóng form đang mở

    ledangvan > 24-08-18, 04:17 PM

    (24-08-18, 03:42 PM)bằng lăng Đã viết: Cho mình hỏi mình tạo menu (menu toolbar) mở form 1 và form 2. Làm thế nào khi mình chọn menu mở form 2 thì đóng form 1 đã mở trước đó và ngược lại. Cám ơn các a/c

    Cơ bản nó không nằm ở menu mà nó nằm ở trong 2 cái Form bạn ah, khi mở Form1 trong thủ tục On Open hoặc On load ... bạn cho câu lệnh : DoCmd.Close acForm, "Form2"
    Thêm một nút ở Form1 : Mở Form2 trong đó ghi câu lệnh : DoCmd.OpenForm "Form2"
    Ở Form2 bạn ghi : trong thủ tục On Open hoặc On load ... bạn cho câu lệnh : DoCmd.Close acForm, "Form1"

    Thêm một nút ở Form2 : Mở Form1 trong đó ghi câu lệnh : DoCmd.OpenForm "Form1"

    http://www.mediafire.com/file/evt4vc1x3a...7.mdb/file
  • RE: Mở form mới thì đóng form đang mở

    bằng lăng > 27-08-18, 09:02 AM

    Cám ơn Cuong Servenet và ledangvan rất rất nhiều[url=http://thuthuataccess.com/forum/user-3699.html][/url]
  • RE: Mở form mới thì đóng form đang mở

    bằng lăng > 27-08-18, 12:04 PM

    Còn nếu mình viết code cho thoát  form bất kỳ đang mở khi chọn trên menu cho mở 1 form mới thì sao ledangvan ạ, thay vì phải tên form cụ thể
  • RE: Mở form mới thì đóng form đang mở

    ongke0711 > 27-08-18, 01:48 PM

    Dùng Screen.ActiveForm.Name nhé. Nó sẽ lấy tên Form này đang được kích hoạt trên màn hình.

    Docmd.Close acForm, Screen.ActiveForm.Nam
  • RE: Mở form mới thì đóng form đang mở

    bằng lăng > 27-08-18, 03:11 PM

    (27-08-18, 01:48 PM)ongke0711 Đã viết: Dùng Screen.ActiveForm.Name nhé. Nó sẽ lấy tên Form này đang được kích hoạt trên màn hình.

    Docmd.Close acForm, Screen.ActiveForm.Name

    Nhưng nếu chưa có form nào được mở trước đó thì báo lỗi, không thực thi được lệnh Ongke0711 ơi.
  • RE: Mở form mới thì đóng form đang mở

    ongke0711 > 27-08-18, 04:24 PM

    Bạn dùng cái hàm này để đóng tất cả Form đang mở. Trong hàm có thêm tham số tên Form nào không cần đóng.

    Mã PHP:
    Function CloseOpenForms(Optional sUnCloseFormName As String)
       Dim i As Integer
       With Application
    .Forms
           For i 
    = .Count 1 To 0 Step -1
              With 
    .Item(i)
                  If .Name <> sUnCloseFormName Then
                      DoCmd
    .Close acForm, .Name
                  End 
    If
              End With
          Next i
       End With
    End 
    Function 

    Ví dụ: bạn muốn đóng tất cả form đang mở ngoại trừ form tên "frmHome"

    Private Sub cmdDongForm_Click
       CloseOpenForms "frmHome"
    End Sub
  • RE: Mở form mới thì đóng form đang mở

    bằng lăng > 27-08-18, 05:03 PM

    (27-08-18, 04:24 PM)ongke0711 Đã viết: Bạn dùng cái hàm này để đóng tất cả Form đang mở. Trong hàm có thêm tham số tên Form nào không cần đóng.

    Mã PHP:
    Function CloseOpenForms(Optional sUnCloseFormName As String)
       Dim i As Integer
       With Application
    .Forms
           For i 
    = .Count 1 To 0 Step -1
              With 
    .Item(i)
                  If .Name <> sUnCloseFormName Then
                      DoCmd
    .Close acForm, .Name
                  End 
    If
              End With
          Next i
       End With
    End 
    Function 

    Ví dụ: bạn muốn đóng tất cả form đang mở ngoại trừ form tên "frmHome"

    Private Sub cmdDongForm_Click
       CloseOpenForms "frmHome"
    End Sub

    Mã PHP gõ vào chỗ nào và sub gõ vô đâu Ongke0711. PHP mình bó tay chưa nghiên cứu đến, mình đang nghiên cứu code hà 040
  • RE: Mở form mới thì đóng form đang mở

    ongke0711 > 27-08-18, 05:19 PM

    007
    Cái từ "Mã PHP" là cái khung để dán các  code VBA vào cho dễ nhìn trên trang diễn đàn thôi chứ có phải mã PHP trong ứng dụng của bạn đâu.
    - Bạn copy đoạn code của hàm CloseOpenForms() trên vào module bất kỳ hoặc vào Form module mà bạn đang xử lý cũng được.
    - Còn cái Sub là sự kiện nút lệnh nào mà bạn muốn bấm vô để đóng các Form đó.