CheckBox, GroupBox
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von menorca.
-
-
-
-
Prinzipiell ja, aber wenn du in ner MsgBox den Status der CheckBox haben willst, solltest du auch den ausgeben, und nicht den Text der aktuellen GroupBox, wie du es gemacht hast.
Wenn du nur bestimmte GroupBoxen haben willst, und es nur eine Handvoll sind, dann steck den Code am Besten in eine Funktion, der du das Control übergibst, und ruf die für die GroupBoxen auf. -
Hallo Lupus,
Danke für deine Anmerkungen.
zeigst du mir ein Beispiel wie das bei 7 Groupboxen aussehen kann es sind halt 7 Tage einer Woche
Montag bis Sonntag aus Woche X, die Groupbox hat das Datum und in der Groupbox ist je eine Checkbox.
wenn der Status (Checked True ist) soll etwas passieren (bei mir soll dann eine Prozedur aufgerufen werden)
die ich hier nicht angehängt habe, da ich das prüfen in den Groupboxen noch nicht so habe wie ich es brauche.
Danke für ein Beispiel -
Hallo Forum,
habe das mit der CheckBox hinbekommen das funktioniert soweit
ist die Checkbox True wird im Bsp. eine Message ausgegeben.
Quellcode
- '//Checkbox Check
- Private Sub CheckBoxCheck(ByVal oContainer As Object, _
- Optional ByVal bSubContainerAlso As Boolean = True)
- 'Daten auf bereits vorhandenen Datensatz prüfen
- If Not IsNothing(oContainer) Then
- ' alle Controls des Container-Objekts durchlaufen
- For Each oControl As Control In oContainer.Controls
- If bSubContainerAlso AndAlso oControl.Controls.Count > 0 Then
- CheckBoxCheck(oControl)
- Else
- ' Sofern es sich um ein CheckBox-Control handelt...
- If TypeOf oControl Is CheckBox Then
- If DirectCast(oControl, CheckBox).Checked = True Then
- 'Befehl ausführen Datensatz prüfen
- MsgBox(oContainer.text)
- 'Befehl ausführen, speichern oder Update
- End If
- End If
- End If
- Next
- End If
- End Sub
nun möchte ich so prüfen ob der Datensatz bereits vorhanden ist dann speichern, sonst Update
damit keine doppelten Einträge gemacht werden
wie setzt man das um?
Danke, für eine Verständliche Hilfe -
Evtl. mit einem
Dictionary(Of String, Boolean)
. String wäre der Name der CheckBox, Boolean der Zustand. Dann geht das so
VB.NET-Quellcode
- Public Class Form1
- Dim checkbox_states As New Dictionary(Of String, Boolean)
- Private Sub CheckBoxCheck(ByVal oContainer As Object, _
- Optional ByVal bSubContainerAlso As Boolean = True)
- 'Daten auf bereits vorhandenen Datensatz prüfen
- If Not IsNothing(oContainer) Then
- ' alle Controls des Container-Objekts durchlaufen
- For Each oControl As Control In oContainer.Controls
- If bSubContainerAlso AndAlso oControl.Controls.Count > 0 Then
- CheckBoxCheck(oControl)
- Else
- ' Sofern es sich um ein CheckBox-Control handelt...
- If TypeOf oControl Is CheckBox Then
- Dim cb As CheckBox = DirectCast(oControl, CheckBox)
- ' Überprüfen und speichern
- If Not checkbox_states.Contains(cb.Name) Then
- ' Gibts noch nicht; neu anlegen
- checkbox_states.add(cb.name, cb.checked)
- Else
- ' Updaten
- checkbox_states(cb.name) = cb.Checked
- End If
- If cb.Checked = True Then
- MsgBox(oContainer.text)
- End If
- End If
- End If
- Next
- End If
- End Sub
- End Class
Mit freundlichen Grüßen,
Thunderbolt -
-
-
Jo das wars, doch was soll
hier eigentlich stehen passieren
' Überprüfen und speichern
' Gibts noch nicht; neu anlegen
' Updaten
Meine Prüfung sieht derzeit so aus:
Quellcode
- '//
- Public Sub _Datenpruefen()
- 'Daten auf bereits vorhandenen Datensatz prüfen
- Dim mrs As New ADODB.Recordset
- Dim mcn As New ADODB.Connection
- ''Dim MeinDatum As String = Me.DTPProduktion.Value.ToString("dd.MM.yyyy")
- Try
- mcn.Open("Provider=Microsoft.Jet.OLEDB.4.0;" & _
- "Data Source=D:\TPM\Produktionsdaten.mdb")
- mrs.Open("SELECT tblProduktion.PDatum, " & _
- "tblProduktion.SK, " & _
- "tblProduktion.VP, " & _
- "tblMaschine.Bezeichnung, " & _
- "tblProduktion.MasID, " & _
- "tblProduktion.Bemerkung " & _
- "FROM tblProduktion LEFT JOIN tblMaschine " & _
- "ON tblProduktion.MasID = tblMaschine.MaschineID_P " & _
- "WHERE (((tblProduktion.PDatum)=#3/4/2013#) " & _
- "AND ((tblProduktion.MasID)=1))", mcn, _
- ADODB.CursorTypeEnum.adOpenKeyset, _
- ADODB.LockTypeEnum.adLockOptimistic)
- If Not (mrs.BOF And mrs.EOF) Then
- If Not IsDBNull(mrs.Fields("Bemerkung").Value) Then
- MsgBox("Die Maschine: " & mrs.Fields("Bezeichnung").Value & vbCrLf & _
- "wurde bereits erfasst!" & vbCrLf & _
- "Produktionsdatum: " & mrs.Fields("PDatum").Value & vbCrLf & _
- "Schicht: " & mrs.Fields("SK").Value & vbCrLf & _
- "Produkte/Stueck: " & mrs.Fields("VP").Value & vbCrLf & _
- "Bemerkung: " & mrs.Fields("Bemerkung").Value, MsgBoxStyle.Exclamation, "Daten vorhanden")
- Else
- MsgBox("Die Maschine: " & mrs.Fields("Bezeichnung").Value & vbCrLf & _
- "wurde bereits erfasst!" & vbCrLf & _
- "Produktionsdatum: " & mrs.Fields("PDatum").Value & vbCrLf & _
- "Schicht: " & mrs.Fields("SK").Value & vbCrLf & _
- "Produkte/Stueck: " & mrs.Fields("VP").Value, MsgBoxStyle.Exclamation, "Daten vorhanden")
- 'MsgBox("Keine Daten gefunden", MsgBoxStyle.Information, "Daten nicht vorhanden")
- End If
- End If
- mrs.Close()
- mrs = Nothing
- mcn = Nothing
- Catch ex As Exception
- MsgBox("Fehler db")
- End Try
- End Sub
geht das dann auch so wie ich es meine
Datensatz hinzufügen mache ich so:
das gibt es für den Montag bis Sonntag
Brainfuck-Quellcode
- Public Sub _MontagSpeichern()
- '#----------------------------------------------------------------- #
- '# Deklarationen -------------------------------------------------- #
- '#----------------------------------------------------------------- #
- Dim con As New OleDbConnection
- Dim cmd As New OleDbCommand
- Dim cn As New Odbc.OdbcConnection
- 'Der sog. ConnectionString, legt Treiber und den Pfad für die Datenbank fest
- con.ConnectionString = _
- "Provider=Microsoft.Jet.OLEDB.4.0;" & _
- "Data Source=D:\TPM\Produktionsdaten.mdb"
- cmd.Connection = con
- 'Verbindung wird geöffnet
- con.Open()
- 'Prozedur arbeitet Visualisieren
- Me.Cursor = Cursors.WaitCursor
- 'Variabeln deklarieren
- Dim NrJahr As String = Format(DateTimePicker1.Value, "yyyy")
- Dim KW As Integer = ISOWoche(DateTimePicker1.Text)
- Dim Fruehschicht As Integer = 1
- Dim Spaetschicht As Integer = 2
- Dim Nachtschicht As Integer = 3
- Dim Frueh As String = "F"
- Dim Spaet As String = "S"
- Dim Nacht As String = "N"
- '--------------------------------------------
- 'Datensatz Montag F speichern, hinzufügen ---
- '--------------------------------------------
- cmd.CommandText = "INSERT INTO tblProduktion (PDatum, NrJahr,NrWoche,Schart,Schicht,MasID,VP,VN,VM,SK) " & _
- "VALUES ('" & grpbmontag.Text & "','" & NrJahr & "'," & KW & "," & Fruehschicht & "," & _
- Me.DS1.Text & "," & Me.CBMaschine.SelectedValue & "," & Me.TBMoFVolumen.Text & "," & _
- Me.TBMoFNacharbeit.Text & "," & CDec(Me.TBMoFMitarbeiter.Text) & ",'" & Frueh & "');"
- 'Befehl ausführen danach sollten die Daten in der Tabelle sein
- cmd.ExecuteNonQuery()
- '--------------------------------------------
- 'Datensatz Montag S speichern, hinzufügen ---
- '--------------------------------------------
- cmd.CommandText = "INSERT INTO tblProduktion (PDatum, NrJahr,NrWoche,Schart,Schicht,MasID,VP,VN,VM,SK) " & _
- "VALUES ('" & grpbmontag.Text & "','" & NrJahr & "'," & KW & "," & Spaetschicht & "," & _
- Me.DS2.Text & "," & Me.CBMaschine.SelectedValue & "," & Me.TBMoSVolumen.Text & "," & _
- Me.TBMoSNacharbeit.Text & "," & CDec(Me.TBMoSMitarbeiter.Text) & ",'" & Spaet & "');"
- 'Befehl ausführen danach sollten die Daten in der Tabelle sein
- cmd.ExecuteNonQuery()
- '--------------------------------------------
- 'Datensatz Montag N speichern, hinzufügen ---
- '--------------------------------------------
- cmd.CommandText = "INSERT INTO tblProduktion (PDatum, NrJahr,NrWoche,Schart,Schicht,MasID,VP,VN,VM,SK) " & _
- "VALUES ('" & grpbmontag.Text & "','" & NrJahr & "'," & KW & "," & Nachtschicht & "," & _
- Me.DS3.Text & "," & Me.CBMaschine.SelectedValue & "," & Me.TBMoNVolumen.Text & "," & _
- Me.TBMoNNacharbeit.Text & "," & CDec(Me.TBMoNMitarbeiter.Text) & ",'" & Nacht & "');"
- 'Befehl ausführen danach sollten die Daten in der Tabelle sein
- cmd.ExecuteNonQuery()
- 'Verbindung wieder schließen
- cn.Close()
- Me.Cursor = Cursors.Default
- End Sub
-
Hallo zusammen,
ich gebe zu das ich mein Begehren die Daten zu speichern evtl. etwas kompliziert umgesetzt habe.
vergesst also obige Code Schnippsel, habe es doch auf die Reihe bekommen und sogar mit meiner Progressbar.
Daten werden nur gespeichert wenn die CheckBox True ist, und der Datensatz noch nicht vorhanden ist.
Bei Intresse werde ich das hier hochladen aber im Augenblick ist mir der Code dafür etwas zu lang.
Wünsche schönen Abend, und Danke an die Thread Teilnehmer
-
Ähnliche Themen
-
4 Benutzer haben hier geschrieben
- Gast (7)
- Artentus (2)
- Thunderbolt (1)
- Lupus (1)