MS Access ในมุมของ Developer Tool
วัตถุประสงค์
ให้ผู้อ่านได้เข้า Access ในฐานเครื่องมือในการเขียนโปรแกรม และได้ทดลองทำ Access แยกเป็น โปรแกรมและข้อมูล ,การทำ MDE
เนื้อหา
ผู้อ่านส่วนใหญ่ จะรู้จัก Access กันอยู่แล้ว เพราะเป็นโปรแกรมที่ติดมากับ ชุด Office ของ Microsoft , ภายใน Access เอง จริงๆ แล้ว แบ่งเป็น 2 ส่วนภายในตัวเองครับ คือ เป็นฐานข้อมูล และ เป็นเครื่องมือในการพัฒนาโปรแกรม
แต่เชื่อไหมครับว่า นักพัฒนาส่วนใหญ่ไม่ทราบว่า Access ใช้เป็น Tool ในการพัฒนาโปรแกรมได้ แต่มักเข้าใจว่าเป็นที่เก็บข้อมูลอย่างเดียว และจะมีความเข้าใจว่า Access ไม่มีความเสถียร ตรงนี้ต้องขอบอกไว้เลยครับ ว่า ความจริง Access ส่วนที่เป็น Database เป็นเพียงฐานข้อมูลเล็กๆ จะเก็บข้อมูลได้ไม่มากนัก ( ไม่ควรเกิน แสน ) และหากใช้ไฟล์ Access บน Network อาจรบกวนจิตใจเพราะจะ crash ได้ง่ายๆ หากมี Traffic มากมาก ควรใช้งานแบ Stand alone หรือ Multi user แบบไม่มากนัก ภาพลบตรงนี้เลยทำให้นักพัฒนา ไม่เลือก Access ในการใช้มาเขียนโปรแกรม
แต่ในอีกมุมของหนึ่ง Access ถูกพัฒนาให้เป็น Tool ในการพัฒนางานที่เป็น Database อย่างดีตัวหนึ่งเลย ซึ่งสะดวกมากๆ หากตัดปัญหาเรื่อง ความแข็งแรงของความเป็น Database ออกไป แล้วใช้ Database ที่เป็น RDBMS ตัวจริงเสียงจริงอย่างพวก Oracle, SQL Server,… มาดูแลส่วน Database แทนแล้ว จะทำให้การพัฒนาโปรแกรมที่เป็น Database ลงตัวมากมาก ผมเองคลุกคลีกับ Access , Visual Basic มาตั้งแต่ Access version 2.0 ตอนนั้นจะอยู่ในตลาดพร้อมๆ กับ Visual Basic 3 ถ้างานไหนเป็นงาน Database ที่ต้อง Key ข้อมูลมาก ต้องทำ Report หนัก ผมจะใช้ Access ในการเขียนโปรแกรมส่วนนี้ตลอด ไม่พยายามมาปะปะ data control ใน VB แน่นอน ท่านผู้อ่านอาจนึกไม่ถึง Access ที่ติดมากับ MS Office นี้ จะใช้พัฒนาโปรแกรมงานในลักษณฐานข้อมูลได้เป็นอย่างดี อย่างที่ผมรู้จักดี ก็คือระบบลงทะเบียนของนิสิตนักศึกษาที่ใช้ Oracle เป็นฐานข้อมูล เป็น Access ทำเป็น Tool ในการพัฒนาโปรแกรมทั้งหมด มูลค่าต่อโครงการสูง เป็นถึง 5 ล้านบาทเชียวละ เครื่องมือที่อยู่ใกล้มือคุณตัวนี้ จริงๆ แล้วทำอะไรเยอะทีเดียว มาลองใช้เครื่องมือตัวนี้ให้คุ้มกับค่า license ของ MS Office ที่เราเสียไปดีกว่าครับ
ภาพ 1การใช้ Access เพื่อต่อกับ RDBMS และ ลักษณะงานแบบต่างๆ
เขียนโปรแกรมบน ACCESS ได้อย่างไร ?
ความจริงจะว่าไปแล้ว Access จัดว่าเป็น Tool สำหรับการพัฒนาโปรแกรมด้าน Database ของ ค่าย Microsoft เลย หน้าตาภาษาก็เป็นเหมือน Visual Basic เลยครับ คนที่เคยเขียน ภาษา Basic มาบ้างไม่ว่าจะอยู่บน Visual Basic, .net, ASP พอมาใช้งานก็จะพอทำได้ แต่แน่นอนครับ คงไม่ได้เปิดมาแล้วเขียนกันได้เลย ธรรมดาสามัญของการจะเริ่มเขียนโปรแกรมทั่วไป ซึ่งก็ไม่เว้นแต่ Access ก็คือ
- รู้จักโครงสร้างลักษณะภาษาซะก่อน เหมือนจะคุยกับคนต่างชาติก็ต้องพูดภาษาเขาเป็น
- ใช้เครื่องมือในการเขียนภาษานั้นเป็น จะ click windows จับ code debug อย่างไร เป็นส่วนที่จะทำให้เสียเวลาในการเริ่มครั้งแรกๆ เหมือนกัน
- มี Object อะไรในตัวระบบโปรแกรมที่เราจะเขียนบ้าง แล้ว มีลักษณะอย่างไร ( properties ) สั่งอย่างไร ( method ) มีการตอบโต้กับเราอย่างไร ( event ) เพื่อจะได้ทำงานเจ้า Object ในเครื่องมือตัวนี้ได้ อย่าง Access นี้ก็มี Object เช่น Form, Report เป็นต้น ถ้าเราไปเขียนโปรแกรมบน Excel เราก็จะไปเจอ Sheet, Cell เป็นต้น
การเขียนโปรแกรมบน Access ของเรา ก็จะเขียนไปเพื่อติดต่อกับ object ภายใน Access ลงไปในทุกๆ ส่วนย่อยของมัน อย่างเช่น ถ้าเราต้องการการกำหนดสีของช่องใส่ ตัวเลขราคา ให้เปลี่ยนไปตามมูลค่า ถ้ามีค่ามากกว่า 1000 บาท ให้สีของตัวเลขเป็นสีแดง ตรงนี้เราก็จะไปกำหนดสีของ OBJECT ที่เป็น CONTROL ใน FORM ตัวที่เป็นช่องเก็บ ตัวเลขราคา ตาม ตย ส่วนรายละเอียดการเขียน
if ME.CtlAmount > 1000 then
Me.CtrlAmount.Forecolor = rgb(255,0,0) ‘ RED
Else
Me.CtrlAmount.ForeColor = rgb(0,0,0) ‘BLACK
end if
ผมจะได้มีโอกาศพาไปรู้จักการเขียนโปรแกรมกับ ACCESS ต่อในตอนต่อๆ ไปครับ ตอนนี้มาดูการเตรียมความพร้อมกับกับตัว ACCESS ในฐานะเครื่องมือพัฒนากันก่อน
DATABASE กับ TOOL
ก่อนอื่นต้องขอแนะนำชิ้นสวนของ Access เสียก่อน ส่วนที่เป็น Database จริงๆ ของ Access คือ ส่วน TABLE ที่เหลือ คือ QUERY , FORM, REPORT, MACRO, MODULE จัดเป็นส่วนของเครื่องมือในการพัฒนาทั้งสิ้น ตามธรรมดาระบบ computer ก็มีแบบคือ องค์ประกอบ classic คือ CPU INPUT OUTPUT MEMORY ตัว Access เองหากจะถอดมาจัดคู่กัน ก็จะได้ตามภาพที่ 2 ครับ
ส่วนที่เป็น Development Tool ของ Access
Query หลายๆ ท่านอาจเข้าไปใช้งานบ้างแล้ว ความจริงจะเหมือนกับ “VIEW” ที่ใช้กันพวก RDBMS ทั่วๆ ไป ทำหน้าที่ ในการรวบเอาข้อมูลจากหลายๆ TABLE มาสร้างเป็นตารางหน้าตาใหม่ๆ หรือไว้ ปรับปรุงข้อมูลในตาราง TABLE จะหาโอกาศกล่าวถึงเทคนิคต่างๆ เกี่ยวกับ QUERY ในบทท้ายๆ นะครับ
FORM ส่วนที่เราทำหน้าจอ เรียกว่าเป็นพระเอกของงานเลยครับ เพราะเราจะใช้ FORM ทำหน้าจอในการติดต่อกับผู้ใช้ เราใช้ form มาทำเป็น Menu สำหรับเรียกโปรแกรมย่อยอื่น ( ซึ่งก็เป็น Form อีกนั่นละ ) หรือเรียกรายงาน ทำหน้า Login หน้าบันทึกข้อมูล สารพัดเลยครับ ตรงนี้จะคล้ายๆกับ FORM ของ VB มากมาก
REPORT เป็นนางเอกของเราครับ ใช้ทำรายงาน เรียกว่าเป็นหน้าเป็นตาของผลงานของเรา โปรแกรมที่ทำขายๆ กัน จะถูกจะแพง บางทีก็มาตัดสินกันตรงนี้เลยครับ
PAGE อันนี้ก็คล้าย REPORT ครับ แต่ทำพวก WEB PAGE
MODULE เป็น กึ๋นของระบบของเรา เอาไว้เก็บพวกโปรแกรมย่อยๆ เช่นพวก Function, Procedure หรือ Class ต่างๆ ที่เอาไว้เป็นส่วนกลางให้ กับ Query หรือ Form Report มาเรียกใช้งาน
ภาพ2เปรียบเทียบองค์ประกอบคอมกับ ACCESS
แยก DATABASE กับส่วนพัฒนา ด้วย ATTCH TABLE
ระหว่างส่วนที่เป็น DATABASE กับ TOOL งานนี้ต้องบอกว่าแยกกันอยู่ดูดีกว่าครับ เพราะเวลาเราทำโปรแกรมเสร็จ ถึงตอนไป Update ให้ลูกค้า หรือเอาไปใส่ใน Environment งานจริงๆ จะได้แยกระหว่าง โปรแกรมที่ทำ กับข้อมูลจริงของลูกค้า เวลา Update จะได้ Update แต่ส่วนโปรแกรม ไม่ให้ไปทับข้อมูลลูกค้า ที่สำคัญการจัดแยกข้อมูลส่วน TABLE ออกมาจะทำให้ ไฟล์ TABLE สามารถนำไปแยกวางบน SERVER แม่ข่ายได้ การแยกไฟล์ส่วน TABLE ออกจากส่วนที่เป็นโปรแกรมงานจริงเป็นการใช้ความสามารถในการ Attach Table หรือ Link Table ของ Access
มาลองแยก Database กับส่วนพัฒนากันดูครับ ลองหาไฟล์ MDB ที่มี Table และ Form มาลองทำ อาจใช้ northwind.mdb ที่ลงไว้ตอน setup ก็ได้ แต่แนะนำให้ Back up ไฟล์เดิมไว้ก่อนนะครับ
1. copy ไฟล์ mdb ที่มี เป็นอีก 2 ไฟล์ ตั้งชื่อ mytool.mdb กับ mydata.mdb
2. เปิด mydata.mdb ลบทุกอย่างที่ไม่ใช่ table ได้แก่ query , form , report , module , macro ออกให้หมด แล้วปิดไฟล์ mydata.mdb
3. เปิด mytool.mdb แล้วไปที่ table ลบทุก table ทิ้งให้หมด
4. เรียก menu Link Tables ซึ่งจะอยู่ที่ menu File , Get External data
5. คราวนี้ Access จะให้คุณใส่ไฟล์ที่จะผูกดอง Data ด้วย ก็เลือกหาไฟล์ mydata.mdb ครับ
6. Access จะเปิดไฟล์ mydata.mdb ออกมาแล้วให้เราเลือกว่าจะเอา Table ไหน Click เลือก แล้วก็ตอบ OK ครับ
7. Compact database ซะหน่อยครับ เพื่อให้ขนาดของ mydata.mdb กับ mytool.mdb ที่ถูกแยกกันอยู่แล้ว มีขนาดเล็กลง โดยการเลือกจาก menu Tools, Database Utilities แล้วไปที่คำสั่ง Compact and repair แล้วเลือกทำไฟล์ 2 ไฟล์ที่แยกไว้ครับ
ภาพ3แสดงการ Link Attach Table
ถ้าเรานำไฟล์ที่เป็น mydata.mdb ไปไว้ที่ folder อื่นๆ หรือไปไว้ที่ server แน่นนอนว่า เจ้า mytool.mdb คงไม่รู้ไม่เห็นเอาด้วย ก็ต้องทำการ Attach ใหม่นะครับ หรือไม่ยังไงตอนเปิด Access อีกที Access จะถามว่า ตารางที่เคยอยู่ mydata.mdb ตอนนี้อยู่ที่ไหนนะ !
Tip การผูก Link Table ที่กล่าวมานี่สามารถนำไป Link Table บน Server ได้โดยการใส่เป็นชื่อ Network สมมุติว่า เราเก็บไฟล์ mydata ไว้ที่ server ชื่อ SALESERVER ตอนที่ Access ถามว่าไฟล์อยู่ที่ไหน ก็ใส่ไปเลยครับว่า \\SALESERVER แล้วก็เข้าไปชี้ไฟล์ใน FOLDER ของ SERVER หรือ หากเป็น IP เช่น \\192.168.5.55 ก็ ใส่ไปเลยครับว่า \\192.168.5.55
เชื่อม ACCESS ไปหา Database อื่นๆ
ตรงที่เราทำ Link Table เมื่อครู่เป็นการ Link ไปหา Table ที่เป็นลักษณะไฟล์ คราวนี้หากเรามีระบบฐานข้อมูล RDBS ที่เป็น Server เช่น SQL Server, Oracle, DB2,… แล้วต้องการให้ Access ไปเชื่อมข้อมูล ก็มีขั้นตอนคือ
1 ให้ติดตั้ง Driver เหล่านี้ลงในเครื่องด้วย แล้วทำการสร้าง DSN ( Data Sources Name ) ผ่านใน ODBC ของเครื่อง ( XP : Control panel, Administrative Tool, Data Source (ODBC) ) เลือกสร้างใน TAB SYSTEM DSN , กด ADD แล้วใส่ชื่อ Data Source Name ,ใส่ค่า Config ตามลักษณะการ Config ของ Database แต่ละเจ้า ตรงนี้จะแตกต่างกันนะครับ ผมมี ตย. ของ SQL Server กับ Oracle ตามภาพที่ 4 ครับ บางที อาจมี DSN สำหรับเชื่อม Database ปลายทางไว้แล้วในเครื่องก็ได้นะครับ ก็ใช้ตัว DSN ที่มีนั้นๆ ได้เลย
ภาพ4แสดงการ Link Attach Table
2 กลับมาที่ Access ครับ มา Link Table ใหม่ แต่แทนที่จะเลือกเป็นไฟล์ ตรง File of Type ให้เลือกเป็น ODBC database คราวนี้คุณก็จะเห็น DSN ที่คุณสร้างไว้ Click เลือก DSN ตรงนี้อาจจะต้องใส่ Username Password ในการเข้าไปยัง Database นั้นๆ ด้วย แล้วจะเห็น Table คราวนี้ก็เลือก Shop ตามอัธยาศัย
หมายเหตุ : การทำแบบนี้ ทาง DBA หรือ ADMIN อาจจะเคืองคุณได้ง่ายๆ นะครับ ควรแจ้งให้ทาง IT ที่ดูแล DATABASE ที่คุณจะ LINK ทราบด้วย
ปิด CODE ส่วนพัฒนา ด้วยการ Compile เป็น MDE ซะ
Access มี function ที่เหมือนเป็นการ Compile นี้เหมือนกันครับ คล้ายๆ การทำ .exe แต่ เป็น .mde ครับ ยังคงต้องใช้ ตัวโปรแกรม MS access มาเปิดไฟล์นี้อยู่เหมือนกัน แต่ไฟล์ .mde นี้จะไม่เห็น source code ไม่ได้แนะนำให้หวง code นะครับ แต่ควรจะปิดสวนโปรแกรมครับ ทั้ง form , report , macro ไม่งั้น user อาจไป ปรับแก้เล่นๆ ได้ วิธีการทำ mde ก็ไปที่ menu Tools , Utilities , Make MDE… ผลที่ได้ จะเป็นไฟล์ .mde ที่ถ้าหากเราไปเปิดดูอีกที จะแก้ไข code ไม่ได้แล้ว ค่อย copy ตัว mde ให้ user ใช้
ตอนติดตั้ง ต้องลง Office ทุกเครื่องที่ใช้โปรแกรมของเราไหม ?
ไม่จำเป็นครับ Access มี Version ที่เรียกว่า Access runtime สำหรับติดตั้งลงบนเครื่องลูกที่ไม่มี ชุด Microsoft Office โดยเฉพาะ สามาาถนำไปเปิด mdb หรือ mde ที่ compile แล้วได้เหมือนกัน โดยไม่ต้องเสียตังค่าชุด Offiice แต่การที่เราจะมี ตัว Runtime นี้เพื่อไว้ลงแจกตามเครื่องลูก เราก็ต้องซื้อ ชุด Access Developer Tool Kit มาไว้ในมือซะก่อน ก็คือซื้อ License ผู้พัฒนาแทน แล้วเจ้า Runtime ก็จะมาด้วยกัน คราวนี้เราจะแจก Runtime ไปเท่าไรก็ได้ ฟรี ครับ บาง Version ผมเคยเห็นใน Microsft มีให้ Download ด้วยครับ แต่ภายใต้ข้อตกลงว่า คุณต้องมี License Developer นี้ในมือเช่นกันนะครับ
ปรับแต่ง START UP
เวลาที่เราเปิด Access มา ก็จะพบกับ หน้าต่างทำงานของ Access แบบปกติ แต่ถ้าเราทำเป็นโปรแกรมของเราแล้ว ก็คงอยากให้เปิดมาแล้วเป็นโปรแกรมเราเลย ไม่เหลือคราบ Access ไม่มี แถบ menu หรือ Database Windows ตรงนี้มีวิธีทำครับ ให้ไป ปรับค่าเริ่มต้นโดยเรียก menu Tool, Start up จากนั้นก็ติดตั้งค่าต่างๆ สำหรับค่าที่ Recommend ให้ทำการติดตั้งสำหรับไฟล์ mdb ที่แยกเป็นส่วนพัฒนาโปรแกรม แสดงไว้ตามตารางครับ
หัวข้อ | คำอธิบาย | ควรจะ |
Application Title | ชื่อโปรแกรมที่ปรากฎแทนคำว่า Microsoft Access | ใส่ชื่อโปรแกรมของเรา |
Diaply Form/ Page | หน้า Form แรกที่ให้แสดงตอนเปิดไฟล์ | ใส่ Form ที่ออกแบบไว้ ควรเป็นหน้า Login หรือ หน้า menu สำหรับเลือกโปรแกรม พบกับวิธีทำในเล่มต่อไปครับ |
Application Icon | รูป ICON แทน รูป กุญแจของ Access | หา Icon ที่แสดงความเป็นโปรแกรมเรามาแทน |
Menu Bar | ระบุชื่อ Menu Bar ที่ต้องการใช้แทน Menu Bar ปกติของ Access | สร้าง / กำหนด มาเอง แล้วใส่ชื่อ menu ที่สร้างไว้ตรงนี้ |
Shortcut Menu Bar | ระบุชื่อ Shortcut Menu Bar ที่ต้องการใช้แทน Menu Bar ปกติของ Access | Default |
Allow Full Menus | เลือกให้ User สามารถใช้ Menu ทุกตัวของ Access สำหรับการพัฒนาโปรแกรมแล้ว เราไม่ควรเลือก แล้วกำหนด Menu Bar ของเราเอง | ไม่ CLICK |
Allow Built-in Toolbars | อนุญาติให้ User ใช้ Toolbar ในโปรแกรมหรือไม่ ( ไม่ควร ) | ไม่ CLICK |
Allow Default Shortcut Menus | อนุญาติให้ User ใช้ Shortcut Menu ที่ Access ทำไว้หรือไม่ | Click |
Allow Toolbar/Menu Change | อนุญาติให้ User ทำการเปลี่ยนแปลงแก้ไข Menu หรือ Toolbar หรือไม่ ( ไม่ควร, ให้เป็นไปตามที่กำหนดไว้ใน Menu Bar, Shortcut Menu bar ) | ไม่ CLICK |
Display Database Windows | อนุญาติให้สามารถแสดง Database Windows ได้หรือไม่ | ไม่ CLICK |
Display Status bar | ให้มีการแสดง Status bar หรือไม่ | CLICK |
Allow Viewing Code After Error | ให้ Access แสดงข้อความ Error จาก VB Code เมื่อเกิด Error หรือไม่ | ไม่ CLICK |
Use Access Special key | ให้สามารถใช้ปุ่มพิเศษที่ใช้ในการหยุดการคำนวณ คำสั่ง F11 เพื่อดู Database หรือไม่ | ไม่ CLICK |
ถ้าทำการ set แล้ว เวลาเปิด mdb ใหม่ จะพบว่า Access จะปิด menu แถบ ต่างๆ และแสดง form ที่เราสั่งให้แสดง หากต้องการเปิด Access ให้มีของครบๆ เหมือนเดิม ก็ ให้ กด shift ค้างไว้ ก่อนเปิด ไฟล์ Access นะครับ ทุกอย่างจะกลับมาเป็นปกติ
มาถึงท้ายของตอนนี้แล้วครับ เวลาที่เรา Double click ที่ไฟล์ .mdb หรือ .mde เราจะพบ Splash Screen ของ Access มากวนใจอยู่เรือย ก็มีวิธีกำจัดมันออกไปได้เหมือนกันครับ ก็ให้สร้างไฟล์ภาพ สกุล bmp ให้มีชื่อตรงกับ mdb ของเรา เช่น mdb ของผมตอนนี้เป็น mytool.mdb ผมก็สร้างภาพเป็น mytool.bmp แล้วเอาไปเก็บไว้ที่เดียวกันกับ ที่เก็บไฟล์ .mdb คราวนี้พอเปิด mytool.mdb ก็จะได้รูปจาก mytool.bmp มาแทนที่ ลองทำดูนะครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น