 |
|
ตอนนี้เพิ่มข้อมูลลงใน DataGridViewได้แล้ว แต่อยากจะทำให้ Item ใน Combobox มีทั้งชื่อและตัวเลขแต่มันติดที่ Type ของฐานข้อมูลเป็น Number |
|
 |
|
|
 |
 |
|
ตอนนี้เพิ่มข้อมูลลงในdatagridviewได้แล้ว แต่อยากจะทำให้itemในcomboboxมีทั้งชื่อและตัวเลขแต่มันติดที่typeของฐานข้อมูลเป็นNumber(และได้สร้างกล่องคำสั่งผสมที่มีชื่อและตัวเลข)

1.อยากจะทำให้itemในcomboboxมีทั้งชื่อและตัวเลข และโชว์ในdatagridviewด้วย
โดยตอนนี้มีcomboboxมีแต่ตัวเลขให้เลือกดังรูป(คอลัมID_Product)
เพราะtapeของฐานข้อมูลเป็นตัวเลข
แต่อยากให้ในcomboboxมีทั้งและตัวเลข โดยสามารถส่งไปในฐานข้อมูลได้ด้วย
มีวิธีมั้ย?
ปล.ไม่สามารถแก้ที่ฐานข้อมูลได้เพราะมีการเชื่อมโยงสัมพันธ์หลากหลายตาราง และจะทำให้ชนิดที่เชื่อมโยงไว้ไม่ตรงกัน
Code (VB.NET)
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
Tag : .NET, Ms Access, VB.NET, VS 2012 (.NET 4.x)
|
ประวัติการแก้ไข 2015-07-20 01:45:30 2015-07-20 01:50:18 2015-07-20 01:58:52 2015-07-20 02:02:41 2015-07-20 02:03:39
|
 |
 |
 |
 |
Date :
2015-07-20 01:42:37 |
By :
peemes101 |
View :
1824 |
Reply :
13 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าไม่แก้ที่ 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
น่าจะประมาณนี้นะครับ ผมเข้าใจถูกหรือเปล่าก็ไม่ทราบ แต่ก็ขอให้โปรแกรมของคุณประสพผลสำเร็จนะครับ
|
 |
 |
 |
 |
Date :
2015-07-20 07:57:14 |
By :
noonkamfunt |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตรง
dim A as integer = จำนวนข้อมูลที่จะแสดงใน combobox
dim B as string = ชื่อสินค้า
หลังเท่ากับจะต้องพิมยังไง
โดยที่ จำนวนที่ข้อมูลมี30ตัว
เช่น 101ส้ม
102 มะละกอ
|
ประวัติการแก้ไข 2015-07-20 08:21:14
 |
 |
 |
 |
Date :
2015-07-20 08:12:03 |
By :
peemes101 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
น่าจะเข้าใจผิดหรือป่าว?
คือ 1.ต้องการให้ในcombobox มีทั้งตัวเลขและข้อความให่เลือกเช่น 101ส้ม 102มะละกอ (อยู่ติดกัน) และสามารถส่งไปยังฐานข้อมููลได้
2.แต่มันติดที่typeของฐานข้อมูลเป็นNumber(คอลัมID_Product) ดังนั้นตอนนี้จึงมีแต่ตัวเลขคือ 101 102 103......
3.แต่typeของID_productได้สร้างกล่องคำสั่งผสมที่มีชื่อและตัวเลขไว้ด้วย
ปล.สิ่งที่ต้องการคือข้อ 1,
ถ้าที่คุณบอกมันตรงกับที่ขอแล้วก็ขอโทษด้วย
|
 |
 |
 |
 |
Date :
2015-07-20 18:46:37 |
By :
peemes101 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
พอดีผมก็ไม่เคยทำแบบนั้นเพราะ ปกติแล้วเรื่องสินค้านั้นจะแยกเก็บประมาณนี้ครับ รหัสสินค้า,ชื่อสินค้า,รหัสประเภทสินค้า,จำนวน,หน่วยนับ,ราคาทุน,ราคาขาย,ที่เก็บสินค้า วันหมดอายุ และอื่น ๆ ตามที่ User ต้องการ ... หากคุณ Design Database ผิดตั้งแต่แรกแล้ว จะทำให้การเขียนโปรแกรมยุ่งยากเปลืองคำสั่งโดยไม่จำเป็น และเรื่องเกี่ยวกับสินค้านั้น ในการออกแบบฐานข้อมูลคุณควรคำนึ่งถึงเรื่องรายงาน Report ที่จะต้องออกมา การเรียงลำดับ การจัดกลุ่มของสินค้า การจัดกลุ่มตามประเภทสินค้า และรายงานสินค้ารายตัว (Stock Card) ซึ่งจะมี MoveMent เรียงตามวันที่ เดือนปี ว่า รับเข้าเท่าไหร่ ออกเท่าไหร่ ราคาทุนประจำวัน ราคาขายประจำวัน (เพื่อจะได้นำไปคำนวณขาดทุน กำไร) ประมาณนี้นะครับ อย่างไรแล้วเดีี่ยวคงจะมีผู้ชำนาญการระดับเทพอีกหลายท่าน เข้ามาแนะนำให้คุณนะครับ ... เอาใจช่วยครับและ ขอให้โปรแกรมของคุณประสพผลสำเร็จครับ
|
 |
 |
 |
 |
Date :
2015-07-21 11:29:08 |
By :
noonkamfunt |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แล้วไม่มีทางอื่นอีกหรอที่จะให้ใน comboboxของID_Productที่จะโชว์ทั้งตัวเลขและข้อความ แต่ก็ต้องส่งไปฐานข้อมูลที่เป็นชนิดnumberได้อีกด้วย
เพราะได้มีการสร้างสัมพันธ์ต่างๆเอาไว้หมดแล้วในaccess คือถ้าเปลี่ยนเป็นtext ก็จะต้องเปลี่ยนหมดเลย
|
ประวัติการแก้ไข 2015-07-23 07:09:30
 |
 |
 |
 |
Date :
2015-07-21 13:32:26 |
By :
peemes101 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้โปรดหาทางช่วยที
|
 |
 |
 |
 |
Date :
2015-07-23 07:10:50 |
By :
peemes101 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เพิ่มฟอร์มอีกอันเอามาเลือกครับ

แถมต่อยอดได้เยอะกว่า combobox อีกต่างหาก
|
 |
 |
 |
 |
Date :
2015-07-23 09:06:53 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าจะใช้ Combobox ผมแนะนำว่าให้เปลี่ยน Type ของ ID_Product จาก Number เป็น Text เสียครับ รับรอง อย่างนี้ได้แน่นอนครับ
|
 |
 |
 |
 |
Date :
2015-07-23 09:48:07 |
By :
noonkamfunt |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คุณnoon คือมันได้เชื่อมโยงกันเยอะมาก ในaccess ดังนั้นถ้าจะเปลี่ยนมันคงต้องเปลี่ยนหมดเลย
ถามคุณ TOR_CHEMISTRY
แล้วมันต้องสร้างยังไง
|
ประวัติการแก้ไข 2015-07-23 10:34:57
 |
 |
 |
 |
Date :
2015-07-23 10:25:23 |
By :
peemes101 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

Code (VB.NET)
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 ใช้งานสะดวกมาก
|
 |
 |
 |
 |
Date :
2015-07-23 11:40:28 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คงต้องเอาไปประยุกต์ใช้เอานะครับ แต่ผมดูแล้วไม่น่าจะตรงประเด็นกับของคุณ PM สักเท่าไหร่ครับ
|
 |
 |
 |
 |
Date :
2015-07-23 13:05:16 |
By :
noonkamfunt |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
นำเน๋ออีกแบบครับ
System.Windows.Forms.DataGridViewComboBoxColumn
ใช้ง่ายไม่วุ่นวาย   

Code (VB.NET)
Friend WithEvents DataGridViewTextBoxColumn3 As System.Windows.Forms.DataGridViewComboBoxColumn
Me.DataGridViewTextBoxColumn3 = New System.Windows.Forms.DataGridViewComboBoxColumn()
Me.DataGridViewTextBoxColumn3.DataSource = Me.Sett_Post_ProvinceBindingSource
Me.DataGridViewTextBoxColumn3.DataPropertyName = "Pnv"
Me.DataGridViewTextBoxColumn3.DisplayMember = "Province"
Me.DataGridViewTextBoxColumn3.ValueMember = "pvnID"
Me.DataGridViewTextBoxColumn3.HeaderText = "Pnv"
Me.DataGridViewTextBoxColumn3.Name = "DataGridViewTextBoxColumn3"
Me.DataGridViewTextBoxColumn3.Resizable = System.Windows.Forms.DataGridViewTriState.[True]
Me.DataGridViewTextBoxColumn3.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic
ประเด็นหลักคือ DataSource,DataPropertyName,DisplayMember ,ValueMember
ปล. ยกความชอบให้ พนง ส่งเอกสาร เพราะเขาบอกว่าอยากได้แบบง่ายๆไม่ซับซ้อนวุ่นวายเลยจัดให้
|
 |
 |
 |
 |
Date :
2015-07-23 14:17:50 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|