ขอโค้ดแจ้งเตือนเวลาเชื่อมต่อวงแลนไม่ได้



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

16 พ.ย. 63 , 10:59:23
อ่าน 122 ครั้ง

pondniizz

รบกวนขอโค้ดแจ้ง Error ว่า ไม่สามารถเชื่อมต่อเครื่องคอมพิวเตอร์ที่ต้องการเข้าถึงได้
  เนื่องจาก โค้ดที่เขียนเพื่อให้เข้าถึงไฟล์ข้อมูลของอีกเครื่องที่อยู่ในวงแลนเดียวกัน แต่ถ้าหากเครื่องที่เข้าต้องการเข้าไปเอาข้อมูล ปิดอยู่ หรือไม่สามารถ
ใช้งานได้ ตามที่เขียนไว้ โค้ดจะเด้งเป็น Error  อยากได้โค้ดที่แจ้งเตือนสำหรับ Error ว่าไม่สามารถเข้าเครืองได้โดยตรงคะ รบกวนหน่อยนะคะ

ตอนนี้ใช้โค้ด โดยกำหนดไว้ ว่า ถ้าเข้าเครื่อง \\unl-dc02\DM\12. INSTALLATION INSTRUCTION\New Folder แล้วไม่เจอ Folder ที่ชื่อ New Folder จะแจ้งไม่มีหรือหา Folder นั่นๆไม่พบ
 ที่ต้องการเพิ่มเติมคือถ้าไม่สามารถเข้าเครื่องนั่นๆได้ กรณีที่เครื่องนั้นปิดอยู่ หรือไม่ได้อยู่ในวงแลน จะใช้โค้ด อะไรดีคะ
ตอนนี้ลองใช้ On error แต่คิดว่ามันกว้างเกินไป ถ้าหากไปเจอ error ตัวอื่นจะไม่รู้ว่าจริงๆแล้วมัน error ตัวไหนกันแน่ 
รบกวนอาจารย์ทุกๆท่านด้วยนะคะ  :want:

โค๊ด: [Select]
Private Sub cmdFindFoder_Click()
On Error GoTo ErrorHandler

    Dim sFolderPath As String
    sFolderPath = "\\unl-dc02\DM\12. INSTALLATION INSTRUCTION\NewFolder"
    If Right(sFolderPath, 1) <> "\" Then
        sFolderPath = sFolderPath & "\"
    End If
    If Dir(sFolderPath, vbDirectory) <> vbNullString Then
        MsgBox "Folder exist", vbInformation, "Find Yes"
    Else
        MsgBox "Folder doesn't exist", vbInformation, "Find No"
    End If

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
ExitSub:
    Exit Sub

ErrorHandler:
    MsgBox "there has been error. ", , "Error"
    Resume ExitSub

 

16 พ.ย. 63 , 22:35:45
ตอบกลับ #1

OddyWriter

ปกติเวลามี Error แล้วเค้าจะมี Error Number แจ้งมาด้วย
เราก็ใช้ประโยชน์จาก อันนี้มาจัดการได้ครับ

เช่นตัวอย่างนี้ เป็นการหารด้วย 0 ซึ่ง Error Number คือ 11




เราก็ใช้ประโยชน์จากตรงนี้มาเขียนโค้ดแบบนี้ครับ




แล้วเราจะได้การแสดงผลเป็นแบบนี้




กินร้อน ช้อนตัวเอง จานใครจานมัน ออกนอกบ้านใส่หน้ากากอนามัยหรือหน้ากากผ้า
 
โพสต์นี้ได้รับคำขอบคุณจาก: pondniizz

17 พ.ย. 63 , 00:01:41
ตอบกลับ #2

TTT

จำได้ว่ามันมีหลายแบบมาก ทั้ง api wmi แต่ที่ผมมีในเครื่องเป็นแบบง่ายๆ ไม่ได้แสดงค่าอะไรแค่ให้ค่า True กับ False เท่านั้น แต่ฟังก์ชั่นนี้ตอบสนองเร็วใช้ได้ดีกว่าการ Ping แต่แม่นยำป่าว ต้องลองดูนะครับ

Function SystemOnline(ByVal ComputerName As String) As Boolean
    Dim colPingResults As Variant
    Dim oPingResult As Variant
    Dim strQuery As String
    strQuery = "SELECT * FROM Win32_PingStatus WHERE Address = '" & ComputerName & "'"
    Set colPingResults = GetObject("winmgmts://./root/cimv2").ExecQuery(strQuery)
    For Each oPingResult In colPingResults
        If Not IsObject(oPingResult) Then
            SystemOnline = False
        ElseIf oPingResult.StatusCode = 0 Then
            SystemOnline = True
        Else
            SystemOnline = False
        End If
    Next
End Function
-----------------------------------------------------
การใช้งาน
SystemOnline("192.168.1.3")
หรือ
SystemOnline("ชื่อคอมเป้าหมาย")
ฐานข้อมูลเป็นเรื่องใกล้ตัว ใครๆก็ทำฐานข้อมูลเองได้นะครับhttp://www.youtube.com/c/AccessCreator link
 
โพสต์นี้ได้รับคำขอบคุณจาก: pondniizz, Max


บอร์ดเรียนรู้ Access สำหรับคนไทย