PDA

Vollständige Version anzeigen : Datensatz hinzufügen


se7en
02.08.2001, 12:45
Hallo Leute, ich will folgendes in meinem Formular realisieren:
Combobox (Kunden sind hinterlegt)
Bei eingabe einer Kundennummer die noch nicht existiert, fragen ob neuer Kunde angelegt werden soll. Formular um einen neuen Kunden anzulegen öffnet sich. nach eingabe des Kunden, aktualisiert sich die combobox und zeigt den neuen Kunden an.

Versteht ihr was ich meine? Das mit der aktualisierung muss ja nicht direkt nach der Kundeneingabe sein, vielleicht automatisch beim klicken auf die combo oder nach aktualisierung - ist ja egal.

danke für die hilfe

Rasputin
02.08.2001, 13:02
Beim Kombinationsfeld 'Ereignis bei nicht in der Liste' das Formular für den neuen Kunden öffnen mit Code zB:

DoCmd.OpenForm "Formularname", , , , acAdd, acNormal, 1

Beim Kombinationsfeld 'Erignis beim Fokuserhalt' folgenden Code einfügen:

Me.DeineCombobox.requery
Ciao,
Raz

A.S.
02.08.2001, 13:24
Im Ereignis "Bei Nichinliste" zunächst über eine MessageBox nachfragen ob der Kunde hinzugefügt werden soll.

Dim intAnswert As Integer

intAnswer = MsgBox("Sie haben die nicht existierende Kundennummer " & _
NewData & " eingegeben." & vbCrLF & vbCrLF & _
"Soll dieser Kunde angelegt werden?", vbYesNo + vbQuestion + _
vbDefaultButton2, "Kunden anlegen?")

Die Antwort prüfst Du nun und reagierst entsprechen durch die Ablehnung des Eintrages oder den Aufruf des Erfassungsformulares. Wenn die Kundennummer kein Autowertfeld ist, ist es praktisch die eingegebene Kundennummer an das Formular zu übergeben, damit der Benutzer diese nicht neu erfassen muß:

If intAnswer = vbYes Then
DoCmd.OpenForm "frmKundenerfassung", acNormal, , acAdd, _
acDialog, NewData
If NZ(DCount("[KDNR]","Kundenstammdaten","[KDNR]=" & NewData)) = 1 _
Then
Response = acDataErrAdded
Else
Response = acDataErrContinue
End If
Else
Response = acDataErrContinue
End If

Duch den Parameter acDialog der OpenForm-Methode wird das Kundenerfassungsformular "modal" (d. h. als popup und gebunden, es kann kein anderes Fenster der App angewählt werden) geöffnet und die App kehrt nach schließen des Fensters auf jeden Fall wieder an diese Stelle im Coding zurück, da die App bzw. das Coding des aktuellen Formulars dadurch gestoppt wird.

Die Bedingung nach dem Öffnen des Formulars dient der Überprüfung ob der entsprechende Kunde auch erfaßt worden ist. Wenn nicht, wird acDataErrContinue zurückgegeben, wenn doch wird acDataErrAdded zurückgegeben. "acDataErrContinue" wird auch in dem Fall zurückgegeben, das der Anwender die Frage nach der Kundenanlage mit Nein beantwortet. acDataErrContinue teilt dem Kombinationsfeld mit, das der Wert der eingegeben wurde nicht der Liste hinzugefügt wurde. acDataErrAdded bedeutet dementsprechend, das der Wert hinzugefügt wurde. In dem Fall führt das Kombinationsfeld automatisch ein Requery durch.

Hoffe geholfen zu haben.

Gruß

Arno

se7en
02.08.2001, 13:37
Hi Rasputin, er bringt mir einen fehler, ich soll den datensatz erst speichern. ohne das requery geht alles einwandfrei.

A.S.
02.08.2001, 13:41
Hallo se7en,

siehe die Handhabung des "Response"-Parameters des "Bei Nichtinliste"-Ereignisses! Das .Requery bricht bei solchen Aktionen regelmäßig das Genick!

Gruß

Arno

se7en
02.08.2001, 14:02
Wo muss ich das hinschreiben?

If intAnswer = vbYes Then
DoCmd.OpenForm "frmKundenerfassung, acNormal, , acAdd, _
acDialog, NewData
If NZ(DCount("[KDNR]","Kundenstammdaten","[KDNR]=" & NewData)) = 1 _
Then
Response = acDataErrAdded
Else
Response = acDataErrContinue
End If
Else
Response = acDataErrContinue
End If


auch bei "nicht in liste" ???

dann bringt er mir noch einen fehler bei vbdefault (im ersten teil) er sagt "variable nicht definiert"

A.S.
02.08.2001, 14:17
Hallo se7en,

mein Coding bezieht sich insgesamt auf das Ereignis "Bei NichtinListe". Bei vbDefault habe ich mich wohl verschrieben bzw. die Konstante nicht ausgeschrieben. Hier muß es richtig heißen: vbDefaultButton2

Gruß

Arno

PS Habe das Coding entsprechend korrigiert.

[Dieser Beitrag wurde von ArnoSimon am 02.08.2001 editiert.]

se7en
02.08.2001, 14:33
Habe wieder einen fehler, bei

DoCmd.OpenForm "frm_Kunde", acNormal, , acAdd, _
acDialog, NewData

(hab das "frm_Kunde" entsprechend geändert.)
er sagt:
sie haben für eines der argumente einen ausdruck eingegeben der nicht den für das Argument erforderlichen datentyp hat.

A.S.
02.08.2001, 15:31
Hallo se7en,

mea culpa, habe ein - nicht unwichtiges - Komma vergessen :(

Statt

DoCmd.OpenForm "frmKundenerfassung", acNormal, , acAdd, _
acDialog, NewData

muß es

DoCmd.OpenForm "frmKundenerfassung", acNormal, , , acAdd, _
acDialog, NewData

heißen. Unmittelbar vor "acAdd" muß noch ein Komma rein. (BTW: ein bissel die AccHilfe studiert und Du wärst seit 'ner 3/4tel Stunde fettich ;) :D

------------------
HTH

Arno

se7en
02.08.2001, 15:40
VIIIIIIIIIIEEEEEELLLLLLLLLLLLEEEEEENNNNN DANK!

Eine frage, wie lange hast du schon Access, bzw. seit wieviel jahren benutzt du es?

A.S.
02.08.2001, 15:42
Hallo se7en,

ich arbeite seit 1995 mit Access, warum?

Gruß

Arno

se7en
02.08.2001, 15:45
Weil du dich saumäßig gut auskennt.
Ich fühl mich wie ein säugling, wenn ich sehe was du alles mit access machst.
gut ich verwende es jetzt vielleicht seit 4 monaten. aber trotzdem....

ISCH VOLL KRASS MANN :D

se7en
02.08.2001, 15:46
JUBILÄUM - 150 Beiträge :D

A.S.
02.08.2001, 15:49
Na dann: Meinen herzlichsten Glückwunsch zu Deinen 150 Beiträgen :p

Gruß

Arno

BTW Mit diesem Beitrag habe ich das 10fache voll :D

se7en
03.08.2001, 07:17
Jo ich wünsche dir Gottes segen zu deinem 1500sten :D