Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Import von Excel und ID-Feld

Begonnen von Luggasch, November 19, 2022, 08:21:18

⏪ vorheriges - nächstes ⏩

Luggasch

Guten Morgen zusammen,

ich benötige leider noch mal eure Hilfe.

Ich habe eine Tabelle "Teilnehmer" und eine Tabelle "Events"
Wenn ich im Formular bin, soll per Button eine ausgewählte Excelliste in Teilnehmer importiert werden. Das klappt auch ganz gut.

Jetzt möchte ich aber, dass er nicht nur die Excel in Teilnehmer importiert, sondern auch den AutoWert (EventID) hinter jeden importierten Datensatz einfügt.

Hier soweit mein Code. Leider weiß ich nicht wie ich da noch die EventID mit reinbringen kann :/


Private Sub import_Click()

Dim fd As Office.FileDialog
Dim strDatei As String


Set fd = Application.FileDialog(msoFileDialogFilePicker)

With fd

    .Filters.Clear
    .Filters.Add "Excel-Dateien", "*.xlsx?", 1
    .Title = "Eine Excel-Datei auswählen"
    .AllowMultiSelect = False

    .InitialFileName = CurrentProject.Path & "\import\"

    If .Show = True Then

        strDatei = .SelectedItems(1)
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "Tbl_Teilnehmer", strDatei, True
   
    End If

End With
Me.Refresh

End Sub


Bin für jede Hilfe dankbar.

Gruß
Lukas

MzKlMu

#1
Hallo,
mit einer Aktualisierungsabfrage kannst Du die leeren Fremdschlüsselfelder "EventID" mit der im Formular angezeigten EventID füllen.
Wird die EventID im Formular angezeigt ?

Wie ist denn die Access Tabelle "Tbl_Teilnehmer" aufgebaut ?
In dieser Tabelle müssten doch eigentlich mehrere Veranstaltungen erfasst sein, die sich durch die EventID  unterscheiden.

Wenn das so ist, kannst Du aber auch statt zu importieren die Exceltabelle nur verlinken und dann mit einer Anfügeabfrage die Daten nach Access übertragen. In der Anfügeabfrage kann dann auch die EventID mit geschrieben werden.

Kannst Du mal ein Bild des Beziehungsfensters hier zeigen ?
Gruß Klaus

Luggasch

ja, die EvendID wird im Formular angezeigt.
Das besagte Formular ist sozusagen die Standardansicht EventID und EventName werden angezeigt, mehrere weitere sachen noch und ein UFo welches die Teilnehmer anzeigt, sofern sie halt durch den Importknopf aus Excel mit dem entsprechenden Event verknüpft werden.

Tbl Teilnehmer ist aufgebaut wie gleich im Bild der Beziehungen.
Also nichts besonderes. Personalnummer, Name, Vorname usw.

und verlinken würde ausfallen, da ich für jedes neue Event, eine neue Excel Tabelle zugeschickt bekomme. Demnach müsste ich immer für das neue Event die neuen Teilnehmer aus der Excel "importieren", aber halt nur für das aktuell geöffnete Event (Events.EventID)

Sie dürfen in diesem Board keine Dateianhänge sehen.

Danke schon mal

MzKlMu

Hallo,
die importierte Tabelle heßt ja wie die Access Tabelle "Tbl_Teilnehmer", das heißt die Access Tabelle wird überschrieben. Und das darf ja nicht sein. In dieser Tabelle sind ja auch die Teilnehmer vergangener Veranstaltungen.
Meiner Meinung nach, ist nur das Verlinken sinnvoll. Und mit einer Anfügeabfrage werden die Daten übertragen. In der AA wird dann auch die EvID geschrieben. Die Anfügeabfrage startet man mit einem Button aus dem Hafo.

PS:
Warum ist zwischen Personen und Teilnehmer keine referentielle Integrität eingestellt?
Gruß Klaus

Luggasch

ein weiteres Mal danke. Die Anfügeabfrage habe ich tatsächlich vorher noch nicht gekannt.
Das scheint auch soweit mal zu funktionieren. Aber jetzt kriege ich es nicht hin, dass aus dem HFo die EvID mit eingefügt wird.

Sorry, bin in Access zwar bisschen bewandert, aber doch überwiegend ein Laie.
Steuer ich das dann mit DoCmd.OpenQuery ? und wie muss ich dann noch Me!EvID einfügen?

Danke dir.


Beaker s.a.

Hallo,
Zitatdass aus dem HFo die EvID mit eingefügt wird.
Indem du das Feld mit in die Feldliste beim INSERT INTO aufnimmst,
und als Wert das Formularfeld.
(Luftcode)
INSERT INTO tblTeilnehmer (EvID_F, weitere, Felder)
SELECT Forms!frmEvents!EvID, Felder, AusDerQuelle
FROM Quelle
Quelle = dein verknüpftes Excel-Sheet
! Die Anzahl und die Feldreihenfolge muss in beiden Feldlisten
die gleiche sein !

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MzKlMu

Hallo,
wie startest Du die Anfügeabfrage ?
Und wie sieht die Anfügeabfrage aus (SQL Text) ?
Gruß Klaus

Luggasch

Hallo an beide,

mit dem Insert Into hatte ich versucht, aber nicht funktioniert. Allerdings ist mir dann ein Fehler meinerseits aufgefallen und tada - alles läuft zu meiner vollsten Zufriedenheit.

Derzeit habe ich noch mehrere Buttons die je unterschiedliche Aktionen ausführen. Diese muss ich nur noch zusammenfügen, aber das mache ich heute wohl nicht mehr. Ich hoffe das mit dem zusammenfügen klappt und läuft danach auch noch :D

Aber bis dahin, danke ich euch vielmals für eure Hilfe =)

Gruß
Lukas