我遇到了一个问题,我搜索一个表并将结果填入RichTextBoxes。我遇到问题的地方是我为每个RichTextBox使用多个阅读器。虽然它有效,但我觉得有更好的方法可以做到这一点。
我的表有多列,一个用于商店编号(唯一,非复制),一个用于主要技术[主要1](这对于多个商店来说是相同的),一个用于二级技术[主要2] (对于多个商店,这将是相同的)等等。
我想知道是否有更聪明的方法来搜索[main 1]并将商店返回RichPrimaryTech(RichTextBox),搜索[main 2]并将商店返回RichSecondaryTech(RichTextBox),依此类推单个OleDbReader与多个读者?
我问这个问题的另一个原因是,我将再次对此表单的另一部分进行此操作,并且我试图不复制一堆工作或使用多个读者。
Private Sub ButtonLookUp_Click(sender As Object, e As EventArgs) Handles ButtonLookUp.Click
If ComboTechSelect.SelectedItem = "" Then
MessageBox.Show("Nothing Selected")
Else
Dim setech As String = ComboTechSelect.SelectedItem
Dim MainTechDataFile As String
Dim MainTechConnString As String
Dim MainTechConnection As OleDbConnection = New OleDbConnection
Dim MR As OleDbDataReader
Dim DX As OleDbDataReader
Dim TX As OleDbDataReader
Dim provider As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
MainTechDataFile = "D:\\GateTechDBTest.accdb"
MainTechConnString = provider & MainTechDataFile
MainTechConnection.ConnectionString = MainTechConnString
MainTechConnection.Open()
Dim query As OleDbCommand = New OleDbCommand("Select * From Gtech WHERE [Gate Tech] = @tech", MainTechConnection)
query.Parameters.AddWithValue("@tech", setech)
MR = query.ExecuteReader
While MR.Read()
DTPLiability.Text = MR("Liability").ToString
DTPWorkersComp.Text = MR("Workers Comp").ToString
DTPAutoLiability.Text = MR("Auto Liability").ToString
DTPExcessLiability.Text = MR("Excess Liability").ToString
TextGateTechStreet.Text = MR("Address").ToString
TextTechCity.Text = MR("City, State").ToString
TextBoxTechZip.Text = MR("Zip").ToString
TextTechPhone.Text = MR("Phone Number").ToString
TextTechFax.Text = MR("Fax").ToString
End While
Dim stores As OleDbCommand = New OleDbCommand("Select * From Search WHERE [Main 1] = @tech1", MainTechConnection)
stores.Parameters.AddWithValue("@tech1", setech)
DX = stores.ExecuteReader
While DX.Read()
RichPrimaryTech.AppendText(DX("Store").ToString + Environment.NewLine)
End While
Dim stores2 As OleDbCommand = New OleDbCommand("Select * From Search WHERE [Main 2] = @tech2", MainTechConnection)
stores2.Parameters.AddWithValue("@tech2", setech)
TX = stores2.ExecuteReader
While TX.Read()
RichSecondaryTech.AppendText(TX("Store").ToString + Environment.NewLine)
End While
MainTechConnection.Close()
DTPAutoLiability.Enabled = True
DTPExcessLiability.Enabled = True
DTPLiability.Enabled = True
DTPWorkersComp.Enabled = True
End If
End Sub