![]() |
Anzahl von Datensätzen
Ein Hallo an Alle!
Habe wieder mal ein kleines Problem! Habe 2 Datenbanken Kunden und Vertrag in beiden ist die Kundennummer enthalten. Nun möchte ich die Anzahl der Verträge des jeweiligen Kunden abfragen. Habe eine DBLookupComboBox für die Kunden und eine EBEdit für die Anzahl. Habe folgenden SQL Code eingegeben. SELECT KundenNr, COUNT(Zahl) as Anzahl FROM Vertrag GROUP BY KundenNr Es wird mir immer nur die Anzahl des 1. Kunden angezeigt, egal welchen Kunden ich anwähle. Vielleicht kann mir jemand helfen. Danke im Voraus Rene :wall: |
Re: Anzahl von Datensätzen
Hallo,
fehlt da nicht noch eine WHERE-Klausel, die die Kundennummer festlegt, auf die abgefragt werden soll? Ciao, sepp_001 |
Re: Anzahl von Datensätzen
Ich würde mir die Abfrage auf die schnelle folgendermaßen denken:
Select Count(*) from Vertrag where KundenNr = "KundenNummer aus DBLookupComboBox" Dein "Group By" bewirkt, dass pro Kundenummer nur ein Datensatz angezeigt wird und das willst du ja nicht Hoffe, ich hab hier nichts falsches erzählt .. Gruß Nele |
Re: Anzahl von Datensätzen
Danke für die rasche Antwort!
Habe es mit SELECT KundenNr, COUNT(Zahl) as Anzahl FROM Vertrag where KundenNr= Vertrag.KundenNr GROUP BY KundenNr versucht. Funktioniert aber auch nicht. Es werden immer nur die Anzahl des 1. Kunden angezeigt. Rene |
Re: Anzahl von Datensätzen
Moin muenchner!
Versuch bitte das:
Delphi-Quellcode:
Viele Grüße
select KundenNr, count(*) as Anzahl
from Vertrag group by KundenNr Markus :gruebel: |
Re: Anzahl von Datensätzen
Leider fuktioniert es immer noch nicht.
Egal was ich probiere, habe immer nur die Datensätze vom 1. Kunden. |
Re: Anzahl von Datensätzen
lass das "Group by" weg - du willst doch alle Datensätze haben, oder?
Gruß Nele |
Re: Anzahl von Datensätzen
Hallo muenchner,
eine WHERE Klausel ist nicht notwendig und die GROUP BY Klausel muss sein, weil alle Felder die (auch) außerhalb von Aggregatfunktionen genutzt werden in die GROUP Klausel müssen, sobald mindestens eine Aggregatfunktion genutzt wird. Zeig uns doch bitte einmal die Struktur der Tabelle Vertrag und sage uns mit welcher DB und welchen Kompos du arbeitest. |
Re: Anzahl von Datensätzen
Hallo Rene!
Die von mir vorgeschlagene SELECT-Klausel sollte die Anzahl der Datensätze pro KundenNummer aus der Tabelle-Vertrag liefern. Sie ist ziemlich einfach, um nicht zu sagen trivial. Es wundert mich, das sie nicht funktioniert. Nun würde ich gerne wissen warum? Deswegen möchte ich die Daten in der Tabelle-Vertrag anschauen. Was für eine Datenbank benutzt du? Kannst du die Tabelle (falls sie nicht zu groß ist) oder ein kleinen Auszug hier posten? @Nele Zitat:
Markus :gruebel: |
Re: Anzahl von Datensätzen
Liste der Anhänge anzeigen (Anzahl: 1)
anbei die Datenbank.(Paradox)
Habe nur Daten zum testen eingegeben |
Re: Anzahl von Datensätzen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Rene!
Also die Abfrage funktioniert. Viele Grüße Markus :gruebel: |
Re: Anzahl von Datensätzen
Liste der Anhänge anzeigen (Anzahl: 1)
Hab's mal kurz getestet und bei mir funktionieren die verschiedenen SQL-Statements :
SQL-Code:
gibt bei mir 'ne schöne Tabelle :
/*Kommentar*/
select KundenNr,count(*) from vertrag group by KundenNr KundenNr--------count(*) 123-------------1 234-------------2
SQL-Code:
gibt bei mir 'ne schöne Tabelle :
/* Kommentar*/
select count(*) from vertrag where KundenNr='234' count(*) 2 Das Problem liegt daher eher woanders. Ich habs mit dem Borland SQL-Explorer durchgespielt, nicht in Delphi. MfG Lutz |
Re: Anzahl von Datensätzen
Das funktioniert bei mir auch!
Habe mich vielleicht verkehrt ausgedrückt. ich möchte über die DBLookupComboBox einen Kunden anzeigen, und in einem anderen Feld (DBEdit)sollte die Anzahl der Verträge dieses Kundens sein. Gruss Rene |
Re: Anzahl von Datensätzen
Also, an die DBLookUpComboBox hängst Du 'ne DataSource als ListSource ran, die auf die KundenTabelle zurückgreift.
Als ListField gibst Du den Kundennamen an, als KeyField die KundenNr. Als nächstes 'ne Query, 'nen Edit und 'nen Button auf den Form. Den Button_OnClick event wie folgt gestalten :
Delphi-Quellcode:
Das sollte so erst mal klappen, bleiben zwei Punkte :
procedure TForm2.Button1Click(Sender: TObject);
var querystr : string; begin Query1.Close; Query1.SQL.Clear; querystr := 'select count(*) as Anzahl from Vertrag where KundenNr=''' + DBLookupComboBox1.KeyValue + ''''; Query1.SQL.Add(querystr); Query1.Open; Edit1.Text := (Query1.FieldValues['Anzahl']); Query1.Close; end; 1) Den ganzen Query1.open, etc... mit Try...except...end sicherer gestalten 2) Idealerweise müsste der obrige Code eher an einem 'SelectionChange' event der LookupCombo, damit sich das Edit Feld automatisch aktualisiert. Habe leider auf die Schnelle nichts Passendes gefunden. Da kann Dir sicher jemand aus dem Forum weiterhelfen. MfG Lutz |
Re: Anzahl von Datensätzen
Hallo Lutz!
Super, es funktioniert. Nochmals herzlichen Dank mfg Rene |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:32 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-2025 by Thomas Breitkreuz