วันศุกร์ที่ 13 มกราคม พ.ศ. 2555

MS Access จะวาดลวดลายแทน VB ด้วย VBA : เขียน code รับข้อมูลจากตาชั่ง

่ก่อนอื่นต้องลงตัวนี้ก่อน XMCommCRC ActiveX ใ้ห้เรียบร้อยก่อนนะครับ ต่อจากนั้นเปิด Access สร้างฟอร์มขึ้นมา ใช้คำสั่ง Insert > ActiveX Control ให้เลือกตามผมแล้วตอบ OK



คลิกที่ตัว Control, คลิกที่ผมวงกลมไว้ จะได้หน้าต่าง Properties, คลิก Tab = All คุณสมบัติของ Control แสดงขึ้นมาดังรูปข้างล่าง


เจาะประเด็น XMCommCRC ActiveX ดูรูปด้านล่าง









Name = XMCommCRC1 เอาไปใช้อ้างอิงในการเขียนโค้ดของเรา





CommPort = 1 ขึ้นอยู่กับพอร์ตที่ใช้ต่อกับเครื่องชั่ง ในที่นี้ผมต่อเข้าพอร์ต 1 ก็กำหนดเป็น 1





RThreshold = 17 คุ้นๆ นะ มาได้ยังไงเนี่ย ย้อนไปดูบทความที่ผ่านมานะครับ
RTSEnable = Yes ใช้คู่กันตัวข้างบน
Settings = 2400, E, 7, 1 ตั้งค่าพอร์ตให้ตรงกับเครื่องชั่ง






สร้าง Text Box ขึ้นมาอีก 1 อัน เอาไว้สำหรับแสดงค่าน้ำหนักที่รับมาจากตาชั่ง ผมตั้งชื่อ txtW
ต่อไปก็จะเข้าไปเขียน Code ใน VBA


ทดลอง Run Form ที่สร้างไว้ เพื่อทดลองดูซิว่าด้วยโค้ดสั้นๆ ง่ายๆ แบบนี้ผลจะเป็นอย่างไร


ทดลองชั่ง แม่จ้าวเว้ย อะไรมันจะง่ายปานนั้น ถ้าไม่มีอะไรผิดพลาด ก็น่าใจมีอะไรให้เห็นบ้างที่ Text Box
แต่จะเห็นเป็นอย่างไรก็ขึ้นอยู่กับการตั้งค่าในโหมด PRT ล่ะครับ

คราวหน้าผมจะลองตัดแต่งค่าที่ตาชั่งส่งมาเพื่อนำไปใช้ประโยชน์ เก็บลงในฐานข้อมูล นำข้อมูลไปเขียนกราฟ หรือทำ SPC แบบบ้านๆ กันซะเลย, การสั่ง RE-ZERO จากโปรแกรม, แนวคิดการทำ Auto - ZERO เช่นเดียวกับเครื่องชั่งราคาแพง

7 ความคิดเห็น:

  1. ได้ความรู้มากเลยครับ......แล้วถ้าเป็นเครื่อง Scan ลายนิ้วมือ เก็บค่าเป็นภาพ และ Code ไใว้ในฐาน Access หรือเครื่องอ่านบัตรประชาชน อ่านข้อมูลในบัตร เก็บในฐาน Access จะทำได้หรือเปล่าครับ (ใช้ Ms Access เขียนโปรแกรมและเป็นฐานข้อมูลด้วยครับ)
    ค้นหา ในเน็ต ไม่ค่อยพบความรู้ด้านนี้เลยครับ....

    ตอบลบ
  2. ผมชอบศึกษาเพิ่มเติมในด้านนี้ แล้วน้ำไปประยุกต์ใช้กับงาน เรื่องลักษณะนี้หายากที่จะบอกแบบหมดเปลือก programmer เขาก็เก็บ ก็กักไว้บ้างเพื่อทำมาหากิน เลยเป็นแรงบันดาลใจทีทำขึ้นมาเผยแพร่ โดยใช้โค้ดให้น้อยที่สุด ใช้เฉพาะส่วนที่ทำใน design mode ไม่ได้ ต้องสั่งใน runtime อย่างเดียวก็จำเป็นต้องเขียนโค้ดควบคุม ที่คุณถามเกี่ยวกับ scan ลายนิ้วมือหรืออื่นๆ ในหลักการผมคิดว่าไม่ต่างกัน แต่ผมก็ไม่มีเครื่องพวกนั้นให้ทดสอบ ถ้าคุณมีเครื่องมาให้ทดสอบก็ยินดีจะลองให้ เพื่อเรียนรู้ร่วมกัน แต่อย่าเร่งรัดผมก็เป็นพอ

    ตอบลบ
  3. ไม่ระบุชื่อ24 มีนาคม 2555 เวลา 17:11

    น้าครับผมสนใจลองทำแล้วมันไม่ไป ตัว2007 น้ามีตัวอย่างโปรแกรมมั่งเปล่าครับอยากลองไป test ดู

    รบกวนติดต่อ hodkum@hotmail.com หรือ รบกวนขอmail หน่อยครับ

    ตอบลบ
  4. ทดสอบด้วย Hyper Terminal มาแล้วหรือยังล่ะครับ แนะนำให้อ่านบทความเรียงลำดับตั้งแต่ต้น อย่าข้ามบทใดบทหนึ่งไป ที่เสนอมาเป็นเคล็ดวิชาที่มืออาชีพเขาก็ใช้กันอยู่

    ตอบลบ
  5. ไม่ระบุชื่อ25 มีนาคม 2555 เวลา 09:51

    ลอง Hyper Terminal แล้วครับ ค่ารับได้ปรกติ ลองเขียน code แล้ว
    Option Compare Database

    Private Sub form_Load()
    Me.XMCommCRC1.PortOpen = True
    End Sub

    Private Sub form_Unload(Cancel As Integer) >>>>>>>>>> ขึ้น error ตรงนี่นะครับ
    Me.XMCommCRC1.PortOpen = False
    End Sub

    Private Sub XMCommCRC1__OnComm()
    Select Case XMCommCRC1.CommEvent
    Case XMCOMM_EV_RECEIVE
    Me.tetW.Value = XMCommCRC1.InputData
    End Select
    End Sub

    ตอบลบ
  6. หมายความว่า ได้ค่ามาแสดงใน text box แล้วใช่ไหมครับ ถ้าได้ค่ามาแล้ว ก็แสดงว่าการเปิดพอร์ตสำเร็จ ก็น่าจะปิดพอร์ตได้สำเร็จเช่นกัน ไ่ม่น่ามีปัญหาอะไร

    ตอบลบ
  7. แนะนำอีกอย่าง เวลาสร้าง sub ขึ้นมาอย่าพิมพ์เอง ให้ใช้ความสามารถของ vba ที่ object และ procedure bar ในการช่วยเขียน จะลดความผิดพลาดลงไปได้

    ตอบลบ