2017-04-11 109 views
0

我使用VB与VS2015,我有一个文本框从微处理器接收约40行输入。我最终需要做的是在多个文本框中显示一些输入,并将这些值保存到mySQL数据库中。举例来说,假设我有:从文本框输出到VB中的多个文本框的具体值

SensorTypeA_Test
SensorA1_Output:5.00
SensorA2_Output:0
SensorA_Test:FAIL
SensorTypeB_Test
SensorB1_Output:3.50
SensorB2_Output:3.50
Sensor_Test:通过

在这种情况下,我想要做的事情基本上有6个文本框(每个文本框都带有预先制作的标签,如Sensor A1 )填写5.00,0,FAIL,3.50,3.50和Pass。

正如我所看到的,有两种方法可以解决这个问题。首先,我可以弄清楚如何将值直接发送到mySQL数据库,然后将所需的值提取到多个文本框中。这将是相当直接的,但我不知道一种方法将这些值直接发送到数据库,因为它们没有变量名称。

另一种方式是通过文本框本身进行解析或者将输入保存到文件中并通过解析来解析。如果我这样做,我宁愿让每个文本框查找与其标签相对应的值,而不是按顺序填充所有文本框。我的意思是,如果有一个标有“传感器A1”的文本框,它会有自己的变量名称,比如tbSensorA1,它会查找“SensorA1_Output”,然后显示冒号后面的值,如果有没有价值,那么只需在文本框中显示“N/A”。这也会使得将值存储在数据库中变得非常容易。

所以基本上,我想知道是否还有其他方法可以做到这一点,除了我提出的,如果不是,我如何搜索文本框或文本文件中的特定短语并输出后面的值冒号在他们对应的文本框中?任何帮助表示赞赏!谢谢!

回答

0

好吧 - 很多方法可以做到这一点。我不建议在数据库中尝试这样做,因为数据库对于解析来说不是很好,而且这种感觉就像你在中间或前端应该有的逻辑一样。如果这只是显示已有数据的真正方法,那可能完全是前端。

这里有一种方法 - 创建您想要的文本框,并在每个文本框的标签属性中存储一个“前缀”值,可用于识别给定的传感器数据值是否适合该文本框。

然后,您只需遍历每个文本框和传感器数据行,执行比较,然后将该值添加到文本框(如果其匹配)。

下面是示例代码:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    txtSensor.Text = "SensorTypeA_Test()" & vbCrLf & _ 
        "SensorA1_Output: 5.00" & vbCrLf & _ 
        "SensorA2_Output: 0" & vbCrLf & _ 
        "SensorA_Test: FAIL()" & vbCrLf & _ 
        "SensorTypeB_Test()" & vbCrLf & _ 
        "SensorB1_Output: 3.50" & vbCrLf & _ 
        "SensorB2_Output: 3.50" & vbCrLf & _ 
        "Sensor_Test: Pass()" 
End Sub 

Private Sub btnPopulate_Click(sender As Object, e As EventArgs) Handles btnPopulate.Click 
    txtSensorA.Tag = "SensorA" 
    txtSensorB.Tag = "SensorB" 


    Dim lstOutputs As New List(Of TextBox) 
    lstOutputs.Add(txtSensorA) 
    lstOutputs.Add(txtSensorB) 

    Dim sensorData() As String = txtSensor.Text.Trim.Split(vbCrLf) 
    For Each tb In lstOutputs 
     For Each sline In sensorData 
      If sline.TrimStart.StartsWith(tb.Tag) Then 
       UpdateOutputTextBox(tb, sline.Trim) 
      End If 
     Next 
    Next 
End Sub 

Private Sub UpdateOutputTextBox(tb As TextBox, sLine As String) 
    Dim sParts() As String = sLine.Split(":") 
    Dim sData As String = String.Empty 
    If sParts.Count = 2 Then 
     sData = sParts(1) 
     If tb.Text.Length > 0 Then 
      tb.Text &= (", " & sData.Trim) 
     Else 
      tb.Text = sData.Trim 
     End If 
    End If 
End Sub 

而结果......

enter image description here

所以,你应该能够做一些非常相似。希望这可以帮助。