ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 5549|ตอบกลับ: 0

[VB6] พื้นฐานการนำข้อมูลจาก DataBase มาแสดงผลบนตารางกริด (ADODC)

[คัดลอกลิงก์]

320

กระทู้

512

โพสต์

6583

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6583

วันนี้แอดมินจะพาย้อนเวลาถอยหลังกลับไปเมื่อ 20 ปีที่แล้ว กับการเริ่มต้นฝึกฝนเขียนโปรแกรมด้วย Visual Basic 4.0 รุ่น 32 บิท ในยุคที่ข้อมูลข่าวสารทางอินเทอร์เน็ตยังไม่ได้รุ่งเรืองเหมือนในปัจจุบันนี้ ตอนที่ไมโครซอฟท์ออก VB4 มาใหม่ๆ เรียกได้ว่าตื่นตะลึงกันทั้งวงการ เพราะการเชื่อมต่อฐานข้อมูล มันทำในลักษณะแบบ Visual Style ซึ่งทำได้ง่ายดายมากด้วยการลากคอนโทรลมาวางแปะ (นี่คือจุดเริ่มต้นที่ VB ถูกค่อนแคะว่าเขียนโปรแกรมแบบไม่ต้องใช้สมอง) แต่ทว่าด้วยวิธีการนี้มันกลับไม่สามารถตอบโจทย์ของแอดมินหรือคนอื่นๆได้เลย เพราะการพัฒนามันยุ่งยาก ขาดความยืดหยุ่น ผู้ใช้งานก็ใช้ยากอีกนั่นแหละ ...

แอดมินภูมิใจนำเสนอ "รากเหง้า" ของการพัฒนาโปรแกรมติดต่อฐานข้อมูลด้วย Visual Basic 6.0 (SP6) ซึ่งอยากให้ทุกๆท่านได้ลองเปรียบเทียบกันดูซิว่า VB6 มันเหมือนหรือแตกต่างไปจาก VB.Net ที่แอดมินได้เผยแพร่ออกไปเมื่อไม่กี่วันที่ผ่านมา ด้วยวิธีการ Bound Data ในแบบ Run Time ซึ่งจะไม่ใช่การจับลากมาวางแปะแล้วจบ ...
หน้าจอโปรแกรม ... วิธีการนี้เราเรียกว่า การค้นคืนข้อมูล หรือ Retrieve Data อันเป็นจุดเริ่มต้นของทุกๆงาน



การอ้างอิงถึง ADO (Microsoft ActiveX Data Object) เพื่อพูดคุยติดต่อกับฐานข้อมูล


เลือก Component มาใช้งาน


หน้าจอการออกแบบ โดยจะไม่มีการผูกข้อมูล (Bound Data) ให้กับ ADODC (ADO Data Control) เปรียบเทียบได้กับ Data Source บน VB.Net นั่นเอง


แอดมินขอแนะนำให้ลองฝึกใช้เครื่องมือง่ายๆอย่าง MS Access ก่อนครับ ... เป็นตัวอย่างการเชื่อมความสัมพันธ์ของตารางข้อมูลแบบ One To One


ทดสอบ Query จาก MS Access
  1. ' / --------------------------------------------------------------------------------
  2. '// Load data into DataGridView.
  3. Sub BindDataGrid(ByVal Sql As String)
  4.     ' Data Control กับกำหนดการเชื่อมต่อไฟล์ฐานข้อมูลแบบ @Run Time
  5.     With Adodc1
  6.         .CursorLocation = adUseClient
  7.         '// ให้อ่าน SQL Statement (Query)
  8.         .CommandType = adCmdText
  9.         '// แสดงผลข้อมูลอย่างเดียว ใช้ LockType แบบ Read Only
  10.         .LockType = adLockReadOnly
  11.         '// กำหนด RecordSource ด้วย Query
  12.         .RecordSource = Sql
  13.         '// สั่งให้ประมวลผลเพื่อกำหนด RecordSource ที่มาจาก SQL Statement
  14.         .Refresh
  15.     End With
  16.    
  17.     '// Bound Data between Adodc1 and DataGrid Control
  18.     Set DataGrid1.DataSource = Adodc1

  19. End Sub
คัดลอกไปที่คลิปบอร์ด
การ Bound Data แบบ Run Time ... สังเกตครับว่าเหมือนใน VB.Net หรือไม่???

มาดูโค้ดฉบับเต็ม ...
  1. ' / --------------------------------------------------------------------------------
  2. ' / Developer : Mr.Surapon Yodsanga (Thongkorn Tubtimkrob)
  3. ' / eMail : thongkorn@hotmail.com
  4. ' / URL: http://www.g2gnet.com (Khon Kaen - Thailand)
  5. ' / Facebook: https://www.facebook.com/g2gnet (For Thailand)
  6. ' / Facebook: https://www.facebook.com/commonindy (Worldwide)
  7. ' /
  8. ' / Purpose: Simple procedure to binding data into DataGrid @Run Time. (ADODC)
  9. ' / Microsoft Visual Basic 6 (SP6) + MS Access 2007+
  10. ' /
  11. ' / This is open source code under @Copyleft by Thongkorn Tubtimkrob.
  12. ' / You can modify and/or distribute without to inform the developer.
  13. ' / --------------------------------------------------------------------------------
  14. Option Explicit

  15. ' / --------------------------------------------------------------------------------
  16. Private Sub cmdExecute_Click()
  17.     '// Trap Error
  18.     If Trim(txtSQL.Text) = "" Or Len(Trim$(txtSQL.Text)) = 0 Then Exit Sub
  19.     '// Binding Data into DataGrid
  20.     Call BindDataGrid(txtSQL.Text)
  21. End Sub

  22. ' / --------------------------------------------------------------------------------
  23. Private Sub cmdOpenDB_Click()
  24.     On Error Resume Next
  25.     '// เลือกไฟล์ MS Access เข้ามา
  26.     dlgOpenDB.FileName = ""
  27.     dlgOpenDB.InitDir = App.Path
  28.     dlgOpenDB.DialogTitle = "Select Microsoft Access " '// Set the Common Dialog Title
  29.     dlgOpenDB.Filter = "Microsoft Access Files |*.accdb;*.mdb" '// Display only mdb files
  30.     dlgOpenDB.CancelError = True '// Cancel all errors
  31.     dlgOpenDB.ShowOpen
  32.     dlgOpenDB.DefaultExt = "*.accdb" '// Set the default extension
  33.    
  34.     If dlgOpenDB.FileName = "" Then Exit Sub
  35.     '// Get filename.
  36.     txtLocateDB.Text = dlgOpenDB.FileName
  37.     '// Trap Error
  38.     If Len(txtLocateDB.Text) = 0 Or Trim(txtLocateDB.Text) = "" Then Exit Sub
  39.    
  40.     '// Connect the database by filename of your choice.
  41.     If OpenDataBase(Adodc1, txtLocateDB.Text) Then
  42.         lblStatus.Caption = "Connection successful ..."
  43.         lblStatus.ForeColor = &H8000&
  44.     Else
  45.         lblStatus.Caption = "Disconnection ..."
  46.         lblStatus.ForeColor = vbRed
  47.     End If
  48. End Sub

  49. ' / --------------------------------------------------------------------------------
  50. '// รับค่า ADODC และชื่อไฟล์, คืนค่าเป็น True หากทำการติดต่อฐานข้อมูลสำเร็จ
  51. Private Function OpenDataBase(AdoControl As Adodc, DBFile As String) As Boolean
  52.     On Error GoTo ErrHandler
  53.     '// Provider=Microsoft.Jet.OLEDB.4.0 --> For MS Access 2003
  54.     With AdoControl
  55.         .ConnectionString = _
  56.             " Provider=Microsoft.ACE.OLEDB.12.0; " & _
  57.             " Data Source=" & DBFile & ";" & _
  58.             " Persist Security Info=False;"
  59.     End With
  60.     OpenDataBase = True
  61.    
  62. ExitProc:
  63.     Exit Function
  64.    
  65. ErrHandler:
  66.         MsgBox "Open Database Error : " & vbCrLf & Err.Number & " " & Err.Description
  67.         'ConnectDataBase = False
  68.         'Resume ExitProc
  69.         End
  70. End Function

  71. ' / --------------------------------------------------------------------------------
  72. Private Sub Form_Load()
  73.     '// Turn off visibility
  74.     Adodc1.Visible = False
  75.     txtLocateDB.Text = ""
  76.     lblStatus.Caption = "Status"
  77.     'txtSQL.Text = ""
  78.     '// ตัวอย่าง SQL Statement
  79.     'txtSQL.Text = "SELECT ContactPK, Fullname, NickName, Phone FROM tblContact ORDER BY ContactPK"
  80.     txtSQL.Text = _
  81.         "SELECT tblContact.ContactPK, tblContact.Fullname, " & _
  82.         "tblPosition.PositionName, tblDepartment.DepartmentName " & _
  83.         "FROM tblDepartment INNER JOIN (tblContact INNER JOIN tblPosition ON " & _
  84.         "tblContact.PositionFK = tblPosition.PositionPK) ON tblDepartment.DepartmentPK = tblContact.DepartmentFK "
  85. End Sub

  86. ' / --------------------------------------------------------------------------------
  87. '// Load data into DataGridView.
  88. Sub BindDataGrid(ByVal Sql As String)
  89.     ' Data Control กับกำหนดการเชื่อมต่อไฟล์ฐานข้อมูลแบบ @Run Time
  90.     With Adodc1
  91.         .CursorLocation = adUseClient
  92.         '// ให้อ่าน SQL Statement (Query)
  93.         .CommandType = adCmdText
  94.         '// แสดงผลข้อมูลอย่างเดียว ใช้ LockType แบบ Read Only
  95.         .LockType = adLockReadOnly
  96.         '// กำหนด RecordSource ด้วย Query
  97.         .RecordSource = Sql
  98.         '// สั่งให้ประมวลผลเพื่อกำหนด RecordSource ที่มาจาก SQL Statement
  99.         .Refresh
  100.     End With
  101.    
  102.     '// Bound Data between Adodc1 and DataGrid Control
  103.     Set DataGrid1.DataSource = Adodc1

  104. End Sub

  105. ' / --------------------------------------------------------------------------------
  106. Private Sub Form_Unload(Cancel As Integer)
  107.     Set frmBoundData = Nothing
  108. End Sub

  109. ' / --------------------------------------------------------------------------------
  110. Private Sub txtLocateDB_KeyPress(KeyAscii As Integer)
  111.     '// Lock key
  112.     KeyAscii = 0
  113. End Sub
คัดลอกไปที่คลิปบอร์ด
Conclusion: จะเห็นได้อย่างชัดเจนเลยว่า หลักการวิธีคิดที่มาจาก VB6 สามารถนำมาใช้ได้กับ VB.Net ได้เหมือนกันเป๊ะๆเลย ... นี่แหละที่เราเรียกกันว่า "พื้นฐาน"
ดาวน์โหลดโค้ดต้นฉบับ VB6 ได้ที่นี่

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-11-27 23:57 , Processed in 0.183671 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้