Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: ToBu am November 10, 2023, 16:26:51

Titel: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: ToBu am November 10, 2023, 16:26:51
Hallo Klaus,
ich bin's wieder mit der verlinkten Excel Tabelle.
Das funktioniert alles wunderbar! Nun habe ich das Problem, dass aus externer Tab Daten in Access bereits vorhanden sind und nicht wieder angefügt werden sollen, sondern vor dem Anfügen geprüft werden soll, ob Daten bereits vorhanden sind, dann ersetzen, ansonsten anfügen. Ich glaube, das ist ein Fall für eine Ereignisprozedur, die ich nicht programmieren kann.
Meine Vorstellung ist:
tab_Stamm_Hersteller: (Tab)
Abfrage aus Tab und verlinkter Excel Tabelle mit jeweils Feld "Firmierung".
Wenn DS vorhanden dann ersetzen; wenn nicht dann anfügen mit entsprechendem Hinweis, dass ersetzt bzw. angefügt wird.
Ich habe kein Makro gefunden, dass Warnmeldungen/Hinweise ein-/ausschaltet. In älteren Access Versionen gab es diese. Meldungen nerven beim Anfügen!
Das sollte auch in der Ereignisprozedur an bzw. aus gestellt werden können.
Würdest du mir bitte wieder helfen, wie die VBA Schreibweise lautet?
Herzlichen Dank!
Gruß ToBu

Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: MzKlMu am November 10, 2023, 17:06:53
Hallo,
es ist sinnvoll das in 2 Schritten zu tun. Verwende daher 2 Abfragen, eine zum Anfügen neuer Datensätze und eine Aktualisierungsabfrage zum aktualisieren der bestehenden Datensätze.
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: ebs17 am November 10, 2023, 18:56:07
Zitatwie die VBA Schreibweise lautet?
Zuallererst würden solche Datenaktionen Abfrageaktionen (SQL) sein.
Grundlagen - SQL ist leicht (4) - Aktualisierung einer Tabelle (https://www.ms-office-forum.net/forum/showthread.php?t=304156)
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: ToBu am November 12, 2023, 13:11:24
Hallo Klaus, hallo Eberhard, vielen Dank für eure Beiträge. Da ich in VBA nicht fit bin, traue ich mich nicht an Eberhards Ereignisprozedur heran. Ich verstehe einfach nicht die Syntax! Ich habe mich entschieden, eine Löschabfrage zu erstellen, in der ich einen übereinstimmenden DS aus Tab lösche und anschließend die funktionierende Anfügeabfrage starte. Das ist ja so etwas wie eine Aktualisierungsabfrage in 2 Schritten. Zunächst hatte ich aber Schwierigkeiten damit, weil immer wieder der Hinweis kam, ich sollte di e Tabelle bestimmen, aus der der DS gelöscht werden soll, obwohl ja im Entwurf die Tab eingetragen war. Ich änderte daraufhin versuchsweise im Entwurf folgende Eigenschaftsparameter:
Eindeutige Datensätze: von nein auf ja
bei Fehler abbrechen: von nein auf ja
Jetzt funktioniert die Löschabfrage, die bei neuem DS meldet: "0 Datensätze gelöscht!", was ja auch richtig ist. Anschließend erfolgt die Anfügeabfrage, wie auch bei vorhandenem DS, der dann zuvor gefunden und gelöscht wird.
Leider habe ich noch keinen funktionierenden Code gefunden, der die verschiedenen Warnhinwiese unterdrückt! Könnt ihr mir da bitte auch weiterhelfen?
Vielen Dank für eure kompetenten Ausführungen!
Gruß ToBu
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: MzKlMu am November 12, 2023, 14:06:35
Hallo,
Zitatder die verschiedenen Warnhinwiese unterdrückt! Könnt ihr mir da bitte auch weiterhelfen?
Dazu müsste man wissen, wie die Abfragen gestartet/ausgeführt werden, per VBA ?
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: ToBu am November 12, 2023, 14:29:33
Hallo Klaus, nein, nicht per VBA! Also 3 Anfüge- und 1 Löschabfragen.
Gruß ToBu
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: ToBu am November 12, 2023, 14:32:07
PS: das ganze per Klick über verschiedene Makros.
Gruß ToBu
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: MzKlMu am November 12, 2023, 15:40:43
Hallo,
mit Makros kann ich nicht helfen.
Zeige mal Screenshots der Makros, da kann man VBA draus machen.
Dann kriegst du auch die Meldungen weg.
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: ToBu am November 12, 2023, 16:36:23
den Sreenshot habe ich hingekriegt, wie aber hier in die Antwort?
Gruß ToBu
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: ToBu am November 12, 2023, 16:44:23
Vielleicht hilft ja folgender Code für die Anfügeabfrage, die per Makro geöffnet wird:
INSERT INTO tabStamm_Hersteller
SELECT AuswahlFirmenstammdaten.*
FROM AuswahlFirmenstammdaten;
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: MzKlMu am November 12, 2023, 17:14:42
Hallo,
ich muss das Makro sehen.

Zitataber hier in die Antwort?
Auf Antwort klicken und nach unten scrollen. Dann erscheint der Button:

Attachments and other options
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: ToBu am November 12, 2023, 17:28:29
Screenshot (1).png
ich bin einfach nicht in der Lage, die einfachsten Dinge hinzukriegen! Entschuldige mein Unvermögen!
Gruß ToBu
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: MzKlMu am November 12, 2023, 19:21:37
Hallo,
als VBA Code nur zum Anfügen:

CurrentDb.Execute "LöschAbfrage", DbFailOnError
CurrentDb.Execute "AnfügeAbfrage", DbFailOnError
Für die Namen der Abfragen die entsprechenden NAmen einsetzen.
Zum letzten Datensatz zu springen ist überflüssig, neue Datensätze werden immer hinten angehängt völlig egal was das Formular zeigt. Mit diesem Code gibt es keine Warnmeldungen mehr.

Für einen Button "Beim Klicken".
Zum Rest der Makros kann ich nichts sagen, ich verwende keine Makros und habe mich auch nicht damit beschäftigt. Du wirst auch zu Makros eher keine Hilfe bekommen, denn die werden so gut wie von niemand verwendet.
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: ToBu am November 13, 2023, 13:49:30
Hallo Klaus,
ich habe das Makro "Beim Klicken" gelöscht und ersetzt durch folgende Ereignisprozedur wie empfohlen:
Private Sub Datenübertrag_Click()
CurrentDb.Execute "abfLöschenDS", dbFailOnError
CurrentDb.Execute "abf_Anfügen_neue_Hersteller_an_tab_Stamm_Hersteller", dbFailOnError
CurrentDb.Execute "abf_AnfügenBereich_Marktsegmente", dbFailOnError
CurrentDb.Execute "abr_AnfügenBereich_Technologien", dbFailOnError
CurrentDb.Execute "mak_LetzterDatensatzEingabe", dbFailOnError
End Sub
Die Löschabfrage wurde ausgeführt, danach aber die Prozedur abgebrochen, weil irgendein Parameter fehlt.
Was habe ich falsch gemacht?
Gruß ToBu
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: ToBu am November 13, 2023, 13:53:20
PS: könnte man die 4 Abfragenamen auch in 1 Anweisung durch Kommata getrennt ausführen?
Gruß ToBu
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: MzKlMu am November 13, 2023, 16:37:19
Hallo,
Zitatweil irgendein Parameter fehlt.
Glaubst Du, dass das hilfreich sein könnte ?
Du musst schon genau beschreiben was die Meldung ausgibt und bei welcher Abfrage.
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: ToBu am November 13, 2023, 18:19:35
Ich verstehe zu wenig, um das beurteilen zu können! Die Meldung lautet:
Laufzeitfehler '3061': 1 Parameter wurden erwartet, aber es zu wurden wenig Parameter übergeben.
Ich vermute, der fehlende Parameter ist der neue Autowert von IDNr aus Tab, der zusammen mit den 1:n Werten der anzufügenden Nrn für Marksegmente und Technologien aus den entsprechenden Bereichen der verlinkten Excel Tabelle zur Verfügung stehen muss.
Ist nicht auch eine wenn/dann Prozedur erforderlich, die prüft, ob in Tab die Firma schon existiert? Wenn das zutrifft, soll/kann der Stammsatz aus Tab gelöscht werden. Danach muss ein neuer Autowert für IDNr aus Tab zur Verfügung stehen und dieser mit den jeweiligen n-Nrn aus Bereichen AuswahlMarksegmente bzw. AuswahlTechnologien angefügt werden.
Gruß ToBu
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: ToBu am November 13, 2023, 18:30:50
Hier noch die Kopie beim Debuggen:

Private Sub Datenübertrag_Click()
CurrentDb.Execute "abfLöschenDS", dbFailOnError

CurrentDb.Execute "abf_Anfügen_neue_Hersteller_an_tab_Stamm_Hersteller", dbFailOnError

CurrentDb.Execute "abf_AnfügenBereich_Marktsegmente", dbFailOnError <<<< die Zeile ist gelb markiert
CurrentDb.Execute "abr_AnfügenBereich_Technologien", dbFailOnError

End Sub
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: ToBu am November 14, 2023, 18:00:29
Hallo Klaus,
könntest du mir bitte noch weiterhelfen?
Ich habe keine Ahnung, wie die o.a. Ereignisprozedur reibungslos funktionieren könnte.
Es wäre sehr nett von dir, zu kommunizieren!
Gruß ToBu
Titel: Re: Entscheidung angefügte Excel Tab DS anzufügen/zu ersetzen
Beitrag von: ToBu am November 21, 2023, 18:04:49
Es ist geschafft! Mein Problem mit der fehlenden IDNr bei der Anfügeabfrage habe ich umgangen, indem ich daraus eine Tabellenerstellungsabfrage gemacht habe in eine temporäre Tabelle Zwischenspeicherung. Diese abgefragt als Anfügetabelle wird korrekt ausgeführt - ohne Warnhinweise!!! Danke an Klaus und Eberhard für die nützlichen Hinweise!
Beste Grüße
ToBu