Datagridview + Schleife + SPS

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Datagridview + Schleife + SPS

    Moin!
    Ich will aus meiner SPS mehrere Werte gleichzeitig auslesen!
    Wie ich einzelnt ein Wert auslese und ihn z.b in einer Textbox wiedergebe weiß ich , aber ich will z.b mehrere Werte in die erste Spalte des
    Datagridviews eintragen , wenn ich dann (z.b auf einen Button) klicke soll mir in Spalte zwei auf gleicher höhe der Wert angezeigt werden.
    Bsp. :


    Hab echt grad keine Ahnung wie ich das lösen soll das auch wirklich bei E13.4 z.b rechts davon der Wert von E13.4 reingeschrieben wird!

    Vielen dank schonmal im vorraus!
    Willkommen im Forum. :thumbup:
    Du scheinst bereits über einige Programmiererfahrungen zu verfügen, da Du in der Lage bist, Dich mit einer SPS zu unterhalten.
    Allerdings ist es für Dein Problem nicht hilfreich, wenn Du mehrere Teilprobleme vermischst.
    Isoliere zunächst elementare Aufgaben und löse diese einzeln, am besten in je einem kleinen, in sich abgeschlossenen Testprojekt.
    Wenn jedes dieser Testprojekts zu Deiner Zufriedenheit läuft, füge sie zu einem neuen gemeinsamen Projekt zusammen.
    1. Kommunikation mit der SPS (seriell über RS232 oder USB - ggf. bereits fertig), das "Gleichzeitig" würde ich mal geflissentlich überlesen.
    2. Befüllen eines DataGridViews. Die 2 Spalten werden im Designer erzeugt.
    2.1. Anlegen einer neuen Zeile ==> Me.DataGridView1.Rows.Add()
    2.2. Befüllen von vorhandenen Zellen:

    VB.NET-Quellcode

    1. Private myRow As Integer = 1
    2. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    3. Me.DataGridView1.Item(0, myRow).Value = myRow
    4. Me.DataGridView1.Item(1, myRow).Value = myRow * myRow
    5. myRow += 1
    6. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Willkommen im Forum. :thumbup:
    Du scheinst bereits über einige Programmiererfahrungen zu verfügen, da Du in der Lage bist, Dich mit einer SPS zu unterhalten.
    Allerdings ist es für Dein Problem nicht hilfreich, wenn Du mehrere Teilprobleme vermischst.
    Isoliere zunächst elementare Aufgaben und löse diese einzeln, am besten in je einem kleinen, in sich abgeschlossenen Testprojekt.
    Wenn jedes dieser Testprojekts zu Deiner Zufriedenheit läuft, füge sie zu einem neuen gemeinsamen Projekt zusammen.
    1. Kommunikation mit der SPS (seriell über RS232 oder USB - ggf. bereits fertig), das "Gleichzeitig" würde ich mal geflissentlich überlesen.
    2. Befüllen eines DataGridViews. Die 2 Spalten werden im Designer erzeugt.
    2.1. Anlegen einer neuen Zeile ==> Me.DataGridView1.Rows.Add()
    2.2. Befüllen von vorhandenen Zellen:

    VB.NET-Quellcode

    1. Private myRow As Integer = 1
    2. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    3. Me.DataGridView1.Item(0, myRow).Value = myRow
    4. Me.DataGridView1.Item(1, myRow).Value = myRow * myRow
    5. myRow += 1
    6. End Sub

    Vielen dank für deine Antwort!
    Ich habe es jetzt erstmal versucht mit einem Timer und Text der von Spalte 1 in Spalte 2 Übernommen wird + eigenem Text dazu

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. Dim Text As String
    3. Text = CStr(Me.DataGridView1.Item(0, myRow).Value)
    4. Me.DataGridView1.Item(0, myRow).Value = Text
    5. Me.DataGridView1.Item(1, myRow).Value = Text & "Hey"
    6. myRow += 1
    7. End Sub
    8. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    9. Timer1.Stop()
    10. End Sub


    Natürlich geht das nicht ganz ohne Fehler , es ist nämlich immer ein Feld der 1 Spalte Leer .
    Wie kann ich eine Exception einbauen das wenn Feld 1 Leer ist , das er dann aufhört?

    EDIT :
    beim Hinzufügen dieses Stopps bleibt zwar die Fehlermeldung aus , aber die Letzte Zelle der Spalte 2 hat den Text "Hey"
    Wie kann ich diese Explizit clearen?

    VB.NET-Quellcode

    1. If Text = "" Then Timer1.Stop()

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „klopower“ ()

    Bitte unterlass das komplette Zitieren von Posts, das wird hier nicht gern gesehen.

    klopower schrieb:

    Wie kann ich eine Exception einbauen das wenn Feld 1 Leer ist , das er dann aufhört?
    Meinst Du dies:

    VB.NET-Quellcode

    1. If Me.DataGridView1.Rows.Count > myRow Then

    Besser ist es allerdings, wenn Du sofort auf eine DataTable umsteigst, diese befüllst und als DataSource an das DGV hängst. Da hast Du viel weniger Ärger mit der Darstellung.
    Allerdings hab ich da nicht die große Ahnung.

    klopower schrieb:

    Wie kann ich diese Explizit clearen?

    VB.NET-Quellcode

    1. Me.DataGridView1.Item(1, myRow - 1).Value = ""
    Dafür wird mich der @ErfinderDesRades: wahrscheinlich erschlagen, auch wenn Du das jetzt noch nicht verstehst. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    klopower schrieb:

    Option Strict on?
    Ja bitte, das verhindert, dass Du Äpfel und Glühbirnen miteinander vermengst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!