HOME > .NET Framework > Forum > ตอนนี้เพิ่มข้อมูลลงใน DataGridViewได้แล้ว แต่อยากจะทำให้ Item ใน Combobox มีทั้งชื่อและตัวเลขแต่มันติดที่ Type ของฐานข้อมูลเป็น Number
ตอนนี้เพิ่มข้อมูลลงใน DataGridViewได้แล้ว แต่อยากจะทำให้ Item ใน Combobox มีทั้งชื่อและตัวเลขแต่มันติดที่ Type ของฐานข้อมูลเป็น Number
Private Sub RefreshData()
If Not con.State = ConnectionState.Open Then
'open connection
con.Open()
End If
Dim da As New OleDbDataAdapter("SELECT semet as [ID_Product], " & _
"txtnum as [out_num], txtna1 as [out_student], txtna2 as [out_store]," & _
"txtdate as [out_date]" &
"FROM tb_Out_Product ORDER BY semat ", con)
Dim dt As New DataTable
'fill data to datatable
da.Fill(dt)
'offer data in data table into datagridview
Me.DataGridView1.DataSource = dt
'close connection
con.Close()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles add.Click
Dim cmd As New OleDbCommand
If Not con.State = ConnectionState.Open Then
'open connection if it is not yet open
con.Open()
End If
cmd.Connection = con
'check whether add new or update
If Me.semat.Tag & "=" Then
'add new
'add data to table
cmd.CommandText = " INSERT INTO tb_Out_Product(ID_Product, out_num, out_student, out_store, out_date)" & _
" VALUES (" & Me.semat.SelectedItem & ",'" & Me.txtnum.Text & "','" & _
Me.txtna1.Text & "','" & Me.txtna2.Text & "','" & _
Me.txtdate.Text & "')"
cmd.CommandType = CommandType.Text
cmd.ExecuteNonQuery()
Else
'update data in table
cmd.CommandText = "Update tb_Out_Product" & _
"SET ID_Product" & Me.semat.SelectedItem & _
",out_num" & Me.txtnum.Text & "'" & _
",out_student" & Me.txtna1.Text & "'" & _
",out_store" & Me.txtna2.Text & "'" & _
",out_date1" & Me.txtdate.Text & "'" & _
"WHERE ID_Product=" & Me.semat.Tag
cmd.ExecuteNonQuery()
End If
'refresh data in list
RefreshData()
'clear form
Me.Button6.PerformClick()
'close connection
con.Close()
End Sub
ถ้าไม่แก้ที่ Field ก้เอา Data มาต่อสตริง โดยวนลูป แต่วิธีนี้คุณต้องเขียนคำสั่งเพิ่มมากขึ้นเลยครับ
ลองดูนะครับ
Code (VB.NET)
Sub Show_Combobox ()
dim A as integer = จำนวนข้อมูลที่จะแสดงใน combobox
dim B as string = ชื่อสินค้า
dim I as integer
For I = 0 to A
combobox1.Itemdata = A & B
Next
end Sub
อยากทราบว่า แยกกันคนละ Field หรือเปล่าครับ ถ้าไม่แยกก็เอามาใส่ที่ Combobox ได้เลย ไม่ต้องต่อสตริง
Code
Sub Show_Combobox ()
dim B as string = ชื่อ Field ที่ต้องการแสดงใน Combobox
dim I as integer
For I = 1 to 30
combobox1.Itemdata = B
Next
end Sub
แต่ถ้าแยกกันคนละ Field ก็เอามาต่อสตริงครับ
Code
Sub Show_Combobox ()
dim A as string = Field รหัสสินค้า
dim B as string = Field ชื่อสินค้า
dim I as integer
For I = 0 to 30
combobox1.Itemdata = A & B
Next
end sub
ที่จริงแล้วไม่อยากให้ระบุจำนวน Record แบบตายตัว เพราะถ้าเราเพิ่มจำนวนสินค้าก็จะต้องมาแก้โปรแกรมอีก
ทางที่ดีควร Count จำนวน Record ออกมาก่อนแล้วค่อยเอามาวนลูปครับเช่น
Code
Sub Show_Combobox ()
Dim C as integer = rs.RecordCount (หมายถึงจำนวน Record ที่เราจะเอาไปวนลูป)
dim A(1) as string (ทำเป็นตัวแปร Array)
dim I as integer
A(0) = Field รหัสสินค้า
A(1) = Field ชื่อสินค้า
For I = 0 to C
combobox1.Itemdata = A(0) & A(1)
Next
end sub
Public Class Form3
Dim connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=X:\DATA\PostCode.mdb;Jet OLEDB:Database Password=4410210091"
Dim ChkColumn As System.Windows.Forms.DataGridViewCheckBoxColumn = New System.Windows.Forms.DataGridViewCheckBoxColumn()
Public item As Integer = 0
Public p As String = "TOR"
Function GetTableForm(_SQL As String) As System.Data.DataTable
Dim ds As New System.Data.DataSet()
Dim conn As New System.Data.OleDb.OleDbConnection(connectionString)
conn.Open()
Dim adapter As New System.Data.OleDb.OleDbDataAdapter(_SQL, conn)
adapter.Fill(ds)
Return ds.Tables(0)
End Function
Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.DataGridView1.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.ChkColumn})
DataGridView1.DataSource = GetTableForm("SELECT pvnID, Province, Symbol FROM Sett_Post_Province")
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
For i As Integer = 0 To DataGridView1.RowCount - 1
item = Convert.ToInt32(DataGridView1(1, i).Value)
p = DataGridView1(2, i).Value
If Convert.ToBoolean(DataGridView1(0, i).Value) = True Then
Close()
Exit Sub
End If
Next
End Sub
End Class
Code (VB.NET)
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim f As New Form3()
f.ShowDialog()
MessageBox.Show(f.item & vbCrLf & f.p)
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
End Class
ปล.ยกความรู้นี้ให้โปรแกรม Payrow ครับ เพราะผมเหนเขาเขียนแล้วใช้ง่ายก็เลยลองเอามาใช้มั่ง
ความจริงสามารถให้ user ใช้ SQL ในการค้นหาตรง Form3 ได้นะครับโดยมี textbox,button ให้ user ใช้งานสะดวกมาก