none
Fehler 164, GROUP BY muss mindestens eine Spalte erhalten, die kein äußerer Verweis ist

    Frage

  • Hallo zusammen,

    ich müsste ein Unterformular über eine Abfrage automatisch füllen.
    Bei meinem jetzigen Versuch erhalte ich den Fehler "Fehler 164, GROUP BY muss mindestens eine Spalte erhalten, die kein äußerer Verweis ist".

    Die Abfrage sieht so aus:

    INSERT INTO [Statistik Details] ( Artikel_ID, [Summe von Menge], [Mittelwert von Preis2], Statistik_ID )
    SELECT [Rechnung Detail].Artikel_ID, Sum([Rechnung Detail].Menge) AS [Summe von Menge], Avg([Rechnung Detail].Preis2) AS [Mittelwert von Preis2], Formulare!Statistik![Statistik_ID] AS Ausdr1
    FROM Rechnung INNER JOIN (Einheit INNER JOIN (Artikel INNER JOIN [Rechnung Detail] ON Artikel.[Artikel_ID] = [Rechnung Detail].[Artikel_ID]) ON Einheit.[Einheit_ID] = Artikel.[Einheit_ID]) ON Rechnung.[Rechnung_ID] = [Rechnung Detail].[Rechnung_ID]
    WHERE (((Rechnung.Kunden_ID)=[Formulare]![Statistik]![Kunden_ID]) AND ((Rechnung.Datum)>=[Formulare]![Statistik]![Startdatum] And (Rechnung.Datum)<=[Formulare]![Statistik]![Enddatum]))
    GROUP BY [Rechnung Detail].Artikel_ID, Formulare!Statistik![Statistik_ID];

    Ich glaube, dass Problem wird durch Formulare!Statistik![Statistik_ID] verursacht.

    Bisher habe ich rum experimentiert, aber nicht wirklich eine Lösung gefunden außer die dem Unterlegte Tabelle über VBA zu füllen.
    Aber vielleicht kann jemand sagen, wo das Problem in der Abfrage ist?

    Viele Grüße
    Andre

    Dienstag, 9. April 2019 05:14

Alle Antworten

  • Ich würde den Formularbezug aus der Gruppierung raus nehmen.

    Hast du das schon versucht?


    Markus

    Dienstag, 9. April 2019 16:46
  • Ja, daher weiß ich ja, dass Formulare!Statistik![Statistik_ID] problematisch ist.
    Aber danach gibt es in der Tabelle keinen Bezug mehr zur Haupttabelle, da die ID fehlt.

    Es würde also den Fehler beheben, aber ein anderes Problem verursachen.

    Viele Grüße
    Andre

    Dienstag, 9. April 2019 19:36
  • Ich denke doch, dass das gehen sollte. Hast du probiert, Formulare![Statistik]![Statistik_ID] aus dem Group By herauszunehmen, aber im Select drin zu lassen? Du hast ja immer nur eine einzige Statistik_ID, also hat sie keinen Einfluss auf die Gruppierung.

    Matthias Kläy, Kläy Computing AG

    Montag, 15. April 2019 21:14
  • Hi Andre,
    im GROUP BY können nur Feldnamen aus dem vorangegangenen SELECT stehen.  Dein Statistik_ID kommt aus dem Formular. Für die INSERT-Anweisung benötigst Du den Wert aus dem Formular. Hast Du mal versucht, VALUES zu nutzen, darin SELECT mit GROUP BY zu klammern und  Statistik_ID in der VALUES-Auflistung hinzuzufügen?

    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    Dienstag, 16. April 2019 05:13
  • Hi Peter,

    jetzt nach Deinem Hinweis einmal versucht, ich kannte die Variante gar nicht, vielen Dank!

    Die Query sieht nun so aus, Access meldet aber, dass die Abfragewerte und Zielfelder nicht übereinstimmen:

    INSERT INTO [Statistik Details] ( Artikel_ID, Beschreibung, [Summe von Menge], Einheit, [Mittelwert von Preis2] ,Statistik_ID)
    VALUES (
    (SELECT

    [Rechnung Detail].Artikel_ID,
    Artikel.Beschreibung,
    Sum([Rechnung Detail].Menge) AS [Summe von Menge],
    Einheit.Einheit,
    Avg([Rechnung Detail].Preis2) AS [Mittelwert von Preis2]

    FROM Rechnung INNER JOIN (Einheit INNER JOIN (Artikel INNER JOIN [Rechnung Detail] ON Artikel.[Artikel_ID] = [Rechnung Detail].[Artikel_ID]) ON Einheit.[Einheit_ID] = Artikel.[Einheit_ID]) ON Rechnung.[Rechnung_ID] = [Rechnung Detail].[Rechnung_ID]
    WHERE (((Rechnung.Kunden_ID)=[Formulare]![Statistik]![Kunden_ID]) AND ((Rechnung.Datum)>=[Formulare]![Statistik]![Startdatum] And (Rechnung.Datum)<=[Formulare]![Statistik]![Enddatum]))
    GROUP BY [Rechnung Detail].Artikel_ID, Artikel.Beschreibung, Einheit.Einheit;),

    Formulare!Statistik![Statistik_ID])

    Dabei hat sich ja nichts geändert, 6 Felder sind es immer noch, 5 aus dem SELECT und ein Feld aus dem Formular.

    Oder gibt es einen Syntax Fehler?

    Viele Grüße,

    Andre

    Sonntag, 28. April 2019 16:10