maidinhdan > 02-06-20, 05:22 PM
![[Hình: hinh6.png]](https://sites.google.com/site/thuthuataccess2003/home/demo-hinh/hinh6.png)
![[Hình: hinh7.png]](https://sites.google.com/site/thuthuataccess2003/home/demo-hinh/hinh7.png)
Noname > 30-06-20, 04:28 PM
maidinhdan > 13-11-20, 08:51 PM
![[Hình: hinh6.png]](https://sites.google.com/site/thuthuataccess2003/home/demo-hinh/hinh6.png)
![[Hình: hinh7.png]](https://sites.google.com/site/thuthuataccess2003/home/demo-hinh/hinh7.png) 
Xuân Thanh > 14-11-20, 11:06 AM
maidinhdan > 14-11-20, 02:47 PM
(14-11-20, 11:06 AM)Xuân Thanh Đã viết: @maidinhdan
Lưu đồ chính là một thuật toán logic để giải bài toán. Đã là thuật toán logic thì chỉ có hai trường hợp là đúng và sai. Nếu đk đặt ra là đúng thì hướng đi của lưu đồ là hướng A và ngược lại sẽ là hướng B. Nên chăng Dân chỉnh lý lại một chút trong lưu đồ này được không?
'    --------------------------------------------------------------------------------------------------------
    '    Thuoc Modules/Class: [Modules]: modKhaibaoMangLAN
    '    Ten ham/thu tuc    : ChonVBMangLAN
    '    Tao tren may PC    : DAN_ACERV5
    '    Author/ Tac gia    : maidinhdan@gmail.com 
    '    Ngay tao          : 20/10/2020 12:08:11 AM
    '    Parameters/Tham so : 
    '    Cu phap/ Purpose  : Phải chạy hàm NaptblThongtinketnoi() trước
    '    Pham vi ap dung    : Copy File lên máy chủ qua LAN
    '    --------------------------------------------------------------------------------------------------------
    Public Function ChonVBMangLAN(ByVal TenFile As String, ByVal NgaycuaVB As Date, ByVal ChonVungBKDenDi As Byte) As String
        ChonVBMangLAN = ""
        Try
            '1. Chọn File: Nếu bỏ chọn thì Thoát
            Dim Vitrichon As String = ChonFile()
            If Vitrichon = "" Then Exit Function ' Neu khong chon thi ket thuc
            Dim Nam As String = Year(NgaycuaVB)
            Dim DuoiFile As String = IO.Path.GetExtension(Vitrichon) 'Lay Kieu file
            Dim TenvaDuoiFile As String = TenFile & DuoiFile
            Dim TMLuu As String
            If ChonVungBKDenDi = 1 Then
                TMLuu = "CONGVAN_Den\" & Nam
            Else
                TMLuu = "CONGVAN_Di\" & Nam
            End If
            'Kiem tra file DataHeThongVBDT.mdb de xac dinh ban dang dung tren may Server/Client
            Dim LinkData As String = pbTenFolderNoiCaiDat & "Data\DataHeThongVBDT.mdb"        ' Application.StartupPath & "\Danh_muc_ho_so\Data\DataHeThongVBDT.mdb"
            If TestFile(LinkData) = True Then
                LinkData = pbTenFolderNoiCaiDat & TMLuu        '=>D:\VBDT2.0\Danh_muc_ho_so\CONGVAN_Den\2017
            Else
                LinkData = IPChiase() & TMLuu                '=>\\192.168.1.4\VBDT2.0$\CONGVAN_Den\2017
                Dim OnOffIP As String = TestIP(pbIPMayChu)
                '2. Kiểm tra IP máy chủ có đang mở không? Hàm này ở đây để phòng Trường hợp, máy bạn đang dùng là máy chủ thì không cần kiểm tra IP mà mấy thẳng LinkData: Application.StartupPath & "\Danh_muc_ho_so\Data\DataHeThongVBDT.mdb
                If OnOffIP = False Then
                    MessageBox.Show("Máy chủ đã tắt: File Chọn vẫn chưa thể cập nhật", "Thông báo: Dừng lệnh Chọn File", MessageBoxButtons.OK, MessageBoxIcon.Stop)
                    Exit Function 'Ngung thuc hien viec chep File len may chu do may chu dang tat
                End If
            End If
            Dim LinkFileMoi As String = LinkData & "\" & TenvaDuoiFile
            '3. Kiểm tra File Trên máy chủ có tồn tại không?
            If TestFile(LinkFileMoi) = True Then
                'Xác nhận ghi đè không?
                Select Case MessageBox.Show("File đang tồn tại trên Máy chủ: Bạn có muốn ghi đè không?" & vbCrLf & vbCrLf & "Yes: Ghi đè" & vbCrLf & "No: Giữ nguyên File củ: và Xem File Củ này" & vbCrLf & "CanCel: Mở thư mục chứa File này", "Xác nhận ghi đè File trên máy chủ", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
                    Case DialogResult.Yes
                        If CopyFileVBDT(Vitrichon, LinkFileMoi) = False Then Exit Function
                    Case DialogResult.No
                        Process.Start(LinkFileMoi)
                        Exit Function
                    Case DialogResult.Cancel
                        MoThuMuc(LinkData)
                        Exit Function
                End Select
            Else
                '4. Kiểm tra thư mục trên máy chủ có tồn tại không?
                If TestFolder(LinkData) = False Then TaoThuMuc(LinkData)
                If CopyFileVBDT(Vitrichon, LinkFileMoi) = False Then Exit Function ' Sao chep file tu Vitrichon File vao vung luu chinh tren May chu ( vùng Shared Folder VBDT3.0$)
                'Tao ra file QR code
                'GetQRCode(LinkFileMoi, LinkData & "\" & TenFile & ".png")
            End If
            '2.___________Tao thu muc va Copy file vao vung luu Du phong cua may dang chon file
            Dim NamBK As String = TMBackup(ChonVungBKDenDi) & Nam
            If TestFolder(NamBK) = False Then TaoThuMuc(NamBK)
            ' Sao chep file vao vung Backup
            CopyFileVBDT(Vitrichon, NamBK & "\" & TenvaDuoiFile)
            '    ChonVBMangLan = VungCaiDatServer & TMLuu & "\" & TenvaDuoiFile
            ChonVBMangLAN = TenvaDuoiFile  ' Chi lay ten + duoi file; khong lay duong dan day du. Muc dich de tiet kiem du lieu
            'Tao ra file QR code
            '    GetQRCode LinkData & "\" & TenvaDuoiFile, NamBK & "\" & TenFile & ".png"
        Catch ex As Exception
            MessageBox.Show("Test lại kết nối" & vbCrLf & ex.ToString, "Lỗi hàm ChonVBMangLAN", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Function
    Public Sub XemVBmangLAN(ByVal TenFileVaDuoiFile As String, ByVal NgaycuaVB As Date, ByVal ChonVungBKDenDi As Byte)
        If TenFileVaDuoiFile = "" Then
            MessageBox.Show("Máy chủ chưa cập nhật File này.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End If
        Try
            Dim Nam As String = Year(NgaycuaVB)
            Dim TMLuu As String
            If ChonVungBKDenDi = 1 Then
                TMLuu = "CONGVAN_Den\" & Nam
            Else
                TMLuu = "CONGVAN_Di\" & Nam
            End If
            Dim ThuMucLuuDuPhong As String = TMBackup(ChonVungBKDenDi) & Nam
            Dim LinkIPChiaSe As String = IPChiase() & TMLuu
            Dim LinkfileMayChu As String = LinkIPChiaSe & "\" & TenFileVaDuoiFile
            Dim LinkfileLuuDuPhong = ThuMucLuuDuPhong & "\" & TenFileVaDuoiFile  'Link file
            Dim LinkFileLuuVungChinh As String = pbTenFolderNoiCaiDat & TMLuu & "\" & TenFileVaDuoiFile        '=>D:\VBDT2.0\Danh_muc_ho_so\CONGVAN_Den\2017
            Dim LinkData As String = pbTenFolderNoiCaiDat & "Data\DataHeThongVBDT.mdb"        ' Application.StartupPath & "\Danh_muc_ho_so\Data\DataHeThongVBDT.mdb"
            Dim maychu As Boolean = TestFile(LinkData)
            '1. Kiểm tra trên máy tôi (tại thư mục dự phòng) có File chưa?
            If TestFile(LinkfileLuuDuPhong) = True Then
                If maychu = True Then
                    If TestFile(LinkFileLuuVungChinh) = False Then CopyFileVBDT(LinkfileLuuDuPhong, LinkFileLuuVungChinh) 'Nếu File vùng chính kho6nng tồn tại mở xem Đoạn viết thêm phòng hờ máy đang dùng là máy chủ mà bị mất file
                End If
                Process.Start(LinkfileLuuDuPhong)  ' Mở xem và kết thúc lệnh: Xem File bằng Link dự phòng của bạn chứ không xem trực tiếp trên máy chủ
                Exit Sub
            Else '2. Dò tìm Ip trên máy chủ tắt hay mở
                '_____________________________________________Đoạn viết thêm phòng hờ máy đang dùng là máy chủ mà bị mất file_________________________________________
                If maychu = True Then
                    If TestFile(LinkFileLuuVungChinh) = True Then  'Nếu File vùng chính tồn tại mở xem
                        If TestFolder(ThuMucLuuDuPhong) = False Then TaoThuMuc(ThuMucLuuDuPhong)
                        CopyFileVBDT(LinkFileLuuVungChinh, LinkfileLuuDuPhong)
                        Process.Start(LinkFileLuuVungChinh) 'xem file qua thư mục dự phòng
                        Exit Sub
                    Else
                        'Check tất cả đều không có thì máy chủ chưa có File này, cần cập nhật
                        MessageBox.Show("Máy chủ chưa cập nhật File này.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)
                        Exit Sub
                    End If
                    '_____________________________________________Đoạn viết thêm phòng hờ máy đang dùng là máy chủ mà bị mất file_____________________________________
                Else    ' Đoạn dưới dành cho máy con mở xem File trên máy chủ_____________________________________________________________________________________________
                    If TestIP(pbIPMayChu) = False Then  'Đang tắt/Máy bạn không có Internet
                        MessageBox.Show("Không thể xem File trên máy chủ, xin vui lòng kiểm tra lại kết nối", "Thông báo: Máy chủ đã tắt/Máy bạn không có Internet", MessageBoxButtons.OK, MessageBoxIcon.Error)
                        Exit Sub
                    Else ' IP máy chủ Đang mở
                        '3.Kiểm tra File máy chủ có không?
                        If TestFile(LinkfileMayChu) = False Then 'Không có File
                            MessageBox.Show("Máy chủ chưa cập nhật File này.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)
                            Exit Sub
                        Else    ' Có File
                            '4. Kiểm tra thư mục dự phòng bạn có chưa?
                            If TestFolder(ThuMucLuuDuPhong) = False Then TaoThuMuc(ThuMucLuuDuPhong) 'Chưa có thư mục thì tạo
                            '5. Copy file từ máy chủ về
                            CopyFileVBDT(LinkfileMayChu, ThuMucLuuDuPhong)
                            '6. Xem File bằng Link dự phòng của bạn chứ không xem trực tiếp trên máy chủ
                            Process.Start(LinkfileLuuDuPhong) 'xem file qua thư mục dự phòng
                        End If
                    End If
                End If
            End If
        Catch ex As Exception
            MessageBox.Show("Test lại kết nối" & vbCrLf & ex.ToString, "Lỗi hàm XemVBMangLAN", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub 
Public Function XemVB(TenvaDuoiFileLuu As String, NgaycuaVB As Date, ChonVungBKDenDi As Byte)
On Error GoTo Loi
Dim DiaChiFilebangIP As String
Dim DiaChiBackupFile  As String
Dim DiaChiFileServer As String
Dim Nam As String, NamBK As String
Dim DiDen As String
    Nam = Year(NgaycuaVB)
    If ChonVungBKDenDi = 1 Then
        DiDen = "CONGVAN_DEN\" & Nam & "\" & TenvaDuoiFileLuu
    Else
        DiDen = "CONGVAN_DI\" & Nam & "\" & TenvaDuoiFileLuu
    End If
If TenvaDuoiFileLuu > "" Then
    DiaChiFilebangIP = IPChiase() & DiDen
    NamBK = TMBackup(ChonVungBKDenDi) & Nam
    DiaChiBackupFile = NamBK & "\" & TenvaDuoiFileLuu
    DiaChiFileServer = VungCaiDat & DiDen
    '1----------Kiem tra file co o tren DiachiBackupFile chua?
        Do While Dir(DiaChiBackupFile) = ""    'Thuc hien den khi co file luu vao vung DiachiBackupFile
        'Nhanh phu: Tao thu muc cho vung Backup, de copy ve luu vung nay
                    If Dir(NamBK, vbDirectory) = "" Then
                        TaoThuMuc (NamBK)
                    End If
    '2______________Kiem tra xem may dang dung la Server hay Client
            If TestFilehayFolder(VungCaiDat & "Data\DataHeThongVBDT.mdb") = True Then
            '2.1: Neu may ban la Server
                If TestFilehayFolder(DiaChiFileServer) = True Then
                    ' Neu co thi Copy vao vung Backup tren may ban dang thao tac
                    Call SaochepFile(DiaChiFileServer, DiaChiBackupFile)
                Else
                    DoCmd.RunMacro "mcthongbao.141"
                    Exit Function
                End If
            Else
            '2.2: Neu may ban la Client
                If KiemtraIPTatMo = "Mo" Then  ' Kiem tra May chu Tat/Mo
                    'Neu mo kiem tra vung file co nam trong thu muc Shared VBDT3.0 tren may chu khong
                    If TestFilehayFolder(DiaChiFilebangIP, False) = True Then
                        ' Neu co thi Copy vao vung Backup tren may ban dang thao tac
                        Call SaochepFile(DiaChiFilebangIP, DiaChiBackupFile)
                    Else
                        DoCmd.RunMacro "mcthongbao.141"
                        Exit Function
                    End If
                Else
                    'Neu tat thi ket thu lenh
                    Exit Function
                End If
            End If
        Loop
    '3______________Mo file xem tu vung DiaChiBackupFile
            Call XemAllfile(DiaChiBackupFile)  'Xem offline
Else
      DoCmd.RunMacro "mcthongbao.141"
End If
Exit_Loi:
    Exit Function
Loi:
    Call DemSoLoiDeThoat
    Resume Exit_Loi
End Function 
Public Function ChonVB(TenFile As String, NgaycuaVB As Date, ChonVungBKDenDi As Byte) As String
On Error GoTo Loi
Dim Vitrichon As String: Vitrichon = ChonFile()
Dim Nam As String: Nam = Year(NgaycuaVB)
Dim OnOffIP As String
Dim LinkData As String, NamBK As String
Dim VungCaiDatServer As String: VungCaiDatServer = VungCaiDat      '=>D:\VBDT2.0\Danh_muc_ho_so\
Dim DuoiFile As String, TenvaDuoiFile As String
    Dim TMLuu As String
    If ChonVungBKDenDi = 1 Then
        TMLuu = "CONGVAN_Den\" & Nam
    Else
        TMLuu = "CONGVAN_Di\" & Nam
    End If
If Vitrichon = "" Then Exit Function  ' Neu khong chon thi ket thuc
'Kiem tra file DataHeThongVBDT.mdb de xac dinh ban dang dung tren may Server/Client
    LinkData = VungCaiDatServer & "Data\DataHeThongVBDT.mdb"
If TestFilehayFolder(LinkData) = True Then
    LinkData = VungCaiDatServer & TMLuu        '=>D:\VBDT2.0\Danh_muc_ho_so\CONGVAN_Den\2017
Else
    LinkData = IPChiase & TMLuu                '=>\\192.168.1.4\VBDT2.0$\CONGVAN_Den\2017
    OnOffIP = KiemtraIPTatMo()
    If OnOffIP = "Tat" Then Exit Function  'Ngung thuc hien viec chep File len may chu do may chu dang tat
End If
DuoiFile = LayduoiFile(Vitrichon) 'Lay Kieu file
TenvaDuoiFile = TenFile & DuoiFile
'1.___________Tao thu muc va Copy file vao vung luu chinh tren May chu ( vùng Shared Folder VBDT3.0$)
If TestFilehayFolder(LinkData, True) = False Then  ' Neu chua co Thu muc LinkData
    Do Until Dir(LinkData, vbDirectory) > ""      ' Thuc hien den khi tao duoc thu muc LinkData
        TaoThuMuc (LinkData)
    Loop
End If
' Sao chep file tu Vitrichon File vao vung luu chinh tren May chu ( vùng Shared Folder VBDT3.0$)
  Call SaochepFile(Vitrichon, LinkData & "\" & TenvaDuoiFile)
      'Tao ra file QR code
    GetQRCode LinkData & "\" & TenvaDuoiFile, LinkData & "\" & TenFile & ".png"
'2.___________Tao thu muc va Copy file vao vung luu Du phong cua may dang chon file
NamBK = TMBackup(ChonVungBKDenDi) & Nam
If TestFilehayFolder(NamBK, True) = False Then  ' Neu chua co Thu muc NamBK
    Do Until Dir(NamBK, vbDirectory) > ""      ' Thuc hien den khi tao duoc thu muc NamBK
        TaoThuMuc (NamBK)
    Loop
End If
' Sao chep file vao vung Backup
Call SaochepFile(Vitrichon, NamBK & "\" & TenvaDuoiFile)
'    ChonVB = VungCaiDatServer & TMLuu & "\" & TenvaDuoiFile
    ChonVB = TenvaDuoiFile  ' Chi lay ten + duoi file; khong lay duong dan day du. Muc dich de tiet kiem du lieu
      'Tao ra file QR code
'    GetQRCode LinkData & "\" & TenvaDuoiFile, NamBK & "\" & TenFile & ".png"
Exit_Loi:
    Exit Function
Loi:
    Call DemSoLoiDeThoat
    Resume Exit_Loi
End Function 
Xuân Thanh > 14-11-20, 05:13 PM
thuyyeu99 > 15-11-20, 07:04 PM