Hallo Zusammen,
ich habe Excel mit Access verknüpft und lasse über eine Abfrage den Inhalt (Datum) von diversen Spalten (Fixierung 1 bis Fixierung 10) überprüfen. Wird im Excel in diesen Spalten nach Bedarf ein Datum gesetzt, aktualisiert sich das Datum in der Spalte Fixierung 0 auf das zuletzt eingetragene Datum in diesem Datensatz. In meiner Abfrage behelfe ich mir über eine Hilfsspalte. Und zwar so: In der Abfrage ist erstens eine WENN Funktion die dann in eine Hilfespalte als Ergebnis einen Wert von 1 bis 10 ausgibt und zweitens eine WENN Funktion die dann das zuletzt eingetragene Datum in die Spalte Fixierung 0 übernimmt. Das Ganze funktioniert wie eine Historisierung. Mit meiner Lösung benötige ich aber immer zwei Aktualisierungsrunden in Folge, damit die Historisierung richtig funktioniert. Welche Lösung wäre möglich ohne zwei Aktualisierungsschleifen drehen zu müssen?
Vielen Dank
Tom
Hallo Tom,
ZitatIn meiner Abfrage ...
Warum zeigst du die nicht? (SQL-String)
gruss ekkehard
Bitte...aber ist nicht gerade wenig ;-)
SELECT Tab_Komplettabfrage.BAND_TMF AS [Band], Tab_Komplettabfrage.FZNR, Tab_Komplettabfrage.KUZEI1 AS Kundenname, Right([ANG_ID],5) AS [Lub Nr], Tab_Komplettabfrage.WERKLIEF_GFZ_FIRST, Tab_Komplettabfrage.WERKLIEF_GFZ, Tab_Komplettabfrage.ABSOLL, Tab_Komplettabfrage.ABIST, Tab_Komplettabfrage.LFTGIST_GFZ, Tab_Komplettabfrage.FFT, Tab_Komplettabfrage.FFT_KZ, Tab_Komplettabfrage.LIEFFAEH_PLAN, IIf([Tab_Komplettabfrage].[LIEFFAEH_IST] Is Null,Null,CDate(Left([Tab_Komplettabfrage].[LIEFFAEH_IST],10))) AS LIEFFAEH_IST, Tab_Komplettabfrage.LIEFZUS_GFZ, Tab_Komplettabfrage.LTERMPOE AS Pönale, "" AS Platzhalter1, "" AS Platzhalter_Prio, IIf([Tab_Komplettabfrage]![Werklief_Gfz_First] Is Null,Null,CalcDays([Tab_Komplettabfrage]![Werklief_Gfz_First],Date())) AS [# AT bis Werklief_Gfz_First], IIf([Termin Basis KA Planung] Is Not Null And [Termin Basis KA Planung]<[FFT] And [Antwort_fruehere_zul] Is Null,"Anfrg. Fruehere Zul.",IIf([# AT bis Werklief_Gfz_First] Is Not Null And ([# AT bis Werklief_Gfz_First]>=-10 Or calcDays([Liefzus_GFZ],Date())>=-7) And [Termin Basis KA Planung] Is Null And [Liefzus_GFZ] Is Not Null And [Zieltermin] Is Null,"Überprüfung",IIf([Termine_Ueberpruefen]="Überprüfung","Überprüfung",IIf([# AT bis Werklief_Gfz_First] Is Not Null And ([# AT bis Werklief_Gfz_First]>=-14 Or calcdays([Liefzus_GFZ],Date())>=-11),"J","N")))) AS [Terminvergabe Leitstand erforderlich], Tab_Komplettabfrage.Antwort_Fruehere_Zul, Tab_Komplettabfrage.Früh_Termverg_Leitstand, "" AS Platzhalter2, Tab_Komplettabfrage.KUNDENABNAHME AS [KA KZ], Tab_Komplettabfrage.Abnahme_Von AS KA_Von, Tab_Komplettabfrage.Spt_FAAB_Wunsch, "" AS [Platzhalter_L-Aend-SMOKA], IIf([Abnahme_von] Is Null,Null,fctermin([Abnahme_von],[Vorlaufzeit]*-1)) AS [LFTG LAST], "" AS Platzhalter3, IIf([Datumvergabe_Frisch] Is Not Null,[Datumvergabe_Frisch],IIf([Nr_Hilfe]=10,[10_Datumvergabe],IIf([Nr_Hilfe]=9,[9_Datumvergabe],IIf([Nr_Hilfe]=8,[8_Datumvergabe],IIf([Nr_Hilfe]=7,[7_Datumvergabe],IIf([Nr_Hilfe]=6,[6_Datumvergabe],IIf([Nr_Hilfe]=5,[5_Datumvergabe],IIf([Nr_Hilfe]=4,[4_Datumvergabe],IIf([Nr_Hilfe]=3,[3_Datumvergabe],IIf([Nr_Hilfe]=2,[2_Datumvergabe],IIf([Nr_Hilfe]=1,[1_Datumvergabe],Null))))))))))) AS Datumvergabe, IIf([Nr_Hilfe]=10,[10_LZ],IIf([Nr_Hilfe]=9,[9_LZ],IIf([Nr_Hilfe]=8,[8_LZ],IIf([Nr_Hilfe]=7,[7_LZ],IIf([Nr_Hilfe]=6,[6_LZ],IIf([Nr_Hilfe]=5,[5_LZ],IIf([Nr_Hilfe]=4,[4_LZ],IIf([Nr_Hilfe]=3,[3_LZ],IIf([Nr_Hilfe]=2,[2_LZ],IIf([Nr_Hilfe]=1,[1_LZ],Null)))))))))) AS LZ, IIf([Nr_Hilfe]=10,[10_Termin Basis KA Planung],IIf([Nr_Hilfe]=9,[9_Termin Basis KA Planung],IIf([Nr_Hilfe]=8,[8_Termin Basis KA Planung],IIf([Nr_Hilfe]=7,[7_Termin Basis KA Planung],IIf([Nr_Hilfe]=6,[6_Termin Basis KA Planung],IIf([Nr_Hilfe]=5,[5_Termin Basis KA Planung],IIf([Nr_Hilfe]=4,[4_Termin Basis KA Planung],IIf([Nr_Hilfe]=3,[3_Termin Basis KA Planung],IIf([Nr_Hilfe]=2,[2_Termin Basis KA Planung],IIf([Nr_Hilfe]=1,[1_Termin Basis KA Planung],Null)))))))))) AS [Termin Basis KA Planung], IIf([Nr_Hilfe]=10,[10_Zieltermin],IIf([Nr_Hilfe]=9,[9_Zieltermin],IIf([Nr_Hilfe]=8,[8_Zieltermin],IIf([Nr_Hilfe]=7,[7_Zieltermin],IIf([Nr_Hilfe]=6,[6_Zieltermin],IIf([Nr_Hilfe]=5,[5_Zieltermin],IIf([Nr_Hilfe]=4,[4_Zieltermin],IIf([Nr_Hilfe]=3,[3_Zieltermin],IIf([Nr_Hilfe]=2,[2_Zieltermin],IIf([Nr_Hilfe]=1,[1_Zieltermin],Null)))))))))) AS Zieltermin, IIf([10_LZ] Is Not Null Or [10_Zieltermin] Is Not Null,10,IIf([9_LZ] Is Not Null Or [9_Zieltermin] Is Not Null,9,IIf([8_LZ] Is Not Null Or [8_Zieltermin] Is Not Null,8,IIf([7_LZ] Is Not Null Or [7_Zieltermin] Is Not Null,7,IIf([6_LZ] Is Not Null Or [6_Zieltermin] Is Not Null,6,IIf([5_LZ] Is Not Null Or [5_Zieltermin] Is Not Null,5,IIf([4_LZ] Is Not Null Or [4_Zieltermin] Is Not Null,4,IIf([3_LZ] Is Not Null Or [3_Zieltermin] Is Not Null,3,IIf([2_LZ] Is Not Null Or [2_Zieltermin] Is Not Null,2,IIf([1_LZ] Is Not Null Or [1_Zieltermin] Is Not Null,1,Null)))))))))) AS Nr_Hilfe, "" AS Platzhalter4, IIf([Nr_Hilfe]=1 And [Tab_Komplettabfrage].[1_Datumvergabe] Is Null,[Heute],[Tab_Komplettabfrage].[1_Datumvergabe]) AS 1_Datumvergabe, Tab_Komplettabfrage.[1_LZ], Tab_Komplettabfrage.[1_Termin Basis KA Planung], Tab_Komplettabfrage.[1_Zieltermin], "" AS Platzhalter5, IIf([Nr_Hilfe]=2 And [Tab_Komplettabfrage].[2_Datumvergabe] Is Null,[Heute],[Tab_Komplettabfrage].[2_Datumvergabe]) AS 2_Datumvergabe, Tab_Komplettabfrage.[2_LZ], Tab_Komplettabfrage.[2_Termin Basis KA Planung], Tab_Komplettabfrage.[2_Zieltermin], "" AS Platzhalter6, IIf([Nr_Hilfe]=3 And [Tab_Komplettabfrage].[3_Datumvergabe] Is Null,[Heute],[Tab_Komplettabfrage].[3_Datumvergabe]) AS 3_Datumvergabe, Tab_Komplettabfrage.[3_LZ], Tab_Komplettabfrage.[3_Termin Basis KA Planung], Tab_Komplettabfrage.[3_Zieltermin], "" AS PH7, IIf([Nr_Hilfe]=4 And [Tab_Komplettabfrage].[4_Datumvergabe] Is Null,[Heute],[Tab_Komplettabfrage].[4_Datumvergabe]) AS 4_Datumvergabe, Tab_Komplettabfrage.[4_LZ], Tab_Komplettabfrage.[4_Termin Basis KA Planung], Tab_Komplettabfrage.[4_Zieltermin], "" AS PH8, IIf([Nr_Hilfe]=5 And [Tab_Komplettabfrage].[5_Datumvergabe] Is Null,[Heute],[Tab_Komplettabfrage].[5_Datumvergabe]) AS 5_Datumvergabe, Tab_Komplettabfrage.[5_LZ], Tab_Komplettabfrage.[5_Termin Basis KA Planung], Tab_Komplettabfrage.[5_Zieltermin], "" AS PH9, IIf([Nr_Hilfe]=6 And [Tab_Komplettabfrage].[6_Datumvergabe] Is Null,[Heute],[Tab_Komplettabfrage].[6_Datumvergabe]) AS 6_Datumvergabe, Tab_Komplettabfrage.[6_LZ], Tab_Komplettabfrage.[6_Termin Basis KA Planung], Tab_Komplettabfrage.[6_Zieltermin], "" AS PH10, IIf([Nr_Hilfe]=7 And [Tab_Komplettabfrage].[7_Datumvergabe] Is Null,[Heute],[Tab_Komplettabfrage].[7_Datumvergabe]) AS 7_Datumvergabe, Tab_Komplettabfrage.[7_LZ], Tab_Komplettabfrage.[7_Termin Basis KA Planung], Tab_Komplettabfrage.[7_Zieltermin], "" AS PH11, IIf([Nr_Hilfe]=8 And [Tab_Komplettabfrage].[8_Datumvergabe] Is Null,[Heute],[Tab_Komplettabfrage].[8_Datumvergabe]) AS 8_Datumvergabe, Tab_Komplettabfrage.[8_LZ], Tab_Komplettabfrage.[8_Termin Basis KA Planung], Tab_Komplettabfrage.[8_Zieltermin], "" AS PH12, IIf([Nr_Hilfe]=9 And [Tab_Komplettabfrage].[9_Datumvergabe] Is Null,[Heute],[Tab_Komplettabfrage].[9_Datumvergabe]) AS 9_Datumvergabe, Tab_Komplettabfrage.[9_LZ], Tab_Komplettabfrage.[9_Termin Basis KA Planung], Tab_Komplettabfrage.[9_Zieltermin], "" AS PH13, IIf([Nr_Hilfe]=10 And [Tab_Komplettabfrage].[10_Datumvergabe] Is Null,[Heute],[Tab_Komplettabfrage].[10_Datumvergabe]) AS 10_Datumvergabe, Tab_Komplettabfrage.[10_LZ], Tab_Komplettabfrage.[10_Termin Basis KA Planung], Tab_Komplettabfrage.[10_Zieltermin], "" AS PH14, Tab_Komplettabfrage.[Bemerkungsfeld Leitstand], Tab_Komplettabfrage.[Bemerkungsfeld SMOPC] AS [Bemerkungsfeld Vertrieb], Tab_Komplettabfrage.AENR, Tab_Komplettabfrage.ABPLAN, Tab_Komplettabfrage.[Fertigstellungsplan inkl Nacharbeit nach KA], IIf([Datumvergabe_Frisch] Is Not Null,[Datumvergabe_Frisch],IIf([Nr_Hilfe_2]=3,[Fertigstellungsplan_inkl_Nacharbeit_nach_KA_(letzte Änderung) 3],IIf([Nr_Hilfe_2]=2,[Fertigstellungsplan_inkl_Nacharbeit_nach_KA_(letzte Änderung) 2],IIf([Nr_Hilfe_2]=1,[Fertigstellungsplan_inkl_Nacharbeit_nach_KA_(letzte Änderung) 1],Null)))) AS [Fertigstellungsplan inkl Nacharbeit nach KA (letzte Änderung)], Tab_Komplettabfrage.[Deadline Anlieferung 1 Zielort im Bezug Absatz], Tab_Komplettabfrage.[Deadline Lieferfertig Werk im Bezug Absatz], Tab_Komplettabfrage.[Geplanter Absatzmonat], Tab_Komplettabfrage.Verkehrsstart, Tab_Komplettabfrage.[Deadline Anlieferung 1 Zielort im Bezug Pönale], Tab_Komplettabfrage.[Deadline Lieferfertig Werk im Bezug Pönale], IIf([Nr_Hilfe]=10 And [10_Datumvergabe] Is Null,[heute],IIf([Nr_Hilfe]=9 And [9_Datumvergabe] Is Null,[heute],IIf([Nr_Hilfe]=8 And [8_Datumvergabe] Is Null,Date()-1,IIf([Nr_Hilfe]=7 And [7_Datumvergabe] Is Null,[heute],IIf([Nr_Hilfe]=6 And [6_Datumvergabe] Is Null,[heute],IIf([Nr_Hilfe]=5 And [5_Datumvergabe] Is Null,[heute],IIf([Nr_Hilfe]=4 And [4_Datumvergabe] Is Null,[heute],IIf([Nr_Hilfe]=3 And [3_Datumvergabe] Is Null,[heute],IIf([Nr_Hilfe]=2 And [2_Datumvergabe] Is Null,[heute],IIf([Nr_Hilfe]=1 And [1_Datumvergabe] Is Null,[heute],Null)))))))))) AS Datumvergabe_Frisch, Date()-1 AS Heute, IIf([Zieltermin] Is Not Null And Date()>[Zieltermin],"Überprüfung",IIf([Liefzus_GFZ] Is Not Null And [Termin Basis KA Planung] Is Not Null And ([Liefzus_GFZ]>[Termin Basis KA Planung] Or [Termin Basis KA Planung]<Date()),"Überprüfung",IIf([Liefzus_GFZ] Is Not Null And [LFTG last] Is Not Null And ([Liefzus_GFZ]>[LFTG last] Or [LFTG last]<Date()),"Überprüfung",Null))) AS Termine_Ueberpruefen, IIf([# AT bis Werklief_Gfz_First] Is Not Null And ([# AT bis Werklief_Gfz_First]>=-10 Or calcDays([Liefzus_GFZ],Date())>=-7) And [Termin Basis KA Planung] Is Null And [Liefzus_GFZ] Is Not Null And [Zieltermin] Is Null,"Überprüfung",IIf([Termine_Ueberpruefen]="Überprüfung","Überprüfung",IIf([# AT bis Werklief_Gfz_First] Is Not Null And ([# AT bis Werklief_Gfz_First]>=-14 Or calcdays([Liefzus_GFZ],Date())>=-11),"J","N"))) AS [Terminvergabe Leitstand erforderlich_A], Tab_Komplettabfrage.PLAN_REGION_FIRST, Tab_Komplettabfrage.INCOSCHL, Tab_Komplettabfrage.ABGERF, Tab_Komplettabfrage.PW_VER_FIRST_DAT, Tab_Komplettabfrage.MODI_KZ, VN_Region_Land.Region_2018, VN_Region_Land.Land_Echt_GER, Tab_Komplettabfrage.[Critical from Sales perspective], Tab_Komplettabfrage.[Critical from Production perspective], Tab_Komplettabfrage.Sperrung, Tab_Komplettabfrage.NAME1 AS Debitor, Tab_Komplettabfrage.VTG, Tab_Komplettabfrage.[Potential_for_2019?], Tab_Komplettabfrage.[Is_a_customer_acceptance_desired?], Tab_Komplettabfrage.[Latest_finishing_date_werk_(before_customer_acceptance_&_rework)], Tab_Komplettabfrage.[Penalty_amount_per_bus_per_day(€)], Tab_Komplettabfrage.Bemerkungsfeld_Abstimmungstermin, Tab_Komplettabfrage.Stock_vehicle, Tab_Komplettabfrage.[Subsidies_(Yes/No)], Tab_Komplettabfrage.Prio_by_that_meeting, Tab_Komplettabfrage.SCHIFF_TERM, Tab_Komplettabfrage.[Latest_finishing_date_werk_(incl_customer_acceptance_&_rework)], Tab_Komplettabfrage.[Penalty_(YES/NO)], Tab_Komplettabfrage.Start_Date_of_penalty, Tab_Komplettabfrage.Line_start, Tab_Komplettabfrage.Planned_sales_month, Tab_Komplettabfrage.Comment_sales, VN_Region_Land.Region_2019 AS Area, Tab_Komplettabfrage.Feedback_Sales, Tab_Komplettabfrage.[Fertigstellungsplan_inkl_Nacharbeit_nach_KA_(letzte Änderung) 1], Tab_Komplettabfrage.[Fertigstellungsplan_inkl_Nacharbeit_nach_KA_(letzte Änderung) 2], Tab_Komplettabfrage.[Fertigstellungsplan_inkl_Nacharbeit_nach_KA_(letzte Änderung) 3], Tab_Komplettabfrage.FIN_KZ, Tab_Komplettabfrage.Dispatch_plan, Tab_Komplettabfrage.Latest_arrival_DATE_on_the_destination_to_reach_sales_target_, Tab_Komplettabfrage.Latest_pick_up_DATE_, Tab_Komplettabfrage.Last_DATE_for_subsidies_, IIf([Fertigstellungsplan_inkl_Nacharbeit_nach_KA_(letzte Änderung) 3] Is Not Null,3,IIf([Fertigstellungsplan_inkl_Nacharbeit_nach_KA_(letzte Änderung) 2] Is Not Null,2,IIf([Fertigstellungsplan_inkl_Nacharbeit_nach_KA_(letzte Änderung) 1] Is Not Null,1,Null))) AS Nr_Hilfe_2, Tab_Komplettabfrage.MFPP6, Tab_Komplettabfrage.Dispatch_Ready, Tab_Komplettabfrage.Protokoll, Tab_Komplettabfrage.Abstimmung_Absatz_Situation, Tab_Komplettabfrage.Dispatch_plan_first, Tab_Komplettabfrage.Dispatch_plan_delay_1, Tab_Komplettabfrage.Dispatch_plan_delay_2, Tab_Komplettabfrage.Dispatch_plan_delay_3, Tab_Komplettabfrage.Dispatch_plan_delay_4, Tab_Komplettabfrage.Latest_customer_over_take INTO Tab_Terminplanungslisten_Komplett
FROM (Tab_Komplettabfrage LEFT JOIN [LFTGLAST_Zuordnung_Werk-KA_Ort] ON (Tab_Komplettabfrage.MONTORT = [LFTGLAST_Zuordnung_Werk-KA_Ort].Montort) AND (Tab_Komplettabfrage.ABNAHME_ORT = [LFTGLAST_Zuordnung_Werk-KA_Ort].KAORT)) LEFT JOIN VN_Region_Land ON Tab_Komplettabfrage.VN = VN_Region_Land.VN
WHERE (((Tab_Komplettabfrage.FZNR) Is Not Null) AND ((Tab_Komplettabfrage.WERKLIEF_GFZ_FIRST)<=Date()+93) AND ((Tab_Komplettabfrage.ABIST) Is Null)) OR (((Tab_Komplettabfrage.FZNR) Is Not Null) AND ((Tab_Komplettabfrage.WERKLIEF_GFZ_FIRST)>=#1/1/2017#) AND ((Tab_Komplettabfrage.ABIST) Is Not Null))
ORDER BY IIf([Tab_Komplettabfrage]![Werklief_Gfz_First] Is Null,Null,CalcDays([Tab_Komplettabfrage]![Werklief_Gfz_First],Date())) DESC;
Hallo,
darf ich fragen, wie du zu solch einem "Konzept" kommst?
Mir steht gerade mein letztes halbes Haar zu Berge.. ;)
Das Ganze ist völlig db-ungeeignet, falsch und indiskutabel.
Wenn es sich nicht gerade um eine reine (wenn auch völlig danebenliegende) Übung handelt, hat das Ganze keine Zukunft.
Erklär mal, welche Voraussetzungen an die DB gestellt sind und was das Ziel und der Verwendungszweck sein soll.
Hi,
vielen Dank für die Kritik...ich werde es aber lieber nicht an den Erfinder weitergeben ;-)
Also das Konstrukt sieht wie folgt aus:
Es sind vier Excel-Sheets vorhanden davon werden drei von Abteilung 1-3 beschrieben (Arbeitsvorrat). Das vierte Excel-Sheet ist die Zusammenfassung der Abteilungen 1-3 und wird durch die Abteilung 4 beschrieben.
Das Ganze wird täglich in die DB zurückgespielt und zusätzlich mit Daten aus einer Oracle DB gefüttert und berechnet. Die Komplettdaten Excel + Oracle werden dann wieder auf die Excel Sheets übertragen. Die Grundlage für die Excel-Listen kommen aus der Oracle DB. Es sind aktuell ca. 23 000 (steigend) Datensetze vorhanden. In den ersten drei Excel Sheets werden nur die Daten der jeweiligen Abteilung 1-3 übertragen. In der vierten der komplette Datensatz. Jede Abteilung möchte nur ihre Datensetze sehen und die Abteilung 4 alle.
Gruß Tom
ZitatWelche Lösung wäre möglich ohne zwei Aktualisierungsschleifen drehen zu müssen?
Ganz einfach. Wenn sich gemäß der Regeln der Normalisierung eine Information in einem Feld (Fixierung) befindet statt in 10 (oder 57), dann wird es übersichtlich.
Zitatnicht an den Erfinder weitergeben
Eine über 12.000 Zeichen lange SQL-Anweisung, die wohl an sich auch funktioniert - dafür kann sich der Entwickler auf die Schulter klopfen lassen. Bezogen auf den Inhalt darf er sich beerdigen lassen. Grottig. Felder en masse, Aufzählungsfelder en masse, IIF-Inflation, keine Tabellenaliase. Das Ganze noch als Tabellenerstellungsabfrage - Vervielfältigen macht Spaß.
Das Ding ist schmerzensgeldpflichtig. (Man verzeihe meine klaren Worte.)
Guten Morgen Zusammen,
also Lob und Kritik...aber eher hört sich es wie eine Katastrophe an!
Und was genau ist an der Datenbank so richtig daneben? Wo soll ich anfangen und wo aufhören? Wie geschrieben es sind über 23 000 Datensätze zu verarbeiten.
Grüße Tom
Hallo,
es
ist eine Katastrophe...
Zitatich werde es aber lieber nicht an den Erfinder weitergeben
Das solltest Du aber, damit er nicht nochmal solchen db-bezogenen Nonsens erfindet.. ;)
ZitatUnd was genau ist an der Datenbank so richtig daneben
hat Eberhard auf den Punkt gebracht.
Eine Datenbank besteht aus einer (Access-, nicht Excel-)Tabellenstruktur, die eine gegebene Datenmenge in einem normalisierten (siehe u. st. Links 1, 1a und 1b) Aufbau in Beziehung zueinander setzt und verwaltet. Neben der essentiellen(!) Normalisierung sind grundlegende Anforderungen zu berücksichtigen: Datentypen, Schlüsselfelder, über alle Tabellen eindeutige Benamsung, keine Sonder- und Leerzeichen in Namen, keine reservierten Wörter usw. .
Die DB muss eine bestimmte Aufgabe bearbeiten, soll heißen, für was die DB gut sein soll und was von ihr als Ergebnis erwartet wird.
Es ist immer noch unklar, welche Aufgabe die DB haben soll.
Anforderungen an den Entwickler sind mindestens Grundlagen in relationalen (Access-)Db-Systemen und SQL, weiterhin hier in diesem Fall in VBA-Programmierung.
Wobei wir beim Punkt wären: Statt dieses Monster-SQL-Statement wäre hier besser eine VBA-Prozedur angebracht , wenn man denn bei diesem Konzept unbedingt bleiben
will (
muss kann ich nicht sagen, es gibt immer bessere Lösungen), die eine Aktion durchführt.
SQL an sich ist nicht sonderlich auf prozedurale Aktionen ausgelegt, SQL ist für Massenverarbeitung von Daten gedacht.