วันอาทิตย์ที่ 13 กุมภาพันธ์ พ.ศ. 2554

1: MS Access ในมุมของ Developer Tool

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 มาแทนที่  ลองทำดูนะครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น