• Lưu đồ nút Thêm/Xem File qua mạng LAN
  • Lưu đồ nút Thêm/Xem File qua mạng LAN

    maidinhdan > 02-06-20, 05:22 PM

    Lưu đồ xử lý Nút Xem file qua mạng LAN
    [Hình: hinh6.png]

    Lưu đồ xử lý Nút Thêm file qua mang LAN/Internet
    [Hình: hinh7.png]

    Có thể điều chỉnh 1 tí để áp dụng cho xem file qua FTP mà 1 bạn gần đây mới hỏi.
    Hướng dẫn nhanh nên, nút trên các bạn có thể tùy biến lại một chút, như nút xem cho kiểm tra file trên máy hiện hành trước, hoặc nút thêm cũng thế
  • RE: Lưu đồ nút Thêm/Xem File qua mạng LAN

    Noname > 30-06-20, 04:28 PM

    Nb.
  • RE: Lưu đồ nút Thêm/Xem File qua mạng LAN

    maidinhdan > 13-11-20, 08:51 PM

    Bổ sung lại Lưu đồ: Ai Cần Code trong VBA or VB.Net xin để lại tin nhắn.

    Lưu đồ xử lý Nút Xem file qua mạng LAN
    [Hình: hinh6.png]

    Lưu đồ xử lý Nút Thêm file qua mang LAN/Internet
    [Hình: hinh7.png]
  • RE: Lưu đồ nút Thêm/Xem File qua mạng LAN

    Xuân Thanh > 14-11-20, 11:06 AM

    @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?
  • RE: Lưu đồ nút Thêm/Xem File qua mạng LAN

    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?

    Cảm ơn anh Thanh, đúng như anh nói, khi vẽ lưu đồ chỉ có 2 hướng đúng và Sai. Và kể cả không trong viết phần mềm mà mấy cái quy trình thủ tục hành chính người ta cũng vẽ lưu đồ như vậy.

    * Lúc đầu em cũng đã đi theo hướng đó, nhưng phát sinh code trùng lặp khi triển khai hàm. phải tách, chia nhỏ ra quá nhiều hàm. và lưu đồ nó cũng thêm nhiều công đoạn nửa.

    * Khi em vẽ lưu đồ dùng cho VBA + VB.Net thì nó lại khác; nhưng khi vẽ như trên; 02 hàm này dùng chung được.

    Code trên VB.net
    Mã PHP:
    '    --------------------------------------------------------------------------------------------------------
        '
        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 phapPurpose  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 StringByVal NgaycuaVB As DateByVal 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ôngHàm này ở đây để phòng Trường hợpmáy bạn đang dùng là máy chủ thì không cần kiểm tra IP mà mấy thẳng LinkDataApplication.StartupPath "\Danh_muc_ho_so\Data\DataHeThongVBDT.mdb
                    If OnOffIP = False Then
                        MessageBox.Show("
    Máy chủ đã tắtFile Chọn vẫn chưa thể cập nhật", "Thông báoDừ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 & "YesGhi đè" & vbCrLf & "NoGiữ nguyên File củvà Xem File Củ này" & vbCrLf & "CanCelMở 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áoMá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 

    Code trên VBA (Access)
    1. Nút xem
    Mã PHP:
    Public Function XemVB(TenvaDuoiFileLuu As StringNgaycuaVB As DateChonVungBKDenDi As Byte)
    On Error GoTo Loi
    Dim DiaChiFilebangIP 
    As String
    Dim DiaChiBackupFile  
    As String
    Dim DiaChiFileServer 
    As String
    Dim Nam 
    As StringNamBK 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 

    2. Nút chọn File
    Mã PHP:
    Public Function ChonVB(TenFile As StringNgaycuaVB As DateChonVungBKDenDi As Byte) As String
    On Error 
    GoTo Loi
    Dim Vitrichon 
    As StringVitrichon ChonFile()
    Dim Nam As StringNam Year(NgaycuaVB)
    Dim OnOffIP As String
    Dim LinkData 
    As StringNamBK As String
    Dim VungCaiDatServer 
    As StringVungCaiDatServer 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(LinkDataTrue) = 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 
  • RE: Lưu đồ nút Thêm/Xem File qua mạng LAN

    Xuân Thanh > 14-11-20, 05:13 PM

    1/ Như tôi đã nói, lưu đồ chính là thuật toán. Code VBA chẳng qua là dựa vào cái lưu đồ này mà viết. Vì vậy lưu đồ càng chi tiết thì việc viết code VBA(VB NET) càng dễ. Thế nên dù có phân nhánh bao nhiêu đi chăng nữa thì cũng phải thực hiện. Với những người mới làm quen để viết các Function, Class thì càng phải cần chi tiết. Với nhừng người am tường về việc này thì lưu đồ vẽ tắt cũng không ảnh hưởng gì nhiều vì họ biết cách xử lý
    2/ Một lưu đồ đều hướng các nhánh rẽ về mục Kết thúc. Đó chính là cái đích của Function, Class. Nếu các nhánh chưa về đến đích thì lưu đồ vẽ chưa hoàn chỉnh
    Tôi cũng đã có ý định viết một bài hướng dẫn chung về việc làm thế nào để viết một hàm hoàn chỉnh trong VBA trong đó có mục tạo và vè lưu đồ thuật toán nhưng vì công việc quá bận rộn nên chưa thể thực hiện được
    Thân mến
  • RE: Lưu đồ nút Thêm/Xem File qua mạng LAN

    thuyyeu99 > 15-11-20, 07:04 PM

    Em thấy cái này cũng hay các anh cho em xin tham khảo nhé 
    Thuyyeu99@gmail.com