AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Problem mit Group by in Access

Problem mit Group by in Access

Ein Thema von Luckner · begonnen am 24. Mai 2019 · letzter Beitrag vom 5. Jun 2019
Antwort Antwort
Seite 1 von 5  1 23     Letzte » 
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#1

Problem mit Group by in Access

  Alt 24. Mai 2019, 11:48
Datenbank: ACCESS • Version: 2008 • Zugriff über: ADO
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 11:53
Bei einer Gruppierung dürfen ausser den Feldern, über die gruppiert wird nur Aggregate abgefragt werden.
Markus Kinzler
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 12:02
So etwas wie "COUNT(*)"?

Gruß, Luckner
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 12:13
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?
Markus Kinzler
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 12:19
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 12:24
Zitat:
Möchte nicht 50 Artikelnr. mit dem selben Lagerplatz sehen.
Ist mir schon klar.

Zitat:
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?
Markus Kinzler
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 12:30
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
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 12:56
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

Geändert von Luckner (24. Mai 2019 um 13:03 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 13:00
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;
Markus Kinzler
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: Problem mit Group by in Access

  Alt 24. Mai 2019, 13:22
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'.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:59 Uhr.
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