แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - ศรี-นคร

หน้า: 1 [2]
19
ห้อง Ms Access อื่นๆ / Link MDB File
« เมื่อ: 05 ก.พ. 62 , 10:34:01 »
สำหรับองค์กรหรือหน่วยงานขนาดเล็ก-ขนาดกลาง ที่ต้องการใช้ข้อมูลร่วมกันในหลายส่วนหรือแผนก
หากต้องเชื่อมฐานข้อมูลไปยัง mdb ไฟล์ที่เก็บไว้ Server หรือ Share folder ที่ส่วนกลาง
สามารถทำได้ 2 วิธีครับ

วิธีที่ 1 คือทำการคลิ๊กขวาที่ Tab : table เลือก Link Tables

วิธีที่ 2 คือเชื่อมต่อผ่าน ODBC โดยมีหลักการมีดังนี้ครับ
- ขั้นตอนที่ 1 สร้าง ODBC เพื่อ Connect ไปยัง MDB ไฟล์ที่ต้องการเชื่อมข้อมูล
- ขั้นตอนที่ 2 ทำการ Link Table เข้ามาในไฟล์ Front End ที่กำลังใช้งานอยู่
- ขั้นตอนที่ 3 ในหน้าเขียนโค๊ด VBA ให้ติ๊กเลือก Tools --> Reference --> Microsoft DAO 3.6 Object libray

##################################
เมื่อต้องการจะจัดการกับข้อมูลใน Table สามารถใช้รูปแบบดังนี้

    Dim rst1, rst2, rst3, rst4, rst5, rst6, rst7, rst8 As DAO.Recordset

    Dim dbs As Database
    Set dbs = CurrentDb()
   
    Set rst1 = dbs.OpenRecordset("SELECT * from Table1")
    'Add
    rst1.addnew
    rst1!Filed1 = "Test"
    rst1.update

    'Edit
    rst1.edit
    rst1!Filed1 = "Test"
    rst1.update

    'Del
    rst1.Delete

    rst1.close
    Set rst1 = nothing

โดยเราจะต้องใส่ Password ไว้ที่ ตรงที่ไฟล์ mdb ที่ Share ไว้ที่ส่วนกลางนั้นไว้ด้วย เพราะเดี๋ยวมีใครซุกซนเข้าไปแก้ไขข้อมูลเดี๋ยวงานจะเข้า
และมีข้อควรระวังอยู่หลายเรื่องคือ
- จะต้องทำการ Compact ข้อมูลทุกวันเพื่อให้ระบบทำการ Clean up record ที่โดนลบระหว่างวันออกไป
- ต้องมีการ Backup ข้อมูลทุกวันเพราะเมื่อไฟล์ชำรุดจะไม่สามารถเปิดไฟล์ได้เลย ไม่ว่าจะรู้ Password ก็ตามต้องใช้ tools พิเศษซ่อม และ Relation ระหว่าง Table จะเสียต้องเข้าไปไล่หาว่า Link ที่เสียหายนั้น หายไปที Table อะไร ต้องทำการสร้าง Relation นั้นใหม่ ซึ่งอาจจะมีปัญหาเพิ่มเติมมาอีกตรงที่มี Record บางอันเกินมาทำให้ไม่สามารถเชื่อมความสัมพันธ์ได้ ต้องลบทิ้งก่อนทำการเชื่อม แล้วค่อยคีร์เข้าไปใหม่
สามารถตรวจสอบได้โดยการสร้าง Query Unmatch เพื่อให้ทราบว่ามี record ใดบ้าง
- เมื่อฐานข้อมูลชำรุด Data unrecognized ต้องให้ User ออกจากระบบทั้งหมดแล้ว Restart เครื่องคอมฯ ที่ Share ไฟล์นั้นเพื่อยกเลิกการเชื่อมต่อมายัง โฟลเดอร์ดังกล่าว ทำการปิด Share สำหรับ User ทุกคน ยกเว้น User ที่ดูแลระบบแล้วจึงทำการปรับซ่อมไฟล์ให้แล้วเสร็จ จากนั้นค่อยทำการเปิด Share กลับมาเหมือนเดิม ปัญหาใหญ่มันจะอยู่ที่ไฟล์ที่ชำรุดนั้นจะเปิดไม่ได้ต้องใช้ Tool ที่เป็นไฟล์ข้างนอกทำการปรับซ่อมสถานเดียว ถ้าไม่มีจึงไม่แนะนำให้ใช้การ Share ข้อมูลวิธีนี้ โดยจะต้องทำทันทีเดี๋ยวนั้นเลย ก่อนที่ข้อมูลจะพังจนสายเกินแก้ หากไม่เก่งพอหรือไม่มี Tool อยู่ในมือ ไม่แนะนำให้ใช้การ Share ข้อมูลแบบนี้เพราะนั้นหมายถึงคุณต้องเอาไฟล์ Backup กลับมาใช้ นรกจะบังเกิดทันที
- เมื่อมีคนใช้งานรวมกันมากขึ้น การเปิด-เขียนข้อมูลจะช้าลงอย่างเห็นได้ชัด เนื่องจากตัว MS-Access จะมีการ Lock Record ที่ User แต่ละคนกำลังใช้งานอยู่ในขณะนั้น
- ความแรงและความเร็วในการอ่านเขียนของเครื่องที่ Share ไฟล์ก็จะมีผลเรื่องความเร็ว ในการอ่าน-เขียนด้วยนะครับ
- การออกแบบระบบ Network และคุณภาพ,ความเร็วของ Network ก็มีผลกับความบ่อยของการชำรุดของไฟล์ที่แชร์ด้วย ถ้าไม่ดีหรือไม่เสถียรก็จะมีปัญหาบ่อย
- ส่วนการตั้งรหัสผ่าน mdb ไฟล์สามารถค้นหาอ่านได้จากข้อมูลเก่าของ อ. สุภาพ ไชยาครับ

จะเห็นว่า มีเงื่อนไขและรายละเอียดการใช้งานค่อนข้างเยอะ จึงไม่แนะนำให้ใช้การ Share วิธีนี้ เลี่ยงได้ก็ควรจะไปใช้ SQL Server จะดีกว่าได้ความเร็วและเสถียรกว่ากันเยอะ แต่ก็ต้องเตรียมเรื่องของ Server และ License

############################
Tool ที่ว่าผมมี หากต้องการให้ Post ขอด้านล่างนะครับเพราะจะให้คนที่ต้องการเท่านั้น ไม่ให้พร่ำเพรื่อ

ขอขอบคุณความรู้เกี่ยวกับ MS-Access จาก อ. สุภาพ ไชยา

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

20
ห้อง Ms Access อื่นๆ / Link SQL Server
« เมื่อ: 28 ม.ค. 62 , 15:51:06 »
หากต้องเชื่อมฐานข้อมูลจาก SQL Server โดยตัว Front End เป็น MS-Access

หลักการมีดังนี้ครับ
- ขั้นตอนที่ 1 สร้าง ODBC เพื่อ Connect ไปยัง MySQL Server
- ขั้นตอนที่ 2 ทำการ Link Table เข้ามาในไฟล์ Front End ที่กำลังใช้งานอยู่
- ขั้นตอนที่ 3 ในหน้าเขียนโค๊ด VBA ให้ติ๊กเลือก Tools --> Reference --> Microsoft DAO 3.6 Object libray

เมื่อต้องการจะจัดการกับข้อมูลใน Table สามารถใช้รูปแบบดังนี้

    Dim rst1, rst2, rst3, rst4, rst5, rst6, rst7, rst8 As DAO.Recordset

    Dim dbs As Database
    Set dbs = CurrentDb()
   
    Set rst1 = dbs.OpenRecordset("SELECT * from Table1", dbOpenDynaset, dbSeeChanges)
    'Add
    rst1.addnew
    rst1!Filed1 = "Test"
    rst1.update

    'Edit
    rst1.edit
    rst1!Filed1 = "Test"
    rst1.update

    'Del
    rst1.Delete

    rst1.close
    Set rst1 = nothing

จะเห็นว่า มีรูปแบบคำสั่ง    ", dbOpenDynaset, dbSeeChanges)   ต่อท้ายเพิ่มขึ้นมานิดหน่อย

ขอขอบคุณความรู้เกี่ยวกับ MS-Access จาก อ. สุภาพ ไชยา

ก็ฝากไว้เผื่อจะสามารถช่วยให้มิตรรักแฟนเพลงท่านหนึ่งท่านใด ก้าวพ้นปัญหาที่กำลังแก้อยู่ได้เร็วขึ้น
โพสต์นี้ได้รับคำขอบคุณจาก: Un, laemthong, paitoon

21
ห้อง Ms Access อื่นๆ / : Link MySQL
« เมื่อ: 28 ม.ค. 62 , 14:27:21 »
ก็ฝากไว้เผื่อจะสามารถช่วยให้มิตรรักแฟนเพลงท่านหนึ่งท่านใด ก้าวพ้นปัญหาที่กำลังแก้อยู่ได้เร็วขึ้น
โพสต์นี้ได้รับคำขอบคุณจาก: Un, Surapong J Noom

22
ห้อง Ms Access อื่นๆ / Link MySQL
« เมื่อ: 28 ม.ค. 62 , 14:21:19 »
พอดีไปเจอโจทย์ใหม่ คือต้องเชื่อมฐานข้อมูลจาก MySQL มาที่งานเก่าที่เป็น SQL Server โดยตัว Front End เป็น MS-Access
งมอยู่พักใหญ่ ในที่สุดก็สามารถทำได้

หลักการมีดังนี้ครับ
- ขั้นตอนที่ 1 ต้องลง Driver ของ MySQL ที่เครื่องก่อน ณ. วันที่โพสนี้มี 2 เวอร์ชั่น คือ v.3.1.5 , 8.0 แนะนำเป็นเวอร์ชั่น 3.1.5
- ขั้นตอนที่ 2 สร้าง User ที่สามารถเข้าถึงฐานข้อมูลให้เรียบเรียบก่อนพร้อมทดสอบ และอย่าเปลี่ยนสิทธิ์ของ User ที่ว่านี้ให้เป็น Full ด้วยเครื่องหมาย %
- ขั้นตอนที่ 3 สร้าง ODBC เพื่อ Connect ไปยัง MySQL Server
- ขั้นตอนที่ 4 ทำการ Link Table เข้ามาในไฟล์ Front End ที่กำลังใช้งานอยู่
- ขั้นตอนที่ 5 ในหน้าเขียนโค๊ด VBA ให้ติ๊กเลือก Tools --> Reference --> Microsoft DAO 3.6 Object libray

เมื่อต้องการจะจัดการกับข้อมูลใน Table สามารถใช้รูปแบบดังนี้

    Dim rst1, rst2, rst3, rst4, rst5, rst6, rst7, rst8 As DAO.Recordset

    Dim dbs As Database
    Set dbs = CurrentDb()
   
    Set rst1 = dbs.OpenRecordset("SELECT * from Table1")

    'Add
    rst1.addnew
    rst1!Filed1 = "Test"
    rst1.update

    'Edit
    rst1.edit
    rst1!Filed1 = "Test"
    rst1.update

    'Del
    rst1.Delete

    rst1.close
    Set rst1 = nothing

ขอขอบคุณความรู้เกี่ยวกับ MS-Access จาก อ. สุภาพ ไชยา
โพสต์นี้ได้รับคำขอบคุณจาก: Surapong J Noom

หน้า: 1 [2]