Kiểm tra kết nối ổ đĩa mạng bằng VBA
Em đang dùng ADO để lấy dữ liệu 1 từ file .csv trên ổ đĩa mạng (Ví dụ: \192.168.1.110TaiLieuabc.csv) và đẩy vào SQL server database (VD: IP của server Database 192.168.2.220)
Có rất nhiều lý do mà kết nối đến ổ đĩa mạng và SQL server này bị mất. Những lúc như vậy Excel cứ đơ khoảng 30s rồi mới báo lỗi. Nhờ các bác cho xin đoạn code VBA để kiểm tra 2 kết nối nói trên trước khi đoạn code chính thực hiện việc lấy và đẩy dữ liệu.
Em xin cảm ơn !
Sub RunTestConn()
Dim ipLAN As String
ipLAN = "192.168.1.110"
MsgBox bolCheckConnectingByPing(ipLAN)
End Sub
''
Function bolCheckConnectingByPing(ByVal strHostAddress As String) As Boolean
bolCheckConnectingByPing = False
Dim queryPing As Object, objItem As Object
Set queryPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("Select * from Win32_PingStatus Where Address = '" & strHostAddress & "'")
For Each objItem In queryPing
If objItem.StatusCode = 0 Then 'connected!'
bolCheckConnectingByPing = True
Exit Function
End If
Next objItem
Set queryPing = Nothing
End Function
Code này kiểm tra tình trạng online của server đúng là nhanh thật. Tuy nhiên nó mới chỉ kiểm tra trạng thái online của server. Nếu bác có thể code thêm 1 vài tình huống để xác định 1 file không thể lấy dữ liệu (file không tồn tại theo đường dẫn, file không được phân quyền truy cập….) thì tốt quá. Em hỏi chỉ tham khảo thôi chứ cũng không đòi hỏi file của mình bẫy được hết các tình huống.
Trân trọng cảm ơn !
www.giaiphapexcel.com/diendan/threads/ki%E1%BB%83m-tra-k%E1%BA%BFt-n%E1%BB%91i-%E1%BB%95-%C4%91%C4%A9a-m%E1%BA%A1ng-b%E1%BA%B1ng-vba.155200/
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
SQL Server DBase mà cho phép làm việc (kết nối với Excel) vậy cũng lạ.
Công việc này đáng lẽ phải là một task có đồng ý với admin của SQL Server, gọi một stored procedure để thực hiện.
Làm việc đúng là phải chính cái SQL Server nó làm.
Thường thì người ta tạo một cái trusted connection với SS Management Studio trong máy Desktop. Khi vào SSMS thì biết cái instance của SSL Server có chạy hay không. Nếu chưa chạy thì kích động nó. Nếu đang chạy thì gọi SP.
Gần như không bao giờ người quản lý CSDL cho phép kết nối qua phần mềm lỏng lẻo cỡ Excel. Tói thiểu cũng phải những phần mềm được built qua các nên tảng có bảo mật như Visual Studio.
Nêu công việc của bạn cần sự uyển chuyển thì đừng dùng SQL Server. Bạn chỉ tốn thời gian authenticate mấy cái kết nối thôi chứ chẳng lợi bao nhiêu. Dùng phiên bản Express, SQL Lite hoặc MySQL tốt hơn. Những phần mềm nhẹ này chúng không cần bảo mật chặt chẽ cho nên set up nhanh và kết nối nhanh.
Cái winmgmts còn nhiều cái hay lắm bạn có thời gian mò nó xem
hihi lâu rồi mình đâu có thời gian viết code với mò code đâu nên quên hết rồi. Bây giờ vòng lập For Next mình còn không nhớ nữa +-+-+-+, giờ này đầu óc mình chỉ biết có Covid-nineteen. Chắc bạn phải đợi người khác nhé.
Đối với việc kiểm tra kết nối các ứng dụng tôi cũng làm theo trình tự giống như befaint. Tức là trước hết phải kiểm tra xem máy chủ có mở hay không, có kết nối được hay không (do internet, cáp v.v..). Sau đó mới kiểm tra xem file cơ sở dữ liệu có tồn tại, có bị đổi tên, đổi đường dẫn hay không rồi mới kết nối. Nếu không thông qua bước kiểm tra IP mà dùng Dir() hay FSO để kiểm tra file cơ sở dữ liệu thì kết quả trả về sẽ rất lâu.
Ứng dụng có thể kết nối với máy chủ CSDL qua mạng LAN hoặc qua Internet nên cần xử lý thêm công đoạn tách IP từ chuỗi kết nối (qua mạng LAN sẽ có dấu "\") rồi chạy lệnh Ping của befaint.