2017-04-11 6 views
0

私はVS2015でVBを使用していますが、マイクロプロセッサから約40行の入力を受け取るテキストボックスがあります。私が最終的に必要とするのは、入力の一部を複数のテキストボックスに表示し、それらの値をmySQLデータベースに保存することです。たとえば、のは、私が持っているとしましょう:VBのテキストボックスから複数のテキストボックスに特定の値を出力する

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

を渡します

この場合、基本的には6つのテキストボックスがあります(それぞれにはセンサーA1などのあらかじめ作成されたラベルが付いています) )5.00、0、FAIL、3.50、3.50と合格を記入してください。

私が見ているように、これには2つの方法があります。まず、値をmySQLデータベースに直接送信し、必要な値を複数のテキストボックスに取り込む方法を調べることができます。これはかなり単純ですが、変数名を持たないため、これらの値を直接データベースに送る方法はわかりません。

もう1つの方法は、テキストボックス自体を解析するか、入力をファイルに保存して解析することです。私がこのようにした場合、すべてのテキストボックスを順番に入力するのではなく、ラベルに対応する値を各テキストボックスで探すことを好みます。私はそれが意味することは、 "Sensor A1"というテキストボックスがある場合、それはtbSensorA1という独自の変数名を持ち、 "SensorA1_Output"を探してコロンの後に来る値を表示し、もしあれば値がない場合は、テキストボックスに "N/A"と表示します。これにより、データベースに値を格納することも非常に簡単になります。

基本的には、私が提案したこと以外にもこれを行う方法が他にあるのかどうか、もしそうでなければ、テキストボックスやテキストファイルを特定のフレーズで検索し、対応するテキストボックスにコロンを挿入しますか?どんな助けもありがとう!ありがとう!

答えて

0

これを行う方法はたくさんあります。私はデータベースでこれを行うことをお勧めしませんが、データベースは解析にはあまり適していないため、これはあなたが中間またはフロントエンドに持っていなければならないロジックのように感じます。これが本当にすでに持っているデータを表示する方法であれば、完全にフロントエンドになるかもしれません。

あなたが望むテキストボックスを作成し、それぞれのテキストボックスのタグプロパティに1つの方法があります。与えられたセンサーデータ値がそのテキストボックスに適切かどうかを識別するために使用できる「接頭辞」値を格納します。

次に、各テキストボックスとセンサデータラインをループして比較し、一致する場合は値をテキストボックスに追加します。ここで

はサンプルコードです:

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

だから、あなたは非常によく似た何かを行うことができるはず。お役に立てれば。

関連する問題