• Tạo nhiều nút điều khiển cho nhiều sub form
  • RE: Tạo nhiều nút điều khiển cho nhiều sub form

    cpucloi > 01-07-18, 10:04 PM

    Ko hiểu "link" subform 1 và form2 là sao ta? đưa file và yêu cầu lên để mọi người "mổ" nhé big green
  • RE: Tạo nhiều nút điều khiển cho nhiều sub form

    tranthanhan1962 > 02-07-18, 02:07 AM

    có lẽ bạn pvhung76 chưa nắm chắc các vấn đề về code, event, v.v... Thực ra việc này có thể xử lý bằng nhiều cách và rất đơn giản. Ở đây tôi sẽ đưa ra cụ thể bạn nhớ xử lý đúng properties và đúng cú pháp trong code. Các Name object có thể không giống như của bạn, bạn có thể đổi lại chính xác. Bạn có thể chọn cách nào phù hợp nhất với bạn.
    Cách thứ nhất - Sử dụng một subform dùng chung: Tạo 1 mainform, 2 form lần lượt có name là Form1, Form2, trên mainform tạo 2 nút lệnh có name là MoSub1 để mở subform1 và MoSub2 để mở subform2, vẽ một subform đặt tên là SubForm. Cách này dùng để thay đổi SourceObject của subform theo yêu cầu.
    Code:
    Mã:
    Private Sub MoSub1_Click()
       SubForm.SourceObject = "Form1"
       SubForm.Requery
    End Sub

    Private Sub MoSub2_Click()
       SubForm.SourceObject = "Form2"
       SubForm.Requery
    End Sub
    Cách thứ hai- Sử dụng hai subform: Tạo 1 mainform, 2 form lần lượt có name là Form1, Form2, trên mainform tạo 2 nút lệnh có name là MoSub1 để mở subform1 và MoSub2 để mở subform2, vẽ 2 subform: SubForm1 có SourceObject = Form1, SubForm2 có SourceObject = Form2, điều chỉnh cho 2 subform trùng khích lên nhau. Cách này để ẩn hiện subform theo yêu cầu
    Code:
    Mã:
    Private Sub MoSub1_Click()
       SubForm1.Visible = True
       SubForm2.Visible = False
    End Sub

    Private Sub MoSub2_Click()
       SubForm1.Visible = False
       SubForm2.Visible = True
    End Sub
    Cách thứ ba- Sử dụng hai subform giống như cách thứ hai: Tạo 1 mainform, 2 form lần lượt có name là Form1, Form2, trên mainform tạo 2 nút lệnh có name là MoSub1 để mở subform1 và MoSub2 để mở subform2, vẽ 2 subform: SubForm1 có SourceObject = Form1, SubForm2 có SourceObject = Form2, điều chỉnh cho 2 subform trùng khích lên nhau. Cách này không làm ẩn subform mà mở rộng subform cần sử dụng theo yêu cầu và thu nhỏ khích thước subform không cần dùng nhỏ lại. Thông thường người ta không cho nó về diện tích 0, nhưng theo chủ đề này tôi mở rộng subform cần dùng và thu nhỏ subform còn lại về 0. Cách này cần sử dụng kích thước các subform.
    Mã:
    Private Sub MoSub1_Click()
       SubForm1.Height = 5000
       SubForm1.Width = 15000
       SubForm2.Height = 0
       SubForm2.Width = 0
       SubForm1.SetFocus
    End Sub

    Private Sub MoSub2_Click()
       SubForm1.Height = 0
       SubForm1.Width = 0
       SubForm2.Height = 5000
       SubForm2.Width = 15000
       SubForm2.SetFocus
    End Sub
  • RE: Tạo nhiều nút điều khiển cho nhiều sub form

    Cuong Servenet > 17-07-18, 12:24 PM

    mình xin chia sẻ cách làm của mình và cho bạn 1 đoạn code , bạn có thể dựa vào đó làm theo nhé.
    phương pháp này cực kì hiệu quả khi dùng chung 1 mainforms mà các subforms khác nhau.


    đoạn code này mình viết cho 1 hệ thống mà mình làm, giờ mình tóm gọn gợi ý bạn có thể dựa theo vào làm nhé.

    'module

    Public Sub Open_FRM_Args(ByVal C_FRM As String, ByVal O_frm As String, O_Args As String)
        '2018/02/28 Nguyen Cao Cuong
        If IsOpen(C_FRM) = True Then
            DoCmd.SelectObject acForm, C_FRM
            DoCmd.Minimize
        End If
       
        DoCmd.OpenForm O_frm, acNormal, , , , , O_Args
    End Sub
    'mainfomrs
    Private Sub open()
    ★khi mo forms thi cai dat su hien thi ten TieuDe trong sub bang cach dat ten 
    call F_SUB
    end sub

    Private Sub abc_Click()
        Call Open_FRM_Args(Me.name, "FRM_MainForms", "abc")
    End Sub

    Private Sub deg_Click()
        Call Open_FRM_Args(Me.name, "FRM_MainForms", "deg")
    End Sub

    Private Sub SubFormRequery()
        If Me!TieuDe = "abc" Then
            Call Form_FRM_MainForms_abc.FormRequery
        ElseIf Me!TieuDe = "deg" Then
            Call FRM_MainForms_deg.FormRequery
        End If
    End Sub

    Private Sub F_SUB()
        If Nz(Me!Table, "") = "" Then
            MsgBox "mo sub ko dung, moi lai。"
            Me!ten_formssub.SourceObject = ""
        ElseIf Nz(Me!Table, "") <> "" Then
            Me!ten_formssub.SourceObject = "FRM_MainForms_" & Me!Table
        End If
        Me!Tieude = Nz(Me!Table, "") & "nhap"
    End Sub