Hallo zusammen,
ich habe folgende Situation:
Ein Formular beinhaltet 2 Unterformulare.
1. Unterformular "Kunden" beinhaltet alle Kunden mit Adressdaten und dem zugeordneten Berater
2. Unterformular "Teilnehmer" beinhaltet die Teilnehmer von Veranstaltungen
Im Hauptformular befindet sich ein Kombinationsfeld, das den Inhalt des Formulars nach Veranstaltungsname filtert
Nun zum meinem Problem:
In der Tabelle "Kunden" befindet sich ein Feld "Kundenbez".
In der Tabelle "Teilnehmer" befindet sich ein Feld "Kunde".
Nun möchte ich folgendes: Durch ein Doppelklick auf das Feld "Kundenbez." soll dieser Wert in der Tabelle "Teilnehmer" in das Feld "Kunde" mit einem neuen Datensatz eingefügt werden.
Wer kann mir helfen. Super wäre ein Vorschlag mit dem VBA Code, da ich hier noch nicht so richtig fit bin
DANKE
Hallo,
so könnte bspw. der Code im Doppelklick-Ereignis aussehen:
If Not Me.Parent.uf_Teilnehmer.Form.NewRecord Then
Me.Parent.uf_Teilnehmer.SetFocus
DoCmd.GoToRecord , , acNewRec
End If
Me.Parent.uf_Teilnehmer.Form.t1_kid_f = Me.t1_kid
Me.Parent.uf_Teilnehmer.Form.Dirty = False
Hallo Maggie,
vielen Dank für die Anwort. Kannst du mir noch erklären was der Code bewirkt ? Wird bei einem Doppelklick der Wert aus der Tabelle Kunden Feld Kundenbez tatsächlich in die Zieltabelle Teilnehmer Feld Kunden übertragen ?
DANKE
Hallo,
mal noch eine Frage, die Felder Kundenbez und Kunden scheint mir nicht der Primärschlüssel (bzw. Fremdschlüssel) zu sein. Was steht denn in den Feldern ?
Im Regelfall werden da nicht die Namen genommen sondern wie gesagt die Schlüsselfelder.
Es wäre besser, Du würdest erst mal den Aufbau der Tabellen und Beziehungen schildern.
Wenn das alles korrekt aufgebaut ist, wird gar kein Code benötigt, da man Hafo und Ufo über die Schlüsselfelder verknüpfen kann und somit das Fremdschlüsselfeld in der abhängigen Tabelle (Ufo) automatisch gefüllt wird.
hallo,
ich habe eine Veranstaltungsdatenbank programmiert.
Die Tabelle 'Kunden' beeinhaltet alle Kundendaten wie Anschrift etc.. U.a. auch dass Feld Kundenbezeichnung, dass eine Kurzbezeichnung bestehend aus Name und Fima beinhaltet . Natürlich hat die Tabelle auch einen Primärschlüssel Kunden.ID.
Eine weitere Tabelle Veranstaltung beinhaltet alle Daten zur Veranstaltung, wie Name der veranstaltung, Ort, Datum etc.. Auch diese hat einen Primärschlüssel
Die Dritte Tabelle, quasi der Kern beinhaltet welche kunden zu welcher Veranstaltung eingeladen sind.
Hier gibt es die Felder:
Teilnehmer.ID als Primärschlüssel
Teilnehmer.Veranstaltung (->verknüpft mit Tabelle Veranstaltung. ID ) beinhaltet den Namen der Veranstaltung. Auswahl über Kombifeld mit Inhalt Veranstaltung.ID und Veranstaltung.name
Teilnehmer.Kunde (-> Verknüpft mit Tabelle Kunden. ID ) Auswahl über Kombifeld mit den Daten aus Kunden .ID und Kunden.Kundenbezeichnung s.o.
Teilnehmer.Einladung
Teilnehmer.Zusage
Teilnehmer.Absage
und weitere Felder
Eigentlich funktioniert alles. Ich kann über ein entsprechendes HAFO und UFO über das Kombinationsfeld Kundenbezeichnung Teilnehmer zur Veranstaltung hinzufügen (Tabelle Teilnehmer)
Der Wunsch lautet aber:
Ich möchte aus einer Kundenliste (mein erstes UFO) per Doppelklick kunden in die Tabelle Teilnehmer (das zweite UFO) einfügen. Da meine Mitarbeiter anhand einer (dieser) Kundenliste die Kunden einfügen möchten. Dabei soll im 2. UFO 'Teilnehmer' jeweils ein neuer Datensatz entstehen. Manchmal braucht man halt einen Denkanstoss um sich zu erinnern welche Kunde man einladen möchte.
Ich hoffe ich habe mich verständlich ausgedrückt
DANKE
Zitat von: Michael Wulf am Mai 23, 2015, 09:15:27Kannst du mir noch erklären was der Code bewirkt ?
es handelt sich um ungetesteten Luftcode und er
sollte genau das bewirken was du vorhast.
ZitatWird bei einem Doppelklick der Wert aus der Tabelle Kunden Feld Kundenbez tatsächlich in die Zieltabelle Teilnehmer Feld Kunden übertragen ?
Das könntest du ja vielleicht einfach mal ausprobieren. Die von mir gewählten Namen müssen natürlich noch angepasst werden. Ich hatte ohne weiteren Kommentar allein durch den Code darauf hinweisen wollen, dass hier besser der Datensatzschlüssel (Primär-/Fremdschlüssel) zum Einsatz kommen sollte, so wie auch Klaus es anmerkte.
PS:
Dein letzter Post steht im Widerspruch zum ersten was den Inhalt des Fremdschlüssels "Kunde" in der Teilnehmertabelle betrifft.
Hallo,
ich habe jetzt den code wie folgt eingebaut:
If Not Me.Parent.Teilnehmer_Unterformular2.Form.NewRecord Then Me.Parent.Teilnehmer_Unterformular2.SetFocus
DoCmd.GoToRecord , , acNewRec
Me.Parent.Teilnehmer_Unterformular2.Form.Kunde = Me.ID
Me.Parent.Teilnehmer_Unterformular2.Form.Dirty = False
Im Teilnehmer_Unterformular2 wird zwar ein neuer Datensatz angelegt. Aber der Wert aus Me.ID wird nicht mitgenommen.
Das End If habe ich rausgenommen, weil eine Fehlermeldung erschien:
End If ohne If Block
Kann es daran liegen, dass das Feld 'Kunde' im Teilnehmer_Unterformular2 ein Kombifeld mit den Werten ID und Kunden_bezeichnung ist. Müssen hier ggf. beiden Werte weitergegeben werden ?
Sorry aber ich bin mehr Laie als Profi und ihr versteht was ich meine.
;D ;D ;D
Ich glaube es funktioniert doch ...
So, zunächst einmal vielen Dank für die Hilfe.
Die Übernahme funktioniert mit dem Code einwandfrei.
Aber ....
Wenn es im 2. UFO (hierhin soll der Wert übertragen werden) noch keinen Datensatz gibt. In diesem Falle der erste Teilnehmer bei einer Veranstaltung. Kommt die Fehlermeldung "Kann nicht zu diesem Datensatz springen"
Habt ihr eine Idee ?
Vielen Dank im Voraus
Michael
Das sollte eigentlich durch die Prüfung auf NewRecord abgefangen werden.
Zeige doch bitte noch einmal deine Version des Codes - aber bitte in Code-Tags!
Hallo Maggie
hier der Code bei Doppelklick
Private Sub Kunden_Bezeichnung_DblClick(Cancel As Integer)
If Not Me.Parent.Einl_Teilnehmer_UFO.Form.NewRecord Then
Me.Parent.Einl_Teilnehmer_UFO.SetFocus
DoCmd.GoToRecord , , acNewRec
Me.Parent.Einl_Teilnehmer_UFO.Form.Kunde = Me.ID
Me.Parent.Einl_Teilnehmer_UFO.Form.Dirty = False
End Sub
Ich habe wie bereits beschrieben das END IF herausgenommen und die Formularnamen und Felder verändert.
DANKE im Voraus.
Michael
Das End If kannst du nicht einfach rausnehmen, welchen Zweck sollte das haben?
So ist der Code syntaktisch fehlerhaft und nicht ausführbar - das sollte dir der Compiler allerdings schon gesagt haben.
Sorry,
aber der Code funktioniert so einwandfrei und es kommt keine Fehlermeldung bei der Ausführung. Nur eben dass Problem bei einer "leeren Abfrage" im UFO 2:
Private Sub Kunden_Bezeichnung_DblClick(Cancel As Integer)
If Not Me.Parent.Einl_Teilnehmer_UFO.Form.NewRecord Then
Me.Parent.Einl_Teilnehmer_UFO.SetFocus
DoCmd.GoToRecord , , acNewRec
Me.Parent.Einl_Teilnehmer_UFO.Form.Kunde = Me.ID
Me.Parent.Einl_Teilnehmer_UFO.Form.Dirty = False
End Sub
Der Code ist 1:1 dargestellt.
Die Fehlermeldung kommt wenn das END IF drin ist. Mit dem Hinweis es wird eine IF Anweisung benötigt. Vielleicht war das END IF an der falschen Stelle ? So war es vorher:
Private Sub Kunden_Bezeichnung_DblClick(Cancel As Integer)
If Not Me.Parent.Einl_Teilnehmer_UFO.Form.NewRecord Then
Me.Parent.Einl_Teilnehmer_UFO.SetFocus
DoCmd.GoToRecord , , acNewRec
END IF
Me.Parent.Einl_Teilnehmer_UFO.Form.Kunde = Me.ID
Me.Parent.Einl_Teilnehmer_UFO.Form.Dirty = False
End Sub
Danke im Voraus.
Michael
Hallo,
es kann nicht sein, dass der Code ohne End If richtig funktioniert und kompiliert werden kann....
Geh mal in den VBA-Editor und kompiliere dort die DB..
Achte darauf , dass in JEDEM Modul am Anfang Option Explicit zu stehen kommt.
Ansonsten finde ich die Formular-Konstruktion etwas gewöhnungsbedürftig (da unlogisch) .
Ansonsten lad die DB hier hoch, komprimiert, gezippt und evtl. datenreduziert.
PS: Vielleicht hilft ein einfaches
On Error Goto Next
um die Warn-/Fehlermeldung zu unterdrücken.