在VB

时间:2017-04-11 17:35:03

标签: mysql vb.net textbox text-files

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

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个文本框(每个文本框都有一个预先制作的标签,如传感器A1),填充5.00,0,FAIL,3.50,3.50和Pass。

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

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

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

1 个答案:

答案 0 :(得分: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

所以你应该能够做一些非常相似的事情。希望这会有所帮助。