สอบถามวิธีที่ให้โปรแกรม หรือ ฟอร์มทำงานต่อ ถึงแม้ว่าไม่เจอฐานข้อมูลที่ link ครับ


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

27 พ.ค. 65 , 13:15:24
อ่าน 390 ครั้ง

arampong

สอบถามวิธีที่ให้โปรแกรม หรือ ฟอร์มทำงานต่อ ถึงแม้ว่าไม่เจอฐานข้อมูลที่ link
กระทู้ก่อนหน้าผมตั้งแล้วอ่านไม่เข้าใจครับ มาถามใหม่ครับ อันเก่าที่ตั้งแล้วงงครับ https://www.thai-access.com/index.php?topic=2099.0
มาต่อเลยครับ
คือ จุดประสงค์คือต้องการแสดงข้อมูลสุดท้ายของ Excel ที่ทำ Link ครับ รายละเอียดดังนี้ครับ

1.ผมทำLinkข้อมูลจาก Excel ของเครื่องภายใน Network ครับ 3 เครื่องครับรูปแบบ Excel เหมือนกันทุกเครื่อง
2.นำฐานข้อมูลที่ Link มาสร้าง Query ชื่อ Qry1,Qry2,Qry3
3.สร้าง ฟอร์มของแต่ละตัว 3 ฟอร์มย่อย เพื่อนำข้อมูลมาแสดง
4.ใส่ Code นี้ทั้ง 3 ฟอร์มเมื่อเปิด เพื่อกำหนดค่าสุดท้ายที่จะให้แสดง ให้แต่ละฟิวส์แสดงบน Text ครับ
    ตัวอย่างCode Form ย่อยที่สร้างจาก Qry1 ครับ
    Private Sub Form_Load()
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("Qry1")
    rs.MoveLast
    Do While rs("IP") & "" = ""
    rs.MovePrevious
    Loop
    TX01.Value = rs("IP")
    TX02.Value = rs("Name")
   
    rs.Close: Set rs = Nothing
       End Sub

4.สร้างฟอร์มหลัก นำตัว3ฟอร์มที่สร้างมาแสดงบนฟอร์มหลักนี้ครับ

ที่ติดปัญหาครับ
หากมีเครื่องไดเครื่องหนึ่ง หรืออย่างน้อย 1 เครื่องไม่เปิด หรือ Link ขาดการเชื่อมต่อ
โปรแกรมจะมี Error แสดงขึ้นมาว่าบรรทัดนี้  Set rs = CurrentDb.OpenRecordset("Qry1")
และ Form ถึงกดปิด Error ฟอร์มก็เรียกไม่ขึ้นครับ และตัวฟอร์มผมตั้งเวลาให้ทำการ Refresh ทุกๆ10นาทีครับ
ถึงแม้จะทำให้ฟอร์มเปิดได้(รอนานมากครับ) ตัวError ก็จะเด้งค้างทุกๆ 10 นาทีอยู่ดีครับ
ความต้องการคือ ทำอย่างไรให้โปรแกรมเปิดฟอร์มหลักได้โดยไม่ต้องสนใจว่า
Excel ที่ link จะเชื่อมต่อหรือไม่ก็ตามครับ
ขอบคุณครับ

 

31 พ.ค. 65 , 08:26:00
ตอบกลับ #1

arampong

เรียนอาจารย์ทุกท่าน พอจะมีวิธี หรือแนะนำได้ไหมครับ กรณีแบบนี้
คิดไม่ออกจริงๆครับ หรือ เราสามารถตรวจสอบก่อนได้ไหมครับ
ว่าหากเชื่อมต่อไม่ได้ก็ให้ข้ามการเชื่อมต่อ Link แล้วให้เปิด Form เลย
พยายามค้นหาแล้วไม่มีเลยครับ และลองทำแล้วมันไม่ได้จริงครับ
รบกวนขอคำแนะนำด้วยครับ

ขอบคุณครับ

 

31 พ.ค. 65 , 09:27:56
ตอบกลับ #2

Un

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

 

31 พ.ค. 65 , 14:48:44
ตอบกลับ #3

nonc31

สร้างตารางเก็บค่า ใน Access  ก่อน บันทึกลง Excel
ก่อนบันทึก ก็ให้ตรวจค่าใน excel ก่อนว่า ค่าซ้ำมั๊ย
ตรวจผ่านค่อย Add เข้าไป  ถ้าพบ แต่ข้อมูลไม่ครบก็ Update
ไม่ก็ลบทิ้งแล้ว Add ใหม่

 

31 พ.ค. 65 , 15:34:57
ตอบกลับ #4

TTT

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

Public Function sPing(sHost As String) As String
    Dim oPing As Object, oRetStatus As Object
    Set oPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address = '" & sHost & "'")
    For Each oRetStatus In oPing
        If IsNull(oRetStatus.StatusCode) Or oRetStatus.StatusCode <> 0 Then
            sPing = "timeout" 'oRetStatus.StatusCode
        Else
            sPing = oRetStatus.ResponseTime
        End If
    Next
End Function

การใช้งาน
    sPing("192.168.1.7")
หรือใช้ชื่อเครื่องก็ได้เช่นกัน
    sPing("ชื่อเครื่องของฉัน")
 
Return
"45ms" = ติดต่อกับเครื่องเป้าหมายได้ใช้เวลา 45ms
"timeout" = ไม่พบเครื่องเป้าหมาย

หากมันไม่ timeout ก็ค่อยเขียนโค้ดดึงข้อมูลต่อไป ประมาณนี้ครับ
ฐานข้อมูลเป็นเรื่องใกล้ตัว ใครๆก็ทำฐานข้อมูลเองได้นะครับhttp://www.youtube.com/c/AccessCreator
 
โพสต์นี้ได้รับคำขอบคุณจาก: sjs, Max

01 มิ.ย. 65 , 13:27:44
ตอบกลับ #5

arampong

ขอขอบคุณทุกคำแนะนำครับ

คุณ Un : คือ Excel ที่ผมดึงมานั้นเป็นค่าที่เครื่องตรวจนับการผลิตสร้างออกมาไว้ในเครื่อง Mini PC แต่ละเครื่องครับ ผมได้โจทย์ให้เข้าไปดึงข้อมูล
ออกมาครับ แต่ห้ามเข้าไปยุ่งกับส่วนต่างๆ ผมเลยทำ Link excel เข้า Access ทิ้งไว้เลยเพื่อนำมาใช้งานครับ และถ้าเครื่องไม่ผลิตก็จะไม่เปิด ทำให้กำหนดไม่ได้ว่าเครื่องจะเปิดหรือไม่ครับ

คุณ nonc31 : ผมไม่สามารถไปทำอะไรกับ Excel ของเขาได้ก็เลยได้แค่ Link เอาข้อมูลออกมาก่อนแล้วค่อยทำครับเลยทำแบบคุณ nonc31 แนะนำไม่ได้ครับ

คุณ TTT : น่าจะตอบโจทย์มากครับ ให้เช็คก่อน แล้วค่อยดึง Query ข้อมูลมาใช้ครับ จะลองนำ Code ลองดัดแปลงดูครับ
ผมเข้าใจว่า น่าจะตรวจสอบเครื่องว่า Ping เจอหรือไม่ ถ้าเจอทำงานต่อตามที่ต้องการ ถ้าไม่เจอให้ Text ทั้งหมดที่รับค่าเป็นค่าว่าง
และอาจจะมี Text ซักตัวรับค่าแจ้งว่าเครื่องปิดอยู่ ขอบคุณมากครับ จะลองทดสอบตามนี้ดูครับ เดี๋ยวแจ้งผลครับ

ขอบคุณมากครับผม

 

01 มิ.ย. 65 , 17:35:15
ตอบกลับ #6

arampong

แจ้งผลการทำตาม อาจารย์TTT แนะนำครับ

โปรแกรมใช้งานได้ดีครับ โดยใช้ IF ตรวจสอบตาม Code ที่คุณTTT แนะนำ หากเป็นจริง
ให้เข้าเงื่อนไข ที่ต้องการครับ

ขอบคุณมากครับ

 


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