ACCESS VBA: Brauche hilfe bei komplexerer INSERT INTO Abfrage

Stoodle

Grünschnabel
Hallo zusammen!

Es wird immer später und ich komm einfach nicht auf die Lösung meines Abfrage Problems.Ich hab eine Tabelle in der zig hundert Einträge existieren. Jeder Eintrag hat ein bestimmtes Datum, einen Namen und eine Klassifizierung nach "Intern" oder "Extern".

so z.B.

Code:
Tabelle1:

Name     |   Vorgang Datum     |      InternExtern
------------------------------------------------------
test1    |     12.4.2006       |         intern
test2    |     15.4.2006       |         intern
test3    |     17.4.2006       |         extern
test4    |     23.4.2006       |         intern


Meine Abfrage soll nun in eine neue Tabelle schreiben, wieviele "Intern"s und "Extern"s es in welchem Monat, welchen jahres gibt.

Dazu habe ich mal klein angefangen und lasse erst mal alle "Intern"s zählen und in meine Tabelle2 schreiben

Code:
INSERT INTO Tabelle2 
SELECT Month([Vorgang Datum])   AS    Monat, 
       Year( [Vorgang Datum] )  AS    Jahr, 
       COUNT([Name])            AS    [Anzahl Interns] 
FROM Tabelle1 
WHERE [InternExtern]='intern' 
GROUP BY Month([Vorgang AnlegeDatum]), Year([Vorgang AnlegeDatum]) 
ORDER BY Year([Vorgang AnlegeDatum])

Klappt einwandfrei:
Code:
Tabelle1:

Jahr     |   Monat     |      Anzahl Interns      |      Anzahl Externs
------------------------------------------------------
2006     |     4       |         3


Leider raff ich jetzt nur nicht, wie ich noch simultan, oder nachträglich alle "Extern"s zählen lassen kann und in die Spalte 4 passend zu den jeweiligen "intern"s sortieren.


Es ist wahrscheinlich total simpel, aber ich komm einfach net weiter.

Bitte helft mir weiter!
Viele Grüße, stoodle!
 
Also simultan wüsste ich auf anhieb jetzt nicht, aber nachträglich geht in etwa so:
Code:
UPDATE
  tabelle2
SET [Anzahl Externs] =
(
  SELECT count([Name])
  FROM tabelle1
  WHERE
  Month([Vorgang Datum]) = tabelle2.Monat
  AND Year([Vorgang Datum])=tabelle2.Jahr
)
Gruß
Markus
 
Danke für deine fixe Antwort! Leider kommt folgender Laufzeitfehler:

"laufzeitfehler '3073':
Operation muss eine aktualisierbare Abfrage verwenden."

Bin kein Accessprofi und kann damit garnix anfangen.... :-/
 
Mit Access hab ich leider auch so gut wie keine Erfahrungen und weiß jetzt nicht was der Fehler bedeutet, Google gibt dazu aber verschiedene Lösungsansätze raus, vielleicht geht einer davon.
 
Hallo,... also ich hab versucht was passendes zu finden. klappt leider nicht.

Habe jetzt auch schon versucht die sache über einen zwischenschritt zuerst in einer 3. Tabelle zu speichern... es tritt der selbe Fehler auf...

Komm an dem Punkt einfach nicht mehr weiter... das kann doch vom Prinzip her nicht so schwierig sein :-(
 
Habe fast keine Ahnung, deswegen kann es sein, dass meine Meldung zu übersehen ist.

Vielleicht ein kleiner Denkanstoß: Wenn es nur intern oder extern gibt, dann kannst ja einfach die Anzahl der gesamten Einträge - intern = extern.

Wie gesagt, falls das irgendwie nicht gehen sollte, dann tuts mir leid, aber manchmal ist man so tief in einem Problem, dass man die leichten Möglichkeiten nicht sieht.
 
hm,.. :) leider fällt diese Variante flach... ich hab vergessen anzugeben, dass manche felder auch garnicht gefüllt sein können... aber danke für dein engagement!
 
OK, hab die Lösung gefunden

Code:
SELECT   Year([T].[Vorgang Datum]) AS Jahr, 
         Month([T].[Vorgang Datum]) AS Monat, 
         Abs(Sum([T].[InternExtern] = "intern")) AS [Anzahl Interns], 
         Abs(Sum([T].[InternExtern] = "extern")) AS [Anzahl Externs] 
FROM     Tabelle1 AS T 
GROUP BY Year([T].[Vorgang Datum]), 
         Month([T].[Vorgang Datum]);
 

Neue Beiträge

Zurück