![]() |
Datenbank: ACCESS • Version: 2008 • Zugriff über: ADO
Problem mit Group by in Access
Hallo,
ich mache eine SQL-Abfrage in einer Access-Datenbank und es funktioniert soweit. Die Ausgabe ist eine DBTabelle, in der ich alle Artikel anzeigen lasse, die auf diesem Lagerplatz liegen. Das funktioniert soweit. Ich möchte jedoch nur die Lagerplätze anzeigen lassen, jedoch gruppiert. Wenn mehrere Artikel auf einem Platz liegen, dann brauche ich nur einmal diesen Platzangezeigt. Mit GROUP BY in dieser Abfrage bekommen ich nur eine Fehlermeldung "Syntaxfehler, (fehlender Operator). Könnte ich Hilfe bitten?
Delphi-Quellcode:
Gruß, Luckner
Datamodule1.ADOQueryRollenJoinLagerplatzTabelle.Active := False; //DISTINCTROW
Datamodule1.ADOQueryRollenJoinLagerplatzTabelle.SQL.Clear; Datamodule1.ADOQueryRollenJoinLagerplatzTabelle.SQL.Add('SELECT Materialrollen.[Mat-Nr], Materialrollen.Rollennummer, Materialrollen.DatumAb, Rollenlager.Lagerplatz, Rollenlager.Rollennummer FROM Materialrollen '); Datamodule1.ADOQueryRollenJoinLagerplatzTabelle.SQL.Add('LEFT JOIN Rollenlager ON Rollenlager.Rollennummer = Materialrollen.Rollennummer '); Datamodule1.ADOQueryRollenJoinLagerplatzTabelle.SQL.Add('where ((Materialrollen.[Mat-Nr] = ' + EditMaterialeingangMatNr.Text + ') and (Materialrollen.DatumAb is NULL)) GROUP BY Rollenlager.Lagerplatz'); Datamodule1.ADOQueryRollenJoinLagerplatzTabelle.Open; GridMaterialeingangMaterial.Visible := true; |
AW: Problem mit Group by in Access
Bei einer Gruppierung dürfen ausser den Feldern, über die gruppiert wird nur Aggregate abgefragt werden.
|
AW: Problem mit Group by in Access
So etwas wie "COUNT(*)"?
Gruß, Luckner |
AW: Problem mit Group by in Access
Oder SUM(), MIN(), MAX(), AVG(), ...
Du gruppierst ja nur ein Feld fragst aber mehrere ab. Welche MAT-Nr, Rollennummer usw. von den zusammengefassten willst Du haben? |
AW: Problem mit Group by in Access
Hallo mkinzler,
ich möchte aus den beiden Tabellen, die ich mit Join verknüpft habe, abfragen "welche Lagerplätze" werden von diesen Artikeln belegt, die die selbe Materialnummer haben. Möchte nicht 50 Artikelnr. mit dem selben Lagerplatz sehen. Danke, Luckner |
AW: Problem mit Group by in Access
Zitat:
Zitat:
|
AW: Problem mit Group by in Access
Stimmt. Dann ist die "select-Anweisung" nicht richtig. Ich glaube, ich habe mal früher mal auch so eine GROUP BY - Abfrage für Firebird benutzt. Ich werde mal schauen, ob ich diesen Source-Code noch habe.
Gruß, Luckner |
AW: Problem mit Group by in Access
Nein, leider nichts desgleichen gefunden. Könnte Jemand helfen?
Habe jetzt folgende Select-Abfrage genacht. Leider auch eine Fehlermeldung.
Delphi-Quellcode:
Datamodule1.ADOQueryRollenJoinLagerplatzTabelle.SQL.Add('SELECT Materialrollen.[Mat-Nr], Materialrollen.Rollennummer, Materialrollen.DatumAb, Rollenlager.Lagerplatz, Rollenlager.Rollennummer, COUNT(Rollenlager.Lagerplatz) FROM Materialrollen ');
Datamodule1.ADOQueryRollenJoinLagerplatzTabelle.SQL.Add('LEFT JOIN Rollenlager ON Rollenlager.Rollennummer = Materialrollen.Rollennummer where ((Materialrollen.[Mat-Nr] = ' + EditMaterialeingangMatNr.Text + ') and (Materialrollen.DatumAb is NULL)) GROUP BY Rollenlager.Lagerplatz'); Danke, Luckner |
AW: Problem mit Group by in Access
Zitat:
SQL-Code:
SELECT
Materialrollen.[Mat-Nr], Rollenlager.Lagerplatz ... GROUP BY Materialrollen.[Mat-Nr], Rollenlager.Lagerplatz; |
AW: Problem mit Group by in Access
danke mkinzler für die Hilfe. Habe das jetzt so gemacht:
Delphi-Quellcode:
Kommt leider eine Fehlermeldung "Sie wollten eine Abfrage ausführen, die den angegebenen Ausdruck 'Mat-Nr' nicht als Teil der Aggregatfunktion einschliesst'.
Datamodule1.ADOQueryRollenJoinLagerplatzTabelle.SQL.Add('SELECT Materialrollen.[Mat-Nr], Materialrollen.Rollennummer, Materialrollen.DatumAb, Rollenlager.Lagerplatz, Rollenlager.Rollennummer FROM Materialrollen ');
Datamodule1.ADOQueryRollenJoinLagerplatzTabelle.SQL.Add('LEFT JOIN Rollenlager ON Rollenlager.Rollennummer = Materialrollen.Rollennummer where ((Materialrollen.[Mat-Nr] = ' + EditMaterialeingangMatNr.Text + ') and (Materialrollen.DatumAb is NULL))'); Datamodule1.ADOQueryRollenJoinLagerplatzTabelle.SQL.Add(' GROUP BY Materialrollen.Rollennummer, Rollenlager.Lagerplatz'); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz