Kombinationsfeld - Eintrag hinzufügen

28/07/2010 - 12:07 von rw | Report spam
Hallo,
habe folgendes Problem. Ich habe ein Formular mit 3-Kombinationsfeldern
welche jeweils auf die gleiche Werteliste zugreifen. Ich möchte, dass ein
Wert , der in ein Kombinationsfeld eingegeben wird und dort noch nicht
vorhanden ist, sofort in der Liste der Werte in diesem Feld aufgenommen
wird. Ich habe dazu die folgende nachfolgende Lösung verwendet.

Das Problem besteht nun darin, dass die Kombinationsfelder (ausser dem in
welchem ich den neu hinzuzufügenden Wert eingegeben) habe, den neuen Wert
nicht kennen.

Was ist zu tun?

Private Sub Kombinationsfeld1_NotInList (NewData As String, Response As
Integer)
Response = acDataErrAdded ' verhindert die Standardmeldung

If MsgBox("Dieser Wert ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes
Then
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Tabellenname", DB_OPEN_DYNASET)

rs.AddNew
rs!Werte = NewData ' neu eingegebenen Wert in die Tabelle übernehmen
rs.Update

rs.Close : Set rs = Nothing
db.Close

Else
Response = acDataErrContinue
Werte.Undo 'Eingabe rückgàngig machen

End If

End Sub
-
Private Sub Kombinationsfeld2_NotInList (NewData As String, Response As
Integer)
Response = acDataErrAdded ' verhindert die Standardmeldung

If MsgBox("Dieser Wert ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes
Then
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Tabellenname", DB_OPEN_DYNASET)

rs.AddNew
rs!Werte = NewData ' neu eingegebenen Wert in die Tabelle übernehmen
rs.Update

rs.Close : Set rs = Nothing
db.Close

Else
Response = acDataErrContinue
Werte.Undo 'Eingabe rückgàngig machen

End If
-
Private Sub Kombinationsfeld3_NotInList (NewData As String, Response As
Integer)
Response = acDataErrAdded ' verhindert die Standardmeldung

If MsgBox("Dieser Wert ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes
Then
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Tabellenname", DB_OPEN_DYNASET)

rs.AddNew
rs!Werte = NewData ' neu eingegebenen Wert in die Tabelle übernehmen
rs.Update

rs.Close : Set rs = Nothing
db.Close

Else
Response = acDataErrContinue
Werte.Undo 'Eingabe rückgàngig machen

End If

End Sub


End Sub
 

Lesen sie die antworten

#1 Karl Donaubauer
28/07/2010 - 12:28 | Warnen spam
rw wrote:
...
Ich habe ein Formular mit 3-Kombinationsfeldern welche
jeweils auf die gleiche Werteliste zugreifen.



Lt. deinem Code handelt es sich um eine Tabelle.

Ich möchte, dass ein Wert , der in ein Kombinationsfeld
eingegeben wird und dort noch nicht vorhanden ist, sofort in der
Liste der Werte in diesem Feld aufgenommen wird. Ich habe dazu
die folgende nachfolgende Lösung verwendet.



Sehr schöne Lösung übrigens. ;-)

Das Problem besteht nun darin, dass die Kombinationsfelder (ausser
dem in welchem ich den neu hinzuzufügenden Wert eingegeben) habe,
den neuen Wert nicht kennen.

Was ist zu tun?

Private Sub Kombinationsfeld1_NotInList (NewData As String, Response
As Integer)
Response = acDataErrAdded ' verhindert die Standardmeldung

If MsgBox("Dieser Wert ist neu. Möchten Sie ihn anlegen?", vbYesNo) > vbYes Then
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Tabellenname", DB_OPEN_DYNASET)

rs.AddNew
rs!Werte = NewData ' neu eingegebenen Wert in die Tabelle
übernehmen rs.Update
...



Versuche hier mal eine Aktualisierung der anderen Kombis:

Me!Kombinationsfeld2.Requery
Me!Kombinationsfeld3.Requery

Servus
Karl
****************
http://www.donkarl.com Access-FAQ
http://www.donkarl.com/?aek 13. Access-Entwickler-Konferenz
25./26.09.2010 in Nürnberg, 16./17.10.2010 in Hannover

Ähnliche fragen