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

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

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

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

310

กระทู้

501

โพสต์

6041

เครดิต

ผู้ดูแลระบบ

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

Rank: 9Rank: 9Rank: 9

เครดิต
6041


สวัสดีครับพี่น้องหมู่เฮาชุมชนคนรักภาษาเบสิค วันนี้ก็มาแจกโค้ดแบบพื้นๆบ้านๆ แต่เป็นหลักการขั้นพื้นฐานที่จะนำทางให้พี่น้องได้ก้าวไปข้างหน้า ในการฝึกฝนเรียนรู้พัฒนาโปรแกรมด้วย Visual Basic .NET ด้วย การนำข้อมูลจาก DataBase มาแสดงผลบน DataGrid ในลักษณะที่เรียกกันว่า Bound Data หรือ การผูกข้อมูลเข้ากับคอนโทรล (DataGrid) แต่จะเป็นแบบ @Run Time Programming คือการใช้โค้ดเพื่อสั่งรันโปรแกรม มันจึงจะเห็นผล การเขียนโค้ดในลักษณะนี้ จะแตกต่างไปจากการจับลากมาวาง หรือที่เรียกว่า @Design Time เพราะเราจะสามารถควบคุมการทำงานของโปรแกรมให้เป็นไปในทิศทางที่เราต้องการได้ข่ะรับ ...
มารู้จักกับคำว่า Bound และ UnBound Control
  • Bound Control ... คือการผูก (Bound) ตารางข้อมูลเข้ากับพวก Component หรือ Control ต่างๆ กรณีที่นำมาใช้แสดงผลลงในตารางกริด มันจะอ่านค่าฟิลด์ต่างๆ เพื่อแสดงผลในแต่ละหลัก เรียงตามลำดับจาก Query ที่เราเขียนไว้ และ ต้องแสดงทุกๆฟิลด์ออกมาทั้งหมด มักจะนำไปแสดงผลข้อมูล การป้อนข้อมูล และอัพเดตค่าจากฟิลด์ต่างๆในฐานข้อมูล
  • UnBound Control ก็จะไม่มีการผูก (Unbound) ตารางข้อมูลใดๆเข้ากับ Component หรือ Control การนำไปใช้ในตารางกริด ไม่จำเป็นต้องแสดงผลออกมาทุกฟิลด์ โดยจะเอาตัวไหนมาแสดงผลในหลักใดๆของตารางกริดก่อนหลังก็ได้ มีความยืดหยุ่น มักใช้กับการเข้าไปแก้ไขข้อมูลตารางกริดในแต่ละเซลล์ เช่น การคำนวณ หรือการป้อนข้อมูลที่มีลักษณะแบบไม่ตายตัว
  1. Dim DA As New OleDb.OleDbDataAdapter(Sql, Conn)
  2.         Dim DS As New DataSet
  3.         DA.Fill(DS)
  4.         dgvData.DataSource = DS.Tables(0)
คัดลอกไปที่คลิปบอร์ด
โค้ดในส่วนนี้นี่แหละคือ การผูกข้อมูล หรือ Bound Data

มาดูโค้ดกันเถอะ ...
  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. ' / Purpose: Simple procedure to binding data into datagridview. (Call Bound Data)
  8. ' / Microsoft Visual Basic .NET (2010) + MS Access
  9. ' /
  10. ' / This is open source code under @Copyleft by Thongkorn Tubtimkrob.
  11. ' / You can modify and/or distribute without to inform the developer.
  12. ' / --------------------------------------------------------------------------------
  13. Imports System.Data.OleDb
  14. Imports Microsoft.VisualBasic

  15. Public Class frmDataBinding
  16.     Dim Conn As OleDbConnection
  17.     Dim strPath As String = MyPath(Application.StartupPath)

  18.     ' / --------------------------------------------------------------------------------
  19.     '// Initialize DataGridView @Run Time
  20.     Private Sub InitDataGrid()
  21.         With dgvData
  22.             .RowHeadersVisible = False
  23.             .AllowUserToAddRows = False
  24.             .AllowUserToDeleteRows = False
  25.             .AllowUserToResizeRows = False
  26.             .MultiSelect = False
  27.             .SelectionMode = DataGridViewSelectionMode.FullRowSelect
  28.             .ReadOnly = True
  29.             .Font = New Font("Tahoma", 9)
  30.             '// Autosize Column
  31.             .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
  32.             .AutoResizeColumns()
  33.             '// Even-Odd Color
  34.             .AlternatingRowsDefaultCellStyle.BackColor = Color.AliceBlue
  35.             ' Adjust Header Styles
  36.             With .ColumnHeadersDefaultCellStyle
  37.                 .BackColor = Color.Navy
  38.                 .ForeColor = Color.Black
  39.                 .Font = New Font("Tahoma", 9, FontStyle.Bold)
  40.             End With
  41.         End With
  42.     End Sub

  43.     ' / --------------------------------------------------------------------------------
  44.     Private Sub btnBrowse_Click(sender As System.Object, e As System.EventArgs) Handles btnBrowse.Click
  45.         Dim OpenFile As New OpenFileDialog()
  46.         '// Specifies the initial path.
  47.         OpenFile.InitialDirectory = strPath
  48.         OpenFile.FileName = ""
  49.         '// Set to filter only files MS Access (*.accdb;*.mdb)
  50.         OpenFile.Filter = "Microsoft Access Files |*.accdb;*.mdb"

  51.         '// Reference
  52.         '// http://msdn.microsoft.com/en-us/library/c7ykbedk.aspx
  53.         '// http://msdn.microsoft.com/en-us/library/system.windows.forms.dialogresult.aspx
  54.         Dim Res As System.Windows.Forms.DialogResult = OpenFile.ShowDialog()
  55.         ' Press Cancel to leave.
  56.         If Res = System.Windows.Forms.DialogResult.Cancel Then Return

  57.         '// Bring path and filename to display in TextBox.
  58.         txtLocateDB.Text = OpenFile.FileName
  59.         '//
  60.         If txtLocateDB.Text.Length = 0 Or Trim(txtLocateDB.Text) = "" Then Return
  61.         '// Connect MS Access with your select file.
  62.         If ConnectDataBase(txtLocateDB.Text) Then
  63.             lblStatus.Text = "Connection ..."
  64.             lblStatus.ForeColor = Color.Green
  65.         Else
  66.             lblStatus.Text = "Disconnection ..."
  67.             lblStatus.ForeColor = Color.Red
  68.         End If
  69.     End Sub

  70.     ' / --------------------------------------------------------------------------------
  71.     '// Return True if can connect, otherwise is False.
  72.     Public Function ConnectDataBase(ByVal DBFile As String) As Boolean
  73.         Dim strConn As String = _
  74.                 "Provider = Microsoft.ACE.OLEDB.12.0; "
  75.         strConn += "Data Source = " & DBFile
  76.         Try
  77.             Conn = New OleDb.OleDbConnection(strConn)
  78.             '// Create Connection
  79.             Conn.ConnectionString = strConn
  80.             Conn.Open()
  81.             '// Return
  82.             Return True
  83.         Catch ex As Exception
  84.             'MessageBox.Show(ex.Message)
  85.             Return False
  86.         End Try
  87.     End Function

  88.     ' / --------------------------------------------------------------------------------
  89.     ' / Get my project path
  90.     ' / AppPath = C:\My Project\bin\debug
  91.     ' / Replace "\bin\debug" with ""
  92.     ' / Return : C:\My Project\
  93.     Function MyPath(ByVal AppPath As String) As String
  94.         '/ MessageBox.Show(AppPath);
  95.         AppPath = AppPath.ToLower()
  96.         '/ Return Value
  97.         MyPath = AppPath.Replace("\bin\debug", "").Replace("\bin\release", "").Replace("\bin\x86\debug", "")
  98.         '// If not found folder then put the \ (BackSlash) at the end.
  99.         If Microsoft.VisualBasic.Right(MyPath, 1) <> "" Then MyPath = MyPath & ""
  100.     End Function

  101.     Private Sub txtLocateDB_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtLocateDB.KeyPress
  102.         '// Can't press any key into Textbox.
  103.         e.Handled = True
  104.     End Sub

  105.     Private Sub frmDataBinding_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
  106.         Me.Dispose()
  107.         Application.Exit()
  108.     End Sub

  109.     ' / --------------------------------------------------------------------------------
  110.     Private Sub frmDataBinding_Load(sender As Object, e As System.EventArgs) Handles Me.Load
  111.         '// Initialize DataGridView
  112.         Call InitDataGrid()
  113.         '// Sample SQL Statement
  114.         txtSQL.Text = "SELECT ContactPK, Fullname, Nickname, Mobile, Phone, eMail, LineID FROM tblContact ORDER BY ContactPK "
  115.         'txtSQL.Text = "SELECT ContactPK, Fullname, NickName, Mobile, eMail FROM tblContact WHERE Fullname LIKE '%T%' ORDER BY ContactPK"
  116.         lblStatus.Text = "Disconnection ..."
  117.         lblStatus.ForeColor = Color.Red
  118.     End Sub

  119.     ' / --------------------------------------------------------------------------------
  120.     '// BOUND DATA into DataGridView.
  121.     Private Sub BindDataGrid(ByVal Sql As String)
  122.         Try
  123.             If Conn.State = ConnectionState.Closed Then Conn.Open()
  124.             Dim DA As New OleDb.OleDbDataAdapter(Sql, Conn)
  125.             Dim DS As New DataSet
  126.             DA.Fill(DS)
  127.             dgvData.DataSource = DS.Tables(0)
  128.             '//
  129.             DA.Dispose()
  130.             DS.Dispose()
  131.             Conn.Close()
  132.             '// Addition
  133.             With dgvData
  134.                 '// You can change the columns header @ here
  135.                 .Columns(1).HeaderText = "Column Text"
  136.                 '// If you want to turn off the display some columns.
  137.                 '.Columns("LineID").Visible = False
  138.                 '// Or count column by index
  139.                 .Columns(6).Visible = False
  140.             End With

  141.         Catch ex As Exception
  142.             MessageBox.Show(ex.Message)
  143.         End Try
  144.     End Sub

  145.     ' / --------------------------------------------------------------------------------
  146.     Private Sub btnExecute_Click(sender As System.Object, e As System.EventArgs) Handles btnExecute.Click
  147.         If txtSQL.Text.Length = 0 Or Trim(txtSQL.Text) = "" Then Return
  148.         Call BindDataGrid(txtSQL.Text)
  149.     End Sub

  150. End Class
คัดลอกไปที่คลิปบอร์ด
ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่

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

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

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

1

กระทู้

12

โพสต์

155

เครดิต

Member

Rank: 2

เครดิต
155
โพสต์ 2017-10-28 23:44:59 | ดูโพสต์ทั้งหมด

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

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

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

GMT+7, 2024-4-23 21:12 , Processed in 0.225413 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

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