私のVisualBasicプログラムは、Accessデータベースから値をフェッチし、それらをラベルに配置します。データベースから返されるデータは、コンボボックスで選択された値によって異なり、コンボボックスの値が変更されると変更されるはずですが、驚いたことに、ラベルには、変更が必要な場合でも最初に表示された最初の値のみが表示されます。各データベースにアクセスする直前にラベルテキストを何にも割り当てようとしませんでしたが、それでも以前の値が表示されます。これらのラベルでテキストを変更できないという問題は何でしょうか。助けてください。データベースにアクセスしてラベルに配置するために使用するコードは次のとおりです。
Me.p.Text = Nothing
Me.tq.Text = Nothing
Me.pd.Text = Nothing
Me.ba.Text = Nothing
Me.o.Text = Nothing
Me.pm.Text = Nothing
Me.tv.Text = Nothing
Me.tqr.Text = Nothing
Me.dff.Text = Nothing
Try
cmd.Connection = cnn
cmd2.Connection = cnn
cmd3.Connection = cnn
cmd.CommandText = "SELECT distinct(brought_price), sum(brought_qtty), sum(brought_paid), sum(brought_bal),recieved_qtty,sum(brought_qtty)-recieved_qtty, sum(brought_qtty)*brought_price from brought_coffee, farmer, centre_weigh " & _
"where brought_date=? and farmer_centre=? and" & _
" brought_coffee.farmer_num=farmer.farmer_num and weigh_date=? and weigh_centre=? and brought_coffee.brought_date=centre_weigh.weigh_date and farmer_centre=weigh_centre group by brought_price,recieved_qtty"
MessageBox.Show(Me.dtc.Text)
cmd.Parameters.Add("@dt", OleDb.OleDbType.Date).Value = Me.dtc.Text
cmd.Parameters.Add("@dt2", OleDb.OleDbType.VarChar).Value = Me.cc.Text.Trim.Substring(0, 2)
cmd.Parameters.Add("@dt3", OleDb.OleDbType.Date).Value = Me.dtc.Text
cmd.Parameters.Add("@dt4", OleDb.OleDbType.VarChar).Value = Me.cc.Text.Trim.Substring(0, 2)
cmd2.CommandText = "SELECT sum(brought_qtty) from brought_coffee,farmer where coffee_grade='O' and brought_date=? and farmer_centre=? and" & _
" brought_coffee.farmer_num=farmer.farmer_num"
cmd2.Parameters.Add("@dt5", OleDb.OleDbType.Date).Value = Me.dtc.Text
cmd2.Parameters.Add("@dt6", OleDb.OleDbType.VarChar).Value = Me.cc.Text.Trim.Substring(0, 2)
cmd3.CommandText = "SELECT sum(brought_qtty) from brought_coffee,farmer where coffee_grade='P' and brought_date=? and farmer_centre=? and" & _
" brought_coffee.farmer_num=farmer.farmer_num"
cmd3.Parameters.Add("@dt7", OleDb.OleDbType.Date).Value = Me.dtc.Text
cmd3.Parameters.Add("@dt8", OleDb.OleDbType.VarChar).Value = Me.cc.Text.Trim.Substring(0, 2)
myData = cmd.ExecuteReader
myData2 = cmd2.ExecuteReader
myData3 = cmd3.ExecuteReader
'MessageBox.Show("check 1")
While myData.Read()
'MessageBox.Show("check 1")
Dim pr As String = myData(0).ToString
Dim qtty As String = myData(1).ToString
Dim pd As String = myData(2).ToString
Dim bl As String = myData(3).ToString
Dim rq As String = myData(4).ToString
Dim dq As String = myData(5).ToString
Dim tvp As String = myData(6).ToString
'MessageBox.Show("quantity" & pr)
Me.p.Text = pr
Me.tq.Text = qtty
Me.pd.Text = pd
Me.ba.Text = bl
Me.tqr.Text = rq
Me.dff.Text = dq
Me.tv.Text = tvp
End While
myData.Close()
While myData2.Read()
Dim od As String = myData2(0).ToString
'MessageBox.Show(od)
Me.o.Text = od
End While
myData2.Close()
While myData3.Read()
Dim pmm As String = myData3(0).ToString
Me.pm.Text = pmm
End While
myData3.Close()
cnn.Close()
dtc
およびcc
は、選択したデータベースの値と比較されるテキストボックスです。