event vorm Wecheln des Datensatzes?

  • VB6

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Blace.

    event vorm Wecheln des Datensatzes?

    hallo,

    ich bin grad dabei ein Programm mit vb6 zu scheiben, bei dem einer Person in einem Formular mehrere (über 30) checkboxen zugeordnet sind. diese Belegung der Checkboxen wird in einem einzigen Feld der Datenbank gespeicher, in der Form "0110101101...", wobei "1" bedeutet, die Checkbox ist aktiviert und umgekehrt.
    Nun muss ich beim ändern der Checkboxen ja in irgendeinem Event des data Steuerelements, diese Folge von 0 und 1 in das Feld in der Datenbank speichern.
    Welches Event kann ich dafür nehmen, bzw. welches wird verwendet, wenn man z.b. einer Checkbox über die Eigenschaften "datasource" und "datafield" die datenquelle zuordnet. In diesem Fall passiert das "updaten" des Wertes ja automatisch.
    Ich hab es bereits mit dem event "dataValidate" vom data Steuerelement versucht, was aber mal funktionierte und mal nicht. ich denke, dass es dabei zu unzuverlässigkeiten kommt, da es beim manuellen Ändern des wertes in der Datenbank auch wieder zu einem dataValidate event Aufruf kommt.
    Hier mal als Beispiel wie es momentan noch bei mir ist, aber manchmal nicht funktioniert (das speichern des veränderten Wertes).

    Quellcode

    1. 'die alte checkbox belegung speichern
    2. Private Sub Data1_Validate(Action As Integer, Save As Integer)
    3. If Not Data1.Recordset.EOF Then
    4. 'checks_to_bel generiert die zu speichernde Zahl, anhand der checkbox Belegung
    5. tmp = checks_to_bel
    6. If tmp <> -1 Then
    7. Data1.Recordset.Edit
    8. Data1.Recordset!checkbox_belegung.Value = tmp
    9. Data1.Recordset.Update
    10. End If
    11. 'Else
    12. 'MsgBox "nichts gemacht"
    13. End If
    14. End Sub
    15. 'neue checkbox belegung laden
    16. Private Sub Data1_Reposition()
    17. If Not Data1.Recordset.EOF Then
    18. If Not IsNull(Data1.Recordset!checkbox_belegung.Value) Then
    19. 'setzt die checkboxen auf den richtigen wert
    20. set_checks (Data1.Recordset!checkbox_belegung.Value)
    21. Else
    22. MsgBox "nichts gemacht repos innen"
    23. End If
    24. Else
    25. MsgBox "nichts gemacht repos außen"
    26. End If
    27. End Sub

    das mit dem Laden der Checkbox Belegungen funktioniert ganz gut im event "dataReposition". nur wie gesagt das mit dem "dataValidate" zum speichern vorm wecheln des Datensatzes scheint nicht so die perfekte Lösung zu sein. Ich hab es auch schon mit dem mouseDown Event von data1 versucht. Das blöde hierbei ist nur, dass Datensätze auch manchmal über Klicks in einem dbGrid gewechselt werden bzw. durchs Suchen nach anderen Datensätzen usw. Da es hier so viele möglichkeiten gibt einen Datensatz zu wechseln und auch immer welche dazu kommen können (neue Suchabfragen etc.) wär es mir ganz lieb eine Lösung zu finden bei der ich nicht dort auch immer extra eine Methode zum Checkbox belegungen speichern aufrufen müsste.

    Ich hoffe ich konnte mein Problem hier einigermaßen verständlich formulieren. Falls ich irgendwas noch unklar gelassen hab werd ich hier gern noch mehr dazu schreiben.

    Freu mich über jede Antwort.

    Schöne Grüße

    Tobi

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Blace“ () aus folgendem Grund: quellcode ohne zeilenumbrüche