Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Ergebnis aus Optiongruppe wird nicht in db eingetragen

Begonnen von Uwe_Noob, April 22, 2020, 21:17:09

⏪ vorheriges - nächstes ⏩

Uwe_Noob

Hallo,
ich möchte meine bisher super funktionierendes kleines Programm dahin gehend erweitern, Werte einer bestimmten Option mit zugeben.
Das ist mein Code.
Private Sub Kategorie()
    If rs!Verb = False And rs!regel = True Then
        Me.brdkategorie.Enabled = False
        MsgBox "abfrage funzt", , "Funktionstest" 'nur als Dummy
    Else
        If IsNull(Me.brdkategorie) Then
            MsgBox "Bitte auswahl treffen", , "Auswahl treffen" 'wird ausgewertet
        End If
    End If
        With rs
        Debug.Print Me.txtneuspanisch 'zeigt das richtige Ergebnis
        .FindFirst "[Spanisch] = '" & Me.txtneuspanisch & "'"
        Debug.Print !Spanisch 'zeigt das richtige Ergebnis
        .Edit
            Select Case brdkategorie 'Option wird korrekt ausgewertet
                Case 1
                    .Fields("beruf").Value = -1
                    MsgBox "Beruf gewählt", , "Kategorie Auswahl"
                Case 2
                    .Fields("essen").Value = -1
                    MsgBox "Futter gewählt", , "Kategorie Auswahl"
                Case 3
                    .Fields("farbe").Value = -1
                     MsgBox "Farbe gewählt", , "Kategorie Auswahl"
                Case 4
                    .Fields("haus").Value = -1
                    MsgBox "Haus / Wohnung gewählt", , "Kategorie Auswahl"
                Case 5
                    .Fields("koerper").Value = -1
                    MsgBox "Körper gewählt", , "Kategorie Auswahl"
                Case 6
                    .Fields("laender").Value = -1
                    MsgBox "Länder / Orte gewählt", , "Kategorie Auswahl"
                Case 7
                    .Fields("moebel").Value = -1
                    MsgBox "Möbel gewählt", , "Kategorie Auswahl"
                Case 8
                    .Fields("tier").Value = -1
                    MsgBox "Tier gewählt", , "Kategorie Auswahl"
            End Select
            .Update 'Option wird nicht nicht in DB geschrieben
        End With
End Sub

Leider wird der Wert nicht in die DB eingetragen. Die Kommentare geben schon an was geht und was nicht.
Was übersehe ich ?
Gruß
Uwe
2 Monate Access ^^

DF6GL

Hallo,

was ist "rs" und wo wird es deklariert?

Zudem fehlt vermutlich "Option Explicit" in den Modulen.

Trage das in jeden Modulkopf ein und kompiliere das Programm.

Dabei auftretende Fehler müssen allesamt eliminiert werden.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Uwe_Noob

Doch ist alles da, wollte nur nicht den gesamten Code des Formulars posten ^^
Der Recordset wird beim laden des Formulars geladen.
Der Kopf ...
Option Compare Database
Option Explicit

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim savers As DAO.Recordset
Dim rsql As String


Lade des Formulars
Private Sub Form_Load()
    Set db = CurrentDb
    Set rs = db.OpenRecordset("tabvok", dbOpenDynaset, dbSeeChanges)
    Me.txtSearch = ""
    refreshData
End Sub

Im Direktbereich wird auch der korrekte Wert des Datensatzes angezeigt. Der Wert der Option wird nur nicht eingetragen.
Hier sollen die Neuen bzw. geänderten Datensätze gespeichert werden
Private Sub cmbsave_Click()
     rsql = "SELECT * FROM tabvok WHERE spanisch = '" & Me.txtneuspanisch & "'"
     Set savers = CurrentDb.OpenRecordset(rsql, dbOpenDynaset)
     With savers
          If .EOF Then
             .AddNew
             .Fields("spanisch") = Me.txtneuspanisch
             MsgBox "Vokabel gespeichert"
             .Fields("check_ueber") = "0"
          Else
             .Edit
           
              MsgBox "Vokabel geändert"
          End If
            .Fields("Deutsch") = Me.txtneudeutsch
            .Fields("Spanisch") = Me.txtneuspanisch
            .Fields("verb") = Me.chkverb
            .Fields("regel") = Me.chkregel
            Kategorie
            .Update
            .Close
    End With
            checkVerb
            refreshData
            'Kategorie
            Me.brdkategorie = Null
            Me.txtneudeutsch = ""
            Me.txtneuspanisch = ""
            Me.chkregel = False
            Me.chkverb = False
End Sub


Eventuell falsche Reichenfolge ?
Btw. bitte nicht über den Code herziehen wird noch entsprechend aufgeräumt ^^

Gruß
Uwe


2 Monate Access ^^

Uwe_Noob

Es war tatsächlich die Reihenfolge  ???
Private Sub cmbsave_Click()
     rsql = "SELECT * FROM tabvok WHERE spanisch = '" & Me.txtneuspanisch & "'"
     Set savers = CurrentDb.OpenRecordset(rsql, dbOpenDynaset)
     With savers
          If .EOF Then
             .AddNew
             .Fields("spanisch") = Me.txtneuspanisch
             MsgBox "Vokabel gespeichert"
             .Fields("check_ueber") = "0"
          Else
             .Edit
           
              MsgBox "Vokabel geändert"
          End If
            .Fields("Deutsch") = Me.txtneudeutsch
            .Fields("Spanisch") = Me.txtneuspanisch
            .Fields("verb") = Me.chkverb
            .Fields("regel") = Me.chkregel
            .Update
            .Close
            Kategorie
    End With
            checkVerb
            refreshData
            Me.brdkategorie = Null
            Me.txtneudeutsch = ""
            Me.txtneuspanisch = ""
            Me.chkregel = False
            Me.chkverb = False
End Sub
2 Monate Access ^^