#mysql #vb.net
#mysql #vb.net
Вопрос:
Я хочу выбрать ItemName и ItemPrice из моей базы данных MySQL, а затем сохранить ItemNames и ItemPrices в кнопки, чтобы при нажатии кнопки я получал название и цену.
Вот мой код, и он в настоящее время работает и отображает цену только в строке базы данных.Я думаю, мне нужно сделать by button массивом, чтобы это работало.
Было бы здорово, если бы кто-нибудь мне помог. Я новичок в vb.net и хотел бы исправить эту программу
Public Property BtnMenuArray As Button
Public Property BtnDoneArray As Button
Public Property GBCustemerArray As GroupBox
Public Property TBCustemerOrderArray As TextBox
Public Property TBMenuItemNameArray As TextBox
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Public Function GetItemPrice(selection) As String
TBMenuItemNameArray = New TextBox
Dim output As String
con.Open("Dsn=Invintory;uid=root")
rs.Open("Select ItemPrice From menuitem where RowID = " amp; selection amp; "", con, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
output = rs.GetString()
rs.Close()
con.Close()
Return output
End Function
Public Function GetItemName(selection) As String
Dim output As String
con.Open("Dsn=Invintory;uid=root")
'rs.Open("Select ItemName From menuitem", con, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
rs.Open("Select ItemName From menuitem where RowID = " amp; selection amp; "", con, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
output = rs.GetString()
rs.Close()
con.Close()
'MsgBox("Detailes are Added")
Return output
End Function
Public Sub RunDB()
Dim Ittrat As Short = GetItemCount()
TextBox1.Text = Ittrat
Dim MyNameArray As New List(Of String)
Dim MyItemPriceArray As New List(Of String)
For item = 0 To Ittrat - 1
BtnMenuArray = New Button()
MyNameArray.Add(GetItemName(item))
BtnMenuArray.Text = MyNameArray(item)
TableLayoutPanel1.Controls.Add(BtnMenuArray)
MyItemPriceArray.Add(GetItemPrice(item))
BtnMenuArray.Tag = MyItemPriceArray(item)
Next
AddHandler BtnMenuArray.Click, AddressOf ClickHandle
End Sub
Public Sub ClickHandle(ByVal sender As Object, ByVal e As _
System.EventArgs)
MsgBox(BtnMenuArray.Tag)
End Sub
Ответ №1:
Я смог это выяснить. Что мне нужно было сделать, это добавить имя кнопки внутри цикла for, который я использовал, в ittrat, чтобы назначить название кнопок в виде массива. Также это устранило мою проблему с обработчиком событий динамической кнопки. Теперь я могу видеть название, текст и тег каждой кнопки при нажатии на кнопку.
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Public Property ItemMenuBT As Button
Public Property BtnDoneArray As Button
Public Property GBCustemerArray As GroupBox
Public Property TBCustemerOrderArray As TextBox
Public Property TBMenuItemNameArray As TextBox
Public Function GetItemCount() As Short
TBMenuItemNameArray = New TextBox
Dim output As Short
con.Open("Connection String")
rs.Open("Select Count(RowID) From TableNameHere", con, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
output = Convert.ToInt16(rs.GetString())
rs.Close()
con.Close()
Return output
End Function
Public Function GetItemPrice(selection) As String
TBMenuItemNameArray = New TextBox
TextBox1.Text = selection
Dim output As String
con.Open("Connection String")
rs.Open("Select ColumnName From TableName where RowID = " amp; selection amp; "", con, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
output = rs.GetString()
rs.Close()
con.Close()
Return output
End Function
Public Function GetItemName(selection) As String
Dim output As String
con.Open("Connection String")
rs.Open("Select ItemName From menuitem where RowID = " amp; selection amp; "", con, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
output = rs.GetString()
rs.Close()
con.Close()
Return output
End Function
Public Sub LOAD_ITEM_MENU()
Dim Ittrat As Short = GetItemCount()
Dim MyNameArray As New List(Of String)
Dim MyItemPriceArray As New List(Of String)
Dim buttonName As String
Dim buttonText As String
For item = 0 To Ittrat - 1
ItemMenuBT = New Button()
ItemMenuBT.Size = New Size(130, 100)
buttonName = GetItemName(item)
buttonText = GetItemPrice(item)
ItemMenuBT.Name = buttonName
ItemMenuBT.Text = buttonName
ItemMenuBT.Tag = buttonText
TableLayoutPanel1.Controls.Add(ItemMenuBT)
AddHandler ItemMenuBT.Click, AddressOf Me.ClickHand
Next
End Sub
Public Sub ClickHand(ByVal sender As Object, ByVal e As _
System.EventArgs)
Dim CST_ORD_SELCTEDItemName As Button = sender
'MsgBox("Item Name: " amp; CST_ORD_SELCTEDItemName.Name)
'MsgBox("Item Price: " amp; CST_ORD_SELCTEDItemName.Tag)
Dim valueNew As Double
valueNew = CST_ORD_SELCTEDItemName.Tag
TBCustemerOrderArray.Text = Val(TBCustemerOrderArray.Text) valueNew
End Sub