AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Anzahl von Datenbank Einträgen.
Thema durchsuchen
Ansicht
Themen-Optionen

Anzahl von Datenbank Einträgen.

Ein Thema von ngott2 · begonnen am 17. Dez 2013 · letzter Beitrag vom 17. Dez 2013
Antwort Antwort
ngott2

Registriert seit: 26. Aug 2013
81 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Anzahl von Datenbank Einträgen.

  Alt 17. Dez 2013, 08:15
Datenbank: MDB • Version: keine Angabe • Zugriff über: TADOQuery
Guten morgen Liebe Delphi Praxis Community.

Habe ein Sql Statment gebastelt das mir die Anzahl der Einträge meiner Datenbank zurück geben soll.Ich brauch die Anzahl der Datenbankeinträge.
Beim Ersten aufruf gibt er 2 zurück was momentan richtig ist. Bei jeden weiteren Aufruf kommt einer hinzu. Warum ist das so ?
Vermutlich ist Query.SQL.count falsch oder ? Query = class var Query : TADOQuery; Ich brauche die Anzahl für eine Fortlaufende Dokumenten Nummer.


Code:
Query.SQL.Add('SELECT COUNT (ID) from Document');
    Result := Query.SQL.Count;
Habe zwei Sachen aus dem Internet ausprobiert die gehen aber leider auch nicht.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Anzahl von Datenbank Einträgen.

  Alt 17. Dez 2013, 08:20
Schau doch nochmal genau was Query.SQL ist. Nicht Query , sondern Query.SQL . Was du damit aktiv anstellst, und was du mit Query.SQL.Count abfragst
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#3

AW: Anzahl von Datenbank Einträgen.

  Alt 17. Dez 2013, 08:22
Verwende Query.sql.Text.

Sonst verlängerst Du die Query immer weiter.

Die Abfrage geht dann auch mit Query.Fields[0], oder Du musst eine Klausel "AS Anzahl" oder so anhängen.
  Mit Zitat antworten Zitat
Benutzerbild von rapante
rapante

Registriert seit: 3. Jun 2009
Ort: OPR
171 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Anzahl von Datenbank Einträgen.

  Alt 17. Dez 2013, 08:22
Moin,
probiere es mal so:

Delphi-Quellcode:
Query.SQL.Text := 'SELECT COUNT (ID) AS counter from Document';
Query.Open;
Result := Query.FieldByName('counter').AsInteger;
  Mit Zitat antworten Zitat
Bebe

Registriert seit: 3. Apr 2005
Ort: Berlin
104 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

AW: Anzahl von Datenbank Einträgen.

  Alt 17. Dez 2013, 08:23
Hallo,

so wie ich das sehe fügst du immer wieder das gleiche Statement hinzu (ohne zu löschen [SQL.Clear]) und fragst dann nach der Anzahl der Zeilen von dem Statement ab. Das muss immer wachsen.

Im Statement hast du Count(ID) enthalten, daher musst du danach das erste Feld der Query abfragen. Die zweite Zeile gehört dort nicht rein.

Gruß
Matze
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Anzahl von Datenbank Einträgen.

  Alt 17. Dez 2013, 08:27
Und rapantes Code noch einmal mit Kommentaren zum Verständnis:
Delphi-Quellcode:
(* Gesamtes Statement auf einmal setzen -> evtl. vorhandenes überschreiben *)
Query.SQL.Text := 'SELECT COUNT (ID) AS counter from Document';
(* Abfrage auf die DB loslassen *)
Query.Open;
(* Ergebnismenge unter Verwendung des im Statement angegeben Feldalias auswerten *)
Result := Query.FieldByName('counter').AsInteger;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Anzahl von Datenbank Einträgen.

  Alt 17. Dez 2013, 08:28
Du solltest lieber SELECT COUNT(*) statt SELECT COUNT(ID) nehmen.

1. Weils schneller sein müsste und
2. Weil du nur so sicher gehen kannst, die Anzahl der Datensätze zu erhalten, denn NULL-Werte in der Spalte ID würden bei SELECT COUNT(ID) nicht mitgezählt werden.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
ngott2

Registriert seit: 26. Aug 2013
81 Beiträge
 
Delphi 10 Seattle Professional
 
#8

AW: Anzahl von Datenbank Einträgen.

  Alt 17. Dez 2013, 08:39
Du solltest lieber SELECT COUNT(*) statt SELECT COUNT(ID) nehmen.


2. Weil du nur so sicher gehen kannst, die Anzahl der Datensätze zu erhalten, denn NULL-Werte in der Spalte ID würden bei SELECT COUNT(ID) nicht mitgezählt werden.
Das kann doch eigendlich nicht Passieren bei Auto ID oder ?


PS counter kann man oder zumindest ich nicht verwenden ist Reserviert.

Danke für eure Antworten Funktioniert jetzt und ich verstehe es auch

Geändert von ngott2 (17. Dez 2013 um 08:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Anzahl von Datenbank Einträgen.

  Alt 17. Dez 2013, 08:51
PS counter kann man oder zumindest ich nicht verwenden ist Reserviert.
Dann nimm halt einen anderen Alias, den kannst Du ja frei vergeben.
Delphi-Quellcode:
Query.SQL.Text := 'SELECT COUNT(*) AS Erbsensuppe from Document';
Query.Open;
Result := Query.FieldByName('Erbsensuppe').AsInteger;
Das funktioniert genauso gut. Inwieweit dieser Alias allerdings auf den Inhalt schließen lässt, das steht auf einem anderen Blatt
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
ngott2

Registriert seit: 26. Aug 2013
81 Beiträge
 
Delphi 10 Seattle Professional
 
#10

AW: Anzahl von Datenbank Einträgen.

  Alt 17. Dez 2013, 09:11
PS counter kann man oder zumindest ich nicht verwenden ist Reserviert.
Dann nimm halt einen anderen Alias, den kannst Du ja frei vergeben.
Delphi-Quellcode:
Query.SQL.Text := 'SELECT COUNT(*) AS Erbsensuppe from Document';
Query.Open;
Result := Query.FieldByName('Erbsensuppe').AsInteger;
Das funktioniert genauso gut. Inwieweit dieser Alias allerdings auf den Inhalt schließen lässt, das steht auf einem anderen Blatt
Ja wenn Erbensuppe im Quellcode steht, dann ist eine Gute Quellcode Dokumentation wichtig Wir hatten mal in unserm Quellcode vor Jahren Turm und Springer als Variablen Name. Und nein es war kein Schachspiel ^^ Zum glück war ich da noch nicht da.
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:38 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