Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Problem mit Group by in Access (https://www.delphipraxis.net/200783-problem-mit-group-access.html)

Luckner 24. Mai 2019 11:48

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:
         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;
Gruß, Luckner

mkinzler 24. Mai 2019 11:53

AW: Problem mit Group by in Access
 
Bei einer Gruppierung dürfen ausser den Feldern, über die gruppiert wird nur Aggregate abgefragt werden.

Luckner 24. Mai 2019 12:02

AW: Problem mit Group by in Access
 
So etwas wie "COUNT(*)"?

Gruß, Luckner

mkinzler 24. Mai 2019 12:13

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?

Luckner 24. Mai 2019 12:19

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

mkinzler 24. Mai 2019 12:24

AW: Problem mit Group by in Access
 
Zitat:

Möchte nicht 50 Artikelnr. mit dem selben Lagerplatz sehen.
Ist mir schon klar.

Zitat:

SQL-Code:
SELECT Materialrollen.[Mat-Nr], Materialrollen.Rollennummer, Materialrollen.DatumAb, Rollenlager.Lagerplatz, Rollenlager.Rollennummer

Du Fragst die Informationen aber hier ab. Welche von den 50 Rollennummern soll hier genommen werden?

Luckner 24. Mai 2019 12:30

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

Luckner 24. Mai 2019 12:56

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

mkinzler 24. Mai 2019 13:00

AW: Problem mit Group by in Access
 
Zitat:

Zitat von Luckner (Beitrag 1433053)
Nein, leider nichts desgleichen gefunden. Könnte Jemand helfen die Select-Abfrage zu gestallten?

Danke, Luckner

SQL-Code:
SELECT
  Materialrollen.[Mat-Nr], Rollenlager.Lagerplatz
...
GROUP BY
  Materialrollen.[Mat-Nr], Rollenlager.Lagerplatz;

Luckner 24. Mai 2019 13:22

AW: Problem mit Group by in Access
 
danke mkinzler für die Hilfe. Habe das jetzt so gemacht:
Delphi-Quellcode:
         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');
Kommt leider eine Fehlermeldung "Sie wollten eine Abfrage ausführen, die den angegebenen Ausdruck 'Mat-Nr' nicht als Teil der Aggregatfunktion einschliesst'.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:36 Uhr.
Seite 1 von 5  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz