บทที่ 10 การเชื่อมต่อฐานข้อมูล อ.สุรินทร์ทิพ ศักดิ์ภูวดล สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร
การเรียกใช้ ADO ActiveX Data objects (ADO)
การเชื่อมต่อฐานข้อมูล เลือก Tool > Reference
การเรียกใช้ ADO เลือก Microsoft ActiveX Data Objects 2.7 Library
การเชื่อมต่อฐานข้อมูลของ MS Access ด้วย ADO แบบที่ 1 Dim ชื่อตัวแปร1 as New ADODB.ชื่อobject Dim ชื่อตัวแปร2 as String ชื่อตัวแปร2 = “ Provider = Microsoft.jet.OLEDB.4.0;”&_ “ Data Source = แหล่งข้อมูล;“ &_ “ User Id = ชื่อ Login; ” &_ (ไม่มีก็ได้) “ Password = รหัสผ่าน;” (ไม่มีก็ได้) ชื่อตัวแปร1.ConnectionString = ชื่อตัวแปร 2 ชื่อตัวแปร1.Open ‘’’กลุ่มคำสั่ง ชื่อตัวแปร1.Close
การเชื่อมต่อฐานข้อมูลของ MS Access ด้วย ADO แบบที่ 2 Dim ชื่อตัวแปร1 as New ADODB.ชื่อobject Dim ชื่อตัวแปร2 as String ชื่อตัวแปร2 = “ Provider = Microsoft.jet.OLEDB.4.0;”&_ “ Data Source = แหล่งข้อมูล;“ &_ “ User Id = ชื่อ Login; ” &_ (ไม่มีก็ได้) “ Password = รหัสผ่าน;” (ไม่มีก็ได้) ชื่อตัวแปร1.Open ชื่อตัวแปร 2 ‘’’กลุ่มคำสั่ง ชื่อตัวแปร1.Close
การเชื่อมต่อฐานข้อมูลของ SQL Server ด้วย ADO แบบที่ 1 ชื่อตัวแปร2 = “Provider = SQLOLEDB;”&_ “Data Source = แหล่งให้บริการข้อมูล;“ &_ “Initial Catalog = ชื่อฐานข้อมูล ;” ชื่อตัวแปร1.ConnectionString = ชื่อตัวแปร 2
การเชื่อมต่อฐานข้อมูลของ SQL Server ด้วย ADO แบบที่ 2 ชื่อตัวแปร2 = “Provider = SQLOLEDB;”&_ “Data Source = แหล่งให้บริการข้อมูล;“ &_ “Initial Catalog = ชื่อฐานข้อมูล ;” ชื่อตัวแปร1.Open ชื่อตัวแปร 2
ตัวอย่าง Dim rsData As New ADODB.Recordset Dim ConnectDB As String Dim SQLCommand As String ConnectDB = "Provider=SQLOLEDB;" & "Data Source=(Local);" & "Initial Catalog=VBAEXCEL;" & "Integrated Security=SSPI" SQLCommand = "Select * from Student" rsData.Open SQLCommand, ConnectDB
การเรียกใช้ DAO Data Access object (DAO) ข้อจำกัดคือ DAO ไม่สามารถเชื่อมต่อ SQL Server ได้
การเรียกใช้ DAO
เลือก Microsoft DAO 3.6 Object Library
การอ้างถึง DAO Dim ชื่อตัวแปร AS DAO.Database Set ชื่อตัวแปร = OpenDatabase(“แหล่งเก็บข้อมูล”) เช่น Dim ConnectDB AS DAO.Database Set ConnectDB = OpenDatabase(“D:\Access\MyDataSource.mdb”)
แบบฝึกหัด Dim ชื่อตัวแปร As new ADODB.Recordset เป็นการประกาศตัวแปรเพื่ออ้างถึง ADO ที่เรียกใช้ Object Recordset
การ Copy ค่าทั้งหมดไปใส่ใน Excel Sheet1.Range("B2").CopyFromRecordset rsData ค่าเท่ากับ Sheet1.Cells(2, 2).CopyFromRecordset rsData
Program Private Sub CommandButton1_Click() Dim rsData As New ADODB.Recordset Dim ConnectDB As String Dim SQLCommand As String ConnectDB = "Provider=Microsoft.jet.OLEDB.4.0;" & "Data Source = D:\VBAProgram\Exercise.mdb;" SQLCommand = "Select * from Student" rsData.Open SQLCommand, ConnectDB If Not rsData.EOF Then Sheet1.Range("B2").CopyFromRecordset rsData ‘’’’’มีค่าเหมือน Sheet1.Cells(2, 2).CopyFromRecordset rsData Else MsgBox “Data not Found", vbCritical, "Error!" End If rsData.Close Set rsData = Nothing End Sub
ข้อสังเกต Sheet1.Range("B2").CopyFromRecordset rsData ‘’’’’มีค่าเหมือน Sheet1.Cells(2, 2).CopyFromRecordset rsData
การระบุค่า Field ใน Recordset ทีละค่า มีรูปแบบคือ ชื่อตัวแปร Recordset.Fields(“FieldName”) ชื่อตัวแปร Recordset(“FieldName”) เช่น rsData.Fields(“SurName") rsData(“SurName") Ex. การนำค่า Recordset ไปใส่ใน Text box txtName.Text = rsData.Fields("Name") หรือ txtName.Text = rsData("Name")
การระบุค่าใน Recordset ทีละค่า Ex. การนำค่า Recordset ไปใส่ใน Excel ทีละค่า Sheet2.Range("B2“)= rsData.Fields("Name") Sheet2.Range(“C2“)= rsData.Fields(“Surname") หรือ Sheet2.Range("B2“)= rsData("Name") Sheet2.Range(“C2“)= rsData(“Surname") Sheet2.Cells(2, 2) = rsData.Fields("Name") Sheet2.Cells(2, 3) = rsData.Fields(“Surname") Sheet2.Cells(2, 2) = rsData("Name") Sheet2.Cells(2, 3)= rsData(“Surname")
หนังสืออ้างอิง เรียนลัด VBA บน Excel, วิศัลย์ พัวรุ่งโรจน์ Excel VBA Programming, วิชา ศิริธรรมจักร์ และสุรเชษฐ์ วงศ์ชัยพรพงษ์