ผู้เขียน หัวข้อ: การติดต่อกับฐานข้อมูล Microsoft Access โดยไม่ต้องตั้งค่าผ่าน ODBC  (อ่าน 1462 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 2591
  • คนดีไม่เบ่ง คนเก่งไม่โม้ คนใหญ่โตไม่อวด
    • ดูรายละเอียด
    • อีเมล์
' ก่อนอื่นก็ต้องประกาศตัวแปร (ควรสร้างความเคยชินและฝึกนิสัยที่ดี ในการพัฒนาโปรแกรม)
' เริ่มต้นประกาศ Connection ของการเชื่อมต่อกับฐานข้อมูล

Option Explicit
Dim ConnString
Dim Conn
' ประกาศตัวแปรเพื่อสร้าง RecordSet (ตารางฐานข้อมูล)
Dim RS
' Structure Query Language - (SQL - อ่านว่า ซีเควล) กำหนดไว้ให้เป็นตัวแปรสตริง
Dim strSQL
'
' ยกตัวอย่างน่ะครับว่าเป็นไฟล์ชื่อ database.mdb
' เราต้องการติดต่อกับ Microsoft Access File
' ซึ่งตรงหลัง Server.MapPath ก็คือตำแหน่งไฟล์ของเรานั่นเอง

ConnString = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("database.mdb")

' สร้างการเชื่อมต่อ หรือ Connection
Set Conn = Server.CreateObject("ADODB.Connection")

' สร้างตารางฐานข้อมูลชั่วคราวไว้ก่อน หรือ ที่เราเรียกว่า RecordSet
Set RS = Server.CreateObject("ADODB.RecordSet")

' เมื่อพร้อมแล้วก็ทำการเชื่อมต่อเข้ากับฐานข้อมูลได้เลย
Conn.Open ConnString
' เช่น การเชื่อมตารางลูกค้า (tblCustomer) โดยจัดเรียงตามหมายเลขลูกค้า (CustomerID)

strSQL = "SELECT * FROM tblCustomer ORDER BY CustomerID"
' เปลี่ยนเป็น 0 เมื่อต้องการให้อ่านไปข้างหน้า เพื่อเพิ่มความเร็วในการอ่านข้อมูล เพราะจะใช้ประโยชน์ในการตรวจสอบข้อมูล
RS.CursorType = 2
' 0 = adOpenForwardOnly
' 1 = adOpenKeySet
' 2 = adOpenDynamic
' 3 = adOpenStatic

' รายละเอียดขอไม่อธิบายน่ะครับ (ปกติก็ใช้ LockType = 3 เป็นการล็อกเรคคอร์ดแบบ Optimistic)
RS.LockType = 3
' ทำการเปิด Recordset
RS.Open strSQL, Conn
' แสดงผลข้อมูล (สมมุติน่ะครับ สมมุติน่ะครับ ว่ามีข้อมูลอยู่แล้ว)
'
' เช่น txtFirstname = RS("Firstname") เมื่อ Firstname คือชื่อฟิลด์ในตารางฐานข้อมูล
'
' ถ้าหากต้องการนับจำนวนข้อมูลในตารางทั้งหมดก็เขียน Code เพิ่มดังนี้
' Dim i
' i = 0
' DO Until RS.EOF
'      i = i + 1
'      RS.MoveNext
' LOOP

' Response.Write "จำนวนข้อมูลทั้งหมด: " & i
'
' สุดท้าย ท้ายสุด ก็อย่าลืมปิดฐานข้อมูลด้วยแล้วกันครับผม
RS.Close
Conn.Close
Set RS = Nothing
Set Conn = Nothing

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 2591
  • คนดีไม่เบ่ง คนเก่งไม่โม้ คนใหญ่โตไม่อวด
    • ดูรายละเอียด
    • อีเมล์
ขออธิบายแบบคนไม่ชอบอ้างตำราน่ะครับ ... สมมุติ ...

เมื่อ + คือ BOF หรือ Begin Of File (เริ่มต้นข้อมูล)
และ - คือ EOF หรือ End Of File (สิ้นสุดข้อมูล)

หากมีข้อมูล +ABCD- ... เวลาอ่านข้อมูลมันก็จะเริ่มต้นจากจุดที่กำหนด คือ + และอ่านข้อมูลจาก A ไปเรื่อยๆถึง D  และเจอ - ก็จะบอกว่าจบการอ่านข้อมูลแล้วน่ะ

หากมี +- ... นั่นก็คือจุดเริ่มต้น กับสิ้นสุดมันมาตรงกัน หรือไม่มีข้อมูลใดๆมาคั่นกลางไว้ ความหมายก็คือ ก็มันไม่มีข้อมูลน่ะซิครับ

สำหรับ If Not (.BOF And .EOF) ... ขยายความแบบง่ายๆตามอธิบายมา
ถ้าไม่ใช่จุดเริ่มต้น และ ไม่ใช่จุดสิ้นสุด ... ครั้นแล้ว (Then) แสดงว่ามันต้องมีข้อมูลเป็นแน่แท้


ใช้กับอะไรครับ vb 6 หรือว่า ผ่านเว็บ

ได้ทั้งสองล่ะครับ แต่ตัวนี้เน้นไปที่ ASP เป็นหลักครับผม เมื่อหากนำไปใช้กับ VB ก็จะปรับโค้ดอีกเล็กน้อย ตรงการสร้าง Connection และ RecordSet แต่ความหมายมันก็อันเดียวกันนั่นแหละ อีกอย่างใน VB ก็ "ควรจะต้อง" กำหนดชนิดของตัวแปร และการ Connect ทั้งระดับไฟล์ และ ตารางไว้ด้วย ซึ่งสำหรับ ASP ไม่มีความจำเป็นครับผม

สามารถอ่านรายละเอียดเพิ่มเติมในเรื่องของ VB กับ Access ทั้ง 9 ตอน รวมทั้งตอนพิเศษต่างๆด้วยครับ

ไม่เข้าใจคำถามน่ะครับ

อันนี้เป็นตัวอย่าง ASP Script ที่ใช้ติดต่อกับฐานข้อมูล MS Access ทุกรุ่น ... หรืออีกแบบ คือ ...

ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("Database.mdb") & ";"

ส่วนการติดต่อกับ MS Access ด้วย Visual Basic ให้ดูได้ในบทความของ VB ได้เลยครับผม

Connection นี้ผมทำเอาไว้สำหรับ ASP Script ครับผม ... หากเป็นกรณีที่ถาม ASP
ในส่วนนี้ปกติเราจะไปวางไว้แยกอีกไฟล์หนึ่ง จากนั้นก็ทำการดึงไฟล์เข้ามา เช่น

เพื่อลดการประกาศ หรือ เชื่อมต่อบ่อยครั้งเกินไป ...

หากหมายถึง VB6 เพราะพูดถึง Form สามารถดูจากตัวอย่างต่างๆในกลุ่ม VB ครับผม