Neuigkeiten:

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

Mobiles Hauptmenü

Feldinhalt kopieren und in neuen Datensatz eintragen

Begonnen von Michael Wulf, Mai 22, 2015, 20:50:29

⏪ vorheriges - nächstes ⏩

Michael Wulf

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

MaggieMay

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
Freundliche Grüße
MaggieMay

Michael Wulf

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

MzKlMu

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.
Gruß Klaus

Michael Wulf

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

MaggieMay

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.
Freundliche Grüße
MaggieMay

Michael Wulf

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.

Michael Wulf


Michael Wulf

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

MaggieMay

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!
Freundliche Grüße
MaggieMay

Michael Wulf

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

MaggieMay

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.
Freundliche Grüße
MaggieMay

Michael Wulf

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

DF6GL

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.