Saturday, September 7, 2013

Visual Basic 6.0 และ การใช้ Snapshot ต่าง (Using Snapshots)



Visual Basic 6.0 และ การใช้ Snapshot ต่าง (Using Snapshots)
ใน Visual Basic 6.0 Snapshot เป็นชื่อที่มีความหมายเป็นภาพหรือสำเนาข้อมูลในกลุ่มเรคอร์ด (Recrodset) ที่เวลาใดเวลาหนึ่งโดยเฉพาะ
Snapshot คล้ายกับ Dynaset ตรงที่สร้างจากตารางต่างๆ, การใช้คำสั่งของ SQL, หรือ จาก QueryDef, dynaset หรือ snapshot อื่น snapshot ต่างจาก dynaset ตรงที่มันไม่สามารถปรับปรุงได้
ตัวอย่าง Source Code ต่อไปนี้ ได้แสดงวิธีการสร้างกลุ่มเรคอร์ด (Record) ประเภท Snapshot เอาไว้คือ
Set ThisRS=ThisDB.OpenRecordset(sSQL,dbOpenSnapshot)
*** Snapshot จะนำข้อมูลในแต่ละเรคอร์ดออกมาแสดงได้เร็วกว่า Dynaset เพราะว่า snapshot จะใช้วิธีสำเนาข้อมูล แต่ dynaset จะใช้วิธีกำหนดพอยน์เตอร์ (pointer) ชี้ไปที่ข้อมูล
Snapshot  ไม่สามารถปรับปรุง recordset
***เราควรใช้ snapshot ส่งกลับกลุ่มเรคอร์ดเล็กๆเท่านั้น เพื่อไม่ให้เกิดปัญหากับหน่วยความจำต่างๆ
การติดตั้ง snapshot (Setting Up a Snapshot) เราสามารถสร้าง snapshot โดยการกำหนดออปเจ็คต์ Recordset กับคำสั่ง Dim
แล้วใช้ เมธอด OpenRecordset พร้อมพารมิเตอร์ dbOpenSnapshot เพื่อกำหนดเรคอร์ดต่างๆให้ออปเจ็คต์ dynaset จะอนุญาตท่านสามารถระบุพารามิเตอร์ต่างๆในเมธอด OpenRecordset ดังนี้
dbDenyWrite   ป้องกันผู้ใช้อื่นๆ ไม่ให้เขียนลงใน dynaset ในขณะที่เราเปิดใช้งานอยู่
dbForwardOnly สนับสนุนให้เลื่อนผ่าน snapshot ไปข้างหน้าเท่านั้น
dbSQLPassThrough ผ่านคำสั่งของ SQL ที่ใช้สร้าง snapshot ไปให้ฐานข้อมูลของ ODBC เพื่อดำเนินการ

Visual Basic 6.0 และ การใช้ กลุ่ม Record ที่เลื่อนไปข้างหน้าเท่านั้น

Visual Basic 6.0 และ การใช้ กลุ่ม Record ที่เลื่อนไปข้างหน้าเท่านั้น
กลุ่ม Record ที่เลื่อนไปข้างหน้าเท่านั้น จัดได้ว่าเป็น snapshot ประเภทหนึ่ง ที่อนุญาตให้เลื่อนผ่านเรคอร์ดต่างๆ ไปข้างหน้าได้อย่างเดียวเท่านั้น อันนี้หมายความว่า ท่านใม่สามารถใช้เมธอด MoveFist, MovePrevious, Find ทำงานบน Recordset ดังกล่าว
งานลักษณะนี้เหมาะสำหรับใช้รายงานสารสนเทศต่างๆอย่างรวดเร็ว
การกำหนดให้ Rcordset ให้เลื่อนไปข้างหน้าอย่างเดียวเท่านั้น ท่านจะต้องใช้เมธอด Open Recordset และระบุค่าคงที่ dbOpenForwardOnly ดังนี้
Set ThisRS =ThisDB.OpenRecordset(sSQL, dbOpenForwardOnly)


Visual Basic 6 และการใช้ Dynaset ต่างๆ (Using Dynasets)



Visual Basic 6 และการใช้ Dynaset ต่างๆ (Using Dynasets)
Dynaset  เป็นสารสนเทศจากหนึ่งหรือมากกว่าหนึ่งตารางในฐานข้อมูล สารสนเทศนี้ประกอบด้วยฟิลด์ต่างๆ ที่เลือกจากตารางต่างๆ ตามเงื่อนไขที่ระบุ
Dynaset จะกำหนดที่อยู่ของเรคร์ดต่างๆ ในตาราง เมื่อ Dynaset ถูกสร้างขึ้น Dynaset จะช่วยให้ผู้ใช้สามารถปรบปรุงเรคอรดต่างๆ แล้วบรรจุไว้ในฐานข้อมูล อย่างไรก็ตามไม่สามารถเพิ่มหรือลบเรคอร์ดที่ดำเนินการโดยผู้ใช้อื่นหรือโปรแกรมอื่นโดยอัตโนมัติภายหลังที่ Dynaset  ได้ถูกสร้างขึ้น ดังนั้น Dynaset ต่างๆจะมีประโยชนน้อยสำหรับบางแอพพลิเคชั่นที่ใช้งานหลายคน
การติดตั้ง Dynaset (Setting Up a Dynaset) : การติดตั้ง Dynaset สำหรับใช้ภายในโปรแกรมท่านจำเป็นต้องกำหนด Recordset พร้อมกับคำสั่ง dim แล้วสร้าง Dynaset โดยการใช้เมธอด OpenRecordset พร้อมกับพารามิเตอร์ dbOpenDynaset
เมื่อท่านกำลังสร้าง Dynaset ส่วนคีย์ของเมธอด OpenRecordset เป็นคำสั่งของ SQL ซึ่งกำหนดเรคอร์ดต่างๆ ตามที่ต้องการ
เงื่อนไขของตัวกรอง (Filter), เงื่อนไขของการเรียงลำดับ, และเงื่อนไขการเชื่อมโยงกันของข้อมูลจากหลายตาราง
โค้ดต่อไปนี้ แสดงวิธีการสร้าง Dynaset โดยการใช้คำสั่ง SQL ระบุเงื่อนไขในการจัดการเรคอร์ดต่างๆ
Dim ThisDb as Database
Dim ThisRs As Recordset
Dim sSQL As String
Set ThisDB=OpenDatabase(“Biblio.md”)
sSQL=”SELECT*FROM titles WHERE title<=’J’ ORDER BY title”
Set ThisRS=ThisDB.OpenRecordset(sSQL,dbOpenDynaset)
ถ้าต้องการตารางต่างๆ ทั้งหมดในตารางเดียวใน Dynaset ท่านสามารถละเว้นการใช้คำสั่งของ SQL และใช้ชื่อตาราง title ดังนี้
Dim dbBusiness As Database
Dim rsSales As Recordset
Set rsSales =dbBusiness.OpenDatabase(“titles”)
*** การใช้คำสั่ง SQL เป็นความคิดที่ดี ในกรณีที่ท่านต้องการปรับปรุงเรคอร์ดต่างในภายหลัง
เมื่อเราสร้าง Dynaset เราสามารถใช้คำสั่งของ SQL เลือกเรคอร์ดต่างๆ เรายังสามารถระบุเงื่อนไขต่างๆที่มีผลกระทบต่อพฤติกรรมของ Dynaset ได้ดังนี้
พารามิเตอร์                               กิจกรรม
DbDenyWrite                            ป้องกันผู้ใช้อื่นๆ ไม่ให้เขียนลงใน Dynaset ขณะที่เราเปิดใช้งาน
dbReadOly                                ป้องกันเราไม่ให้เปลี่ยนแปลง Dynaset
dbAppendOnly                          ช่วยเพิ่มเรคอร์ดใหม่ต่างๆ แต่ป้องกันเราจากการอ่านหรือปรับปรุงเรคอร์ดต่างๆ ที่ได้สร้างไว้แล้ว
dbSQLPassThrough                  ผ่านคำสั่งของ SQL ที่ใช้สร้าง Dynaset ไปให้เซิร์ฟเวอร์ของฐานข้อมูลของ ODBC เพื่อดำเนินการ
Source code ต่อไปนี้ เป็น ตัวอย่างแสดงวิธีการสร้าง Recordset ประเภท Dynaset ที่อนุญาตผู้ใช้อ่านสารสนเทศในฐานข้อมูลได้อย่างเดียวเท่านั้น
Dim dbBusiness  As Database
Dim rsSales As Recordsed
Set dbBusiness=OpenDabase(“Biblio.mdb”)
Set rsSales=dbBusiness.OpenRecordset(“SELECT * FROM titles”, _ dbOpenDynaset, dbReadOnly)
*** เซิร์ฟเวอร์ (Server) ของ ODBC เป็นกลไกของฐานข้อมูล เช่น Microsoft SQL Server หรือ Oracle ที่สอดคล้องกับ ODBC (Open Database Connectivity) มาตรฐาน วัตถุประสงค์ของเซิร์ฟเวอร์ก็เพื่อดำเนินการเชื่อมโยงแบบสอบถามในเซิร์ฟเวอร์ และส่งกลับไปยังคอมพิวเตอร์ลูกข่าย (client) เฉพาะผลลัพธ์ต่างๆ ของแบบสอบถาม, ไดรเวอร์ (Driver) ต่างๆ ของ ODBC ซึ่งปกติจะเขียนด้วยเจ้าของกิจการกลไกฐานข้อมูล เพื่อใช้เชื่อมโยงระหว่าง Visual Basic และเซิร์ฟเวอร์ของฐานข้อมูล ขณะนี้ ODBC มีความก้าวหน้ามาก ท่านสามารถใช้เชื่อมโยงไปยังสารสนเทศบนเซิร์ฟเวอร์ต่างๆ ของฐานข้อมูล โดยไม่ต้องทราบการทำงานภายในกลไกนั้นๆ
ท่านสามารถสร้าง Dynaset จาก Dynaset อื่น และยังสามารถใช้ Properties Filter และ Sort ของ Dynaset แรกระบุเรคอร์ดต่างๆ ที่ต้องการและแสดงตามเงื่อนไขต่างๆของ Dynaset ที่สอง
Source code ต่อไปนี้ เป็นตัวอย่างวิธีการสร้าง Dynaset จากตารางลูกค้าให้ Mailling list Dynaset ที่สองสร้างขึ้นเฉพาะลูกค้าที่อาศัยอยู่ใน Tennessee และเรียงลำดับตามรหัสไปรษณีย์ ดังนี้
Dim dbMailList As Database
Dim rsCustomer As Recordset
Dim rsTenCust As Recordset
Set dbMailList =OpenDatabase(“sDBLocation”)
Set rsCustomer=dbMailList.OpenRecordset(“Customers”), dbOpenDynaset)
rsCustomers.Filter=”state=’TN’ “
rsCustomers.Sort=”ZIPS”
สองคำสั้งท้ายสุด ได้สร้าง Dynaset ที่สองพร้อมระบุสารสนเทศที่ต้องการต่างๆจาก dynaset แรก ทำให้ dynaset ที่สองแสดงลูกค้าทั้งหมดจาก Tennessee ได้รวดเร็วมาก