วันจันทร์ที่ 27 มกราคม พ.ศ. 2557

2.2.10 การใช้ Data Control

           2.2.10 การใช้ Data Control
         การเขียนโปรแกรมฐานข้อมูลด้วย Data Control
ความรู้ทั่วไปเกี่ยวกับ Relational Database
Relational Database คือกลุ่มของข้อมูลที่สัมพันธ์กัน (Relation) ซึ่งจัดเก็บอยู่ในรูปของตาราง (Table) แต่ละตารางจะประกอบไปด้วยกลุ่มของ Record โดยแต่ละ Record จะประกอบไปด้วยกลุ่มของ Field ดังนั้นจึงอาจกล่าวได้ว่าแต่ละตารางก็เปรียบเสมือนกับ Spread Sheet ที่มี Record แสดงอยู่ในรูปของแถว (Row) และ Field แสดงอยู่ในรูปของสดมภ์ (Column)
ประเภทของความสัมพันธ์ระหว่าง Table แบ่งออกเป็น 3 ประเภทคือ
ประเภทที่ 1 ความสัมพันธ์แบบ One-to-Many
หมายถึง ข้อมูล 1 Record ใน Table หนึ่งจะมีความสัมพันธ์กับข้อมูลในอีก Table หนึ่งมากกว่า 1 Record เช่น เจ้าของบัญชีเงินฝากธนาคาร 1 คน สามารถมีบัญชีเงินฝากได้มากกว่า 1 บัญชี
ประเภทที่ 2 ความสัมพันธ์แบบ One-to-One
หมายถึง ข้อมูลแต่ละ Record ใน Table หนึ่งจะมีความ สัมพันธ์กับข้อมูลในอีก Table หนึ่งเพียง Record เดียว เช่น กรณีมีการกำหนดให้ บัญชีเงินฝากธนาคารแต่ละบัญชีจะมีเจ้าของบัญชีได้เพียงคนเดียว
ประเภทที่ 3 ความสำพันธ์แบบ Many-to-Many
หมายถึง หลาย Record ใน Table หนึ่งจะมีความสัมพันธ์กับอีกหลาย Record ในอีก Table หนึ่ง เช่น เจ้าของบัญชีเงินฝาก 1 คน สามารถเป็นเจ้าของบัญชีเงินฝากได้มากกว่า 1 บัญชี และแต่ละบัญชีเงินฝากสามารถมีเจ้าของบัญชีได้มากกว่า 1 คน
ตารางหรือ Table
          Table เป็นพื้นที่ที่ใช้ในการเก็บข้อมูลจริงๆ ในฐานข้อมูล แต่ละตารางจะอยู่ในรูปของตารางขนาด 2 มิติ โดยที่แต่ละแถวหรือ Row ได้แก่ Record ส่วนสดมภ์หรือ Column จะได้แก่ Field หรือ Attribute ซึ่งจะต้องมีคุณสมบัติที่ประกอบไปด้วย ชื่อ ประเภทของข้อมูล และขนาด
Data Control
         Visual Basic จะอาศัย Control ชื่อ "Data" (มักจะเรียกว่า "Data Control") ในการทำงานร่วมกับ Database โดยที่ 1 Data Control จะใช้อ้างถึง 1 Table หรือมากกว่าใน
ฐานข้อมูล (กรณีที่อ้างถึงมากกว่า 1 Table จะหมายถึง การนำเอา Table ต่างๆ ที่สัมพันธ์กันมา Join กัน) ข้อมูลที่ถูกอ่านจาก Table มาเก็บไว้ใน Data Control จะเรียกว่า "Recordset" ดังนั้นจึงอาจกล่าวได้ว่า Recordset ได้แก่ กลุ่มของ Record ใน Table ซึ่งอาจมาจาก 1 หรือมากกว่า 1 Table ที่ถูกอ่านเข้ามาเก็บไว้ในตัว Data Control ตามเงื่อนไขที่กำหนด ในการอ้างถึง Recordset ใน Data Control ให้เขียนอยู่ในรูปแบบ ดังนี้


          Data Control นี้จะอยู่ในรูปแบบของ VCR-Style ซึ่งประกอบด้วยปุ่มลูกศร จำนวน 4 ปุ่ม ทั้ง 4 ปุ่มนี้จะใช้สำหรับเลื่อน Pointer ของ Record ดังนี้
-ปุ่มหมายเลข 1 ใช้สำหรับเลื่อน Pointer ไปยัง Record แรกใน Recordset
-ปุ่มหมายเลข 2 ใช้สำหรับเลื่อน Pointer ไปยัง Record ก่อนหน้า Record ปัจจุบันใน   Recordset  
-ปุ่มหมายเลข 3 ใช้สำหรับเลื่อน Pointer ไปยัง Record ถัดจาก Record ปัจจุบันใน   Recordset  
-ปุ่มหมายเลข 4 ใช้สำหรับเลื่อน Pointer ไปยัง Record สุดท้ายใน Recordset
Method ที่ใช้ในการจัดการข้อมูล
ในการเพิ่มข้อมูลเข้าไปยัง Table ต่างๆ ใน Database จะอาศัย Method "Addnew” เพื่อสร้าง Record ว่างต่อเพิ่มเข้าไปใน Recordset


Method ที่ใช้ในการบันทึกข้อมูลที่มีการแก้ไข ได้แก่ Method "Update" โดยจะบันทึกข้อมูลที่ปรากฏอยู่ใน Object ที่เป็น Bound Control กลับลงไปยัง Record ปัจจุบันใน Recordset รูปแบบของคำสั่งเป็นดังนี้


Method ที่ใช้สำหรับลบข้อมูล Record ปัจจุบันออกจาก Recordset ได้แก่ Method ’Delete“

ในการลบ Record ทุกครั้งหลังจากลบ ควรที่จะมีการขยับ Pointer เนื่องจาก Record ปัจจุบันได้ถูกลบไปเพื่อป้องกันการสับสนว่า Pointer ชี้ไปที่ Record ใด สำหรับ Method ที่ใช้ในการเลื่อน Pointer ได้แก่ Method"MoveFirst", "MoveNext", "MoveLast" และ "MovePrevious
          ทั้ง 4 Method นี้ จะมีรูปแบบของคำสั่งเช่นเดียวกัน สำหรับหน้าที่ของแต่ละ Method มีดังนี้
1. MoveFirst ใช้สั่งให้ Data Control เลื่อน Pointer ไปยัง Record แรกใน Recordset
2. MoveLast ใช้สั่งให้ Data Control เลื่อน Pointer ไปยัง Record สุดท้ายใน Recordset
3. MoveNext ใช้สั่งให้ Data Control เลื่อน Pointer ไปยัง Record ถัดไปใน Recordset
4. MovePrevious ใช้สั่งให้ Data Control เลื่อน Pointer ไปยัง Record ก่อนหน้า ใน Recordset


          Method ที่ใช้ในการค้นหาข้อมูลใน Recordset จะประกอบไปด้วย
1. EindFirst ใช้สำหรับค้นหา Record โดยทิศทางในการหาจะเริ่มจาก Record แรก   ไปยัง Record สุดท้ายใน Recordset จนกระทั่งพบ Record ซึ่งตรงกับเงื่อนไขในการค้นหา
2. FindLast ใช้สำหรับค้นหา Record โดยทิศทางในการหาจะเริ่มจาก Record สุดท้ายไปยัง Record แรกใน Recordset จนกระทั่งพบ Record ซึ่งตรงกับเงื่อนไขในการค้นหา
3. FindNext ใช้สำหรับค้นหา Record โดยทิศทางในการหาจะเริ่มจาก Record  ปัจจุบันไปยัง Record สุดท้ายใน Recordset จนกระทั่งพบ Record ซึ่งตรงกับเงื่อน ไขในการค้นหา
4. FindPrevious ใช้สำหรับค้นหา Record โดยทิศทางในการหาจะเริ่มจากRecord ปัจจุบันไปยัง Record แรกใน Recordset จนกระทั่งพบ Record ซึ่งตรงกับเงื่อนไขในการค้นหา
          DBCombo และ DBList
          DBCombo และ Control ที่มีลักษณะการทำงานคล้ายกับ ComboBox เช่น ComboBox
ส่วน DBList เป็น Control ที่มีลักษณะการทำงานคล้ายกับ ListBox แต่ต่างกันที่ทั้ง 2 Control นี้ จะสามารถเข้าถึงข้อมูลใน Recordset ได้โดยตรง แต่เนื่องจากทั้ง 2 Control นี้ ไม่ได้เป็น Bound Control มาตรฐาน ดังนั้น จึงต้องเพิ่มเข้ามาไว้ใน Toolbox ก่อน โดยมีขั้นตอนดังนี้
1. เลือกเมนู Project และ Components ตามลำดับ จะปรากฏจอภาพ Components ให้เลือก "Microsoft Data Bound List Control 6.0
2. คลิกที่ปุ่ม OK จะปรากฏ 2 Control ใหม่ ซึ่งได้แก่ DBList และ DBCombo ใน Toolbox
          การเข้าถึงข้อมูลใน Field โดยไม่ต้องใช้ Bound Control
การเข้าถึงข้อมูลใน Field นอกเหนือจากการใช้ Bound Control แล้ว เรายังสามารถเข้าถึงข้อมูลได้โดยการเขียนโปรแกรม เช่น การนำค่า Field มาเก็บไว้ในตัวแปร เป็นต้น ในการเข้าถึงข้อมูลใน Field จะต้องอาศัย Property "Value" ซึ่งรูปแบบในการอ้างถึงดังนี้

          Event "Reposition"
จะเกิดอะไรขึ้นเมื่อมีการเลื่อน Pointer ของข้อมูล ซึ่งอาจเกิดจากการคลิกที่ปุ่มทั้ง 4 ปุ่มของ Data Control หรือเกิดการใช้ Method ที่ก่อให้เกิดการเลื่อน Pointer ของข้อมูลขึ้น เช่น Method "MoveFirst", 'MoveLast", "EindFirst", "FindLast" เป็นต้น 
Data Control กับ SQL 
SQL จะประกอบไปด้วย 2 ส่วนคือ Data Definition Language (DDL) ซึ่งใช้สำหรับสร้างฐานข้อมูล และ Date Manipulation Language (DML) ซึ่งใช้สำหรับจัดการกับฐานข้อมูล แต่ในที่นี้ เราจะให้เกิดความสนใจเฉพาะในส่วนของ DML คำสั่งของ SQL ในส่วนของ DML มักจะอยู่ในรูป 
     การใช้งาน SQL
ในการใช้งาน SQL กับ Data Control จะใช้การกำหนดประโยคคำสั่งที่เขียนขึ้นด้วย SQL ลงใน Property "RecordSource" Data ของ Control แทนการกำหนดชื่อ Table ในลักษณะเดิม แล้วจึงใช้ Method "Refresh" เพื่อสั่งให้ Data Control ทำงานตามคำสั่งที่กำหนด 
การเชื่อมโยงของข้อมูลระหว่าง Table ที่สัมพันธ์กันภายในภาษา SQL จะอาศัยคำสั่ง INNER JOIN ซึ่งมีรูปแบบดังนี้ 


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

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