Bestimmtes Feld per VBA aktualisieren

Wieder einmal ein herzliches Hallo,

ich bin soweit durch. Mir fehlt nur eine Kleinigkeit.

Ich habe ein UF das aus einer Tabelle besteht. Zwei Spalten sind wichtig. Eine beinhaltet einen Text in englisch die andere die Übersetzung in deutsch.
Beide werden durch Kombinationsfelder gefüllt. Ist ein Eintrag nich vorhanden wird er per Addnew-Methode eingefügt.

Allerdings kann es vorkommen, dass bei einer gewünschten Eingabe der Übersetzung ein neuer Datensatz angelegt wird, statt den aktivierten zu aktualisieren.

Bisher habe ich es hiermit versucht:

Private Sub frage\_ger\_NotInList(NewData As String, Response As Integer)
Dim dbCurrent As Database
Dim RS As Recordset
Dim intMsgResponse As Integer
Set dbCurrent = CurrentDb
Set RS = dbCurrent.OpenRecordset("tbl\_fragen", dbOpenDynaset)
 'Überprüfen ob die Übersetzung eingetragen ist
 If Nz(Me!frage\_eng, "") = "" Then
 'Nachfragen, ob der neue Wert gespeichert werden soll...
 intMsgResponse = MsgBox("Möchten Sie ´" & NewData & "´ zur Liste hinzufügen?", vbOKCancel + vbQuestion + vbDefaultButton2, " hinzufügen?")
 If intMsgResponse = vbOK Then
 'Tabelle öffnen und mit der AddNew-Methode den Eintrag speichern....
 With RS
 .AddNew
 !frage\_ger = NewData
 .Update
 RS.Close
 End With
 'Das Kombinationsfeld zum Requery veranlassen und den neuen Wert
 'auch automatisch auswählen lassen.
 Response = acDataErrAdded
 Else
 'Meldung, wenn auf Abbrechen geklickt wurde.
 Response = acDataErrContinue
 MsgBox "Sie können ´" & NewData & "´ nicht verwenden, wenn Sie den Wert nicht speichern.", vbExclamation, "Akquisitions-Datenbank"
 End If
 Else
 With RS
 .Edit
 !frage\_ger = NewData
 .Update
 RS.Close
 End With
 Response = acDataErrContinue
 End If
End Sub

Hinter dem letzten Else müsste etwas richtiges geschehen. :smile:

Liebe Grüße.

Hallo H&K,

Mir fehlt nur eine Kleinigkeit.

mir auch :smile:

Ich habe ein UF

mit der Bezeichnung ???

das aus einer Tabelle besteht.

das eine Tabelle mit der Bezeichnung ??? als Datenquelle hat.

Zwei Spalten sind wichtig.

mit den Feldbezeichnungen ??? sind wichtig

Beide werden durch Kombinationsfelder gefüllt.

Beide werden durch je ein Kombinationsfeld mit der Bezeichnung ??? gefüllt. Die Datenquelle pro KB-Feld ist: ???

Ist ein Eintrag nich vorhanden wird er per Addnew-Methode eingefügt.

Ist ein Eintrag in einem der KB-Felder nicht vorhanden, wird der Wert per AddNew Funktion in den Tabellen ??? und ??? hinzugefügt.

Allerdings kann es vorkommen, dass bei einer gewünschten
Eingabe der Übersetzung ein neuer Datensatz angelegt wird,
statt den aktivierten zu aktualisieren.

was ??? wird wo ??? angelegt und nicht aktualisiert?

soweit ich das verstanden habe und ohne die anderen Feldbezeichnungen zu kennen, würde ich behaupten: diese ELSE - Anweisung hat dort nichts zu suchen!

Else
With RS
.Edit
!frage_ger = NewData
.Update
RS.Close
End With
Response = acDataErrContinue
End If

Hinter dem letzten Else müsste etwas richtiges geschehen. :smile:

ja, nämlich NICHTS, weil sie total überflüssig ist!

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo Wolf,

vielen Dank für die Mühe die du dir gemacht hast, mich auf meine ganzen Fehler hinzuweisen.

Ich dachte nicht, dass es wichtig wäre die ganzen Namen der Steuerelemente aufzuzählen. Besonders weil ich mich ja nur auf der VBA-Oberfläche bewege und keine Verweise ins Formular habe.

Aber gut, ich hoffe es bringt was. :smile:

UF1: eingabe_ebene2 SELECT tbl_fragen.fragen_ID, tbl_fragen.frage_ger FROM tbl_fragen WHERE (((tbl_fragen.frage_ger) Is Not Null)) ORDER BY tbl_fragen.frage_ger;
Datensatzherkunft KB_Feld (frage-eng):

SELECT tbl_fragen.fragen_ID, tbl_fragen.frage_eng FROM tbl_fragen WHERE (((tbl_fragen.frage_eng) Is Not Null)) ORDER BY tbl_fragen.frage_eng;

Ist ein Eintrag in einem der KB-Felder nicht vorhanden, wird
der Wert per AddNew Funktion in den Tabellen
??? und ???
hinzugefügt.

tbl_fragen

Allerdings kann es vorkommen, dass bei einer gewünschten
Eingabe der Übersetzung ein neuer Datensatz angelegt wird,
statt den aktivierten zu aktualisieren.

was ??? wird wo ???
angelegt und nicht aktualisiert?

wenn frage_eng ein Eintrag vorhanden ist, soll nun der entsprechende deutsche Eintrag frage_ger gespeichert werden in tbl_fragen gespeichert werden, die entsprechende ID in tbl_quan-sets bleibt ja.

ABER

neuer Eintrag in Feld: z.B. frage_ger -> nun neuer Eintrag in erster Zeile der tbl_fragen in Feld frage_ger

soweit ich das verstanden habe und ohne die anderen
Feldbezeichnungen zu kennen, würde ich behaupten: diese ELSE -
Anweisung hat dort nichts zu suchen!

Else
With RS
.Edit
!frage_ger = NewData
.Update
RS.Close
End With
Response = acDataErrContinue
End If

Hinter dem letzten Else müsste etwas richtiges geschehen. :smile:

ja, nämlich NICHTS, weil sie total überflüssig ist!

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

wenn da aber nichts steht, kommt auch nüscht bei raus

Hallo H&K,

ich hoffe ich verstehe so langsam, was du da machst!?
Du hast zwei Felder in deinem UFO:

Frage_GER und Frage_ENG
(Unterstriche sind besser als Bindestriche)

Du hast eine Frage in deutsch und suchst dann die passende englische herhaus, oder umgekehrt?
Wenn die Frage in der anderen Sprache nicht vorkommt, ergänzt du die Tabelle, wo BEIDE Sprachen gespeichert sind?

Ich denke, dort liegt dein Fehler, trenne die Sprachen in zwei Tabellen. Also für jedes BK-Feld eine eigene Datenherkunft mit eigener Tabelle!

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Hallo Wolf,

ich habe das bestandene Problem gelöst:

Else
With RS
.FindFirst „fragen_ID =“ & Me!frage_ID
.Edit
!frage_ger = NewData
.Update
RS.Close
End With
End If

Somit klappt das alles. Zwar öffnet sich die Komboliste kurz, der Wert ist dann aber darin schon verfügbar.

Mein Problem ist jetzt nur die Tatsache, dass ich nach dem Entfernen EINES Frage-Eintrages BEIDE verschwinden.
Irgendwie wird die frage_ID in tbl_quan-sets gelöscht…

Schade, dass es sich erledigt hat. Und gerade jetzt, wo ich es doch geschafft es richtig zu erklären. :smile:
Dafür aber dann beim nächsten mal. :wink:

H&K

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]