12/06/2554

การเขียน VB6 เชื่อมต่อกับ Access Database

บทความนี้ไม่ได้เกี่ยวกับวิธีการสร้างหรือการออกแบบฐานข้อมูล แต่จะเป็นเกี่ยวกับวิธีการเชื่อมต่อกับฐานข้อมูลและการจัดการฐานข้อมูลโดยใช้ VB6 ซึ่งมันสามารถทำงานได้ มีการความแตกต่างกันบางอย่างเล็กน้อย กับการใช้ VBA

มีหลายวิธีการเชื่อมต่อกับฐานข้อมูล (ตัวอย่างเช่น Access) จะผ่านตัวควบคุมที่ผูกข้อมูล DAO หรือ ADO ในทั้งที่
ผมไม่ได้ใช้ตัวควบคุมที่ผูกข้อมูล เพราะผมชอบที่จะให้การควบคุมของสิ่งที่เกิดขึ้นกับข้อมูลเพื่อให้ส่วนที่เหลือเป็นเรื่องเกี่ยวกับ DAO / ADO

เริ่มต้นด้วยการที่คุณจำเป็นต้องสร้างตัวแปรไม่กี่ชนิดต่อไปนี้

  • Workspace ADODB.Connection - นี่เป็นสิ่งจำเป็นถ้าคุณกำลังใช้กระบวนการแบบ process
  • Database - นี้เชื่อมต่อกับระเบียนของฐานข้อมูล
  • ADODB.Recordset - นี่คือตัวแปรระดับ ตาราง / แบบสอบถาม
  • Field ADODB.Field - นี่ช่วยให้เราได้รับข้อมูลเกี่ยวกับเขตข้อมูล

การเชื่อมต่อ Database

การเชื่อมต่อกับฐานข้อมูล Access มันสามารถทำได้ 2 วิธี เพื่อเชื่อมต่อกับฐานข้อมูลแบบ JET หรือ ODBC ส่วนตัวผมใช้ ODBC เพราะการจัดการไฟล์ที่ง่ายขึ้นที่จะเปลี่ยนชื่อไฟล์หรือเส้นทางเพียงแค่ใช้ ODBC ผู้ดูแลระบบในแผงควบคุม
หมายเหตุ : ตัวอย่างเหล่านี้เป็นที่นี่เพื่อแสดงสิ่งที่ต้องทำมากเพียงบางส่วนของคำสั่งที่มีตัวเลือกมากกว่าที่จะแสดงผล

ตัวอย่างการเชื่อมต่อโดยใช้ DAO - เชื่อมต่อกับฐานข้อมูลแบบ JET
Dim ws as Workspace
Dim db as Database

Set ws=DBEngine.Workspaces(0)
set db=ws.OpenDatabase({databasepath and name})

ตัวอย่างการเชื่อมต่อโดยใช้ DAO - เชื่อมต่อกับฐานข้อมูลแบบ ODBC

Dim ws as Workspace
dim db as database
dim strConnection as string

set ws=DBEngine.Workspaces(0)
let strConnection= "ODBC;DSN=" & DatabaseName & ";UID=" & UserName 
& ";PWD=" & UserPassword
set db=ws.OpenDatabase("", False, False, strConnection)

ตัวอย่างการเชื่อมต่อโดยใช้ ADO 

Dim ad as ADODB.Connection

set ad=New ADODB.Connection
Let ad.ConnectionString= "ODBC;DSN=" & DatabaseName & ";UID=" & 
UserName & ";PWD=" & UserPassword
ad.Open

การเปิดตารางเพื่อแสดงผล และการสร้าง Query

ตอนนี้เรามีการเชื่อมต่อฐานข้อมูลที่จัดตั้งขึ้นเพื่อที่จะดูที่ข้อมูล ตัวอย่างต่อไปนี้แสดงวิธีการเปิดตาราง / แบบสอบถามและย้ายผ่านมัน


ตัวอย่างการเชื่อมต่อโดยใช้ DAO
Dim rs as recordset

set rs=db.openrecordset({tablename or SQL})
do while not rs.eof
  'Put the code here for what to do with the information.
  'The field information can be access by the field name
  intID=rs!IDField
  'Or by the order number it is in the list (starting at 0)
  intString=rs.Field(1)
  rs.movenext
loop
ตัวอย่างการเชื่อมต่อโดยใช้ ADO
dim ar as ADODB.recordset

set ar=new adodb.recordset
ar.open {SQL Statement}
do while not ar.EOF
  'Put the code here for what to do with the information.
  'The field information can be access by the field name
  intID=ar!IDField
  'Or by the order number it is in the list (starting at 0)
  intString=ar.Field(1).value
  ar.movenext
loop

การเปลี่ยนแปลงข้อมูล

การแก้ไข / เพิ่ม / ลบบันทึกที่เราสามารถทำมันได้ทั้งการใช้ SQL หรือโดยตรง ทั้งแบบ DAO และ ADO ใช้วิธีการดำเนินการสำหรับการทำปรับปรุงโดย SQL
DAO
 
Dim rs as recordset

set rs=db.openrecordset({tablename or SQL})
rs.execute "INSERT INTO tb(ID,Name) VALUES (10,Anne)"
ADO
dim ar as ADODB.recordset

set ar=new adodb.recordset
ar.open {SQL Statement}
ar.execute "INSERT INTO tb(ID,Name) VALUES (10,Anne)"

ตัวอย่างเหล่านี้ เพิ่มระเบียนใหม่ไปยังฐานข้อมูลโดยตรง
DAO - Add New Record
Dim rs as recordset

set rs=db.openrecordset({tablename or SQL})
rs.addnew
rs!ID=intID
rs!Name=strName
rs.update
ADO - Add new record
dim ar as ADODB.recordset

set ar=new adodb.recordset
ar.open {SQL Statement}
ar.addnew
ar!ID=intID
ar!Name=strName
ar.update
ตัวอย่างเหล่านี้แสดงวิธีการแก้ไขบันทึกโดยตรงหลังจากที่ระเบียนถูกเปิด มันจะตรวจสอบว่ามีการบันทึกตรงกับเงื่อนไขที่สร้างตาม SQL
 
DAO - Edit record
Dim rs as recordset

set rs=db.openrecordset("SELECT * FROM Tb WHERE tdID=10")
if rs.eof then
  rs.addnew
else
  rs.edit
end if
rs!ID=intID
rs!Name=strName
rs.update
ADO - Edit Record
dim ar as ADODB.recordset

set ar=new adodb.recordset
ar.open "SELECT * FROM Tb WHERE tdID=10"
if ar.eof then
  ar.addnew
else
  ar.edit
end if
ar!ID=intID
ar!Name=strName
ar.update
ตัวอย่างเหล่านี้แสดงวิธีการลบระเบียนโดยตรงหลังจากที่ระเบียนถูกเปิดมันจะตรวจสอบว่าตรงตามเงื่อนไขการค้นหาหรือไม่ ถ้าไม่ตรง มันจะไม่ได้ทำการลบข้อมูล
DAO - การลบข้อมูล
Dim rs as recordset

set rs=db.openrecordset("SELECT * FROM Tb WHERE tdID=10")
if not rs.eof then
  rs.delete
end if
ADO - การลบข้อมูล
Dim ar as ADODB.recordset

set ar=new adodb.recordset
ar.open "SELECT * FROM Tb WHERE tdID=10"
if not ar.eof then
  ar.delete
end if
หมายเหตุ เมื่อคุณเปิดใช้ object เสร็จแล้วให้ปิดมันซะโดยใช้คำสั่ง
    rs.close
    set rs=nothing
เป็นตัวอย่างที่สามารถใช้งานได้จริงครับ

1 ความคิดเห็น:

  1. ไม่ระบุชื่อ30/3/56 17:58

    ยังค้างคาหลายข้อ
    ขอบคุณที่ให้ความรู้เพิ่ม

    ตอบลบ

ท่านสามารถแสดงข้อคิดเห็นที่เหมือน หรือ แตกต่างได้ครับ ขอความกรุณาใช้ถ้อยคำที่สุภาพด้วยครับ ขอบคุณครับ