2017-04-11 57 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

所以,你應該能夠做一些非常相似。希望這可以幫助。

相關問題