AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Datenbankabfrage:'SELECT COUNT(*) FROM DB'
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankabfrage:'SELECT COUNT(*) FROM DB'

Ein Thema von Schleifchen · begonnen am 28. Apr 2023 · letzter Beitrag vom 28. Apr 2023
Antwort Antwort
Schleifchen

Registriert seit: 28. Aug 2022
19 Beiträge
 
#1

Datenbankabfrage:'SELECT COUNT(*) FROM DB'

  Alt 28. Apr 2023, 08:50
Datenbank: SQLite • Version: 3 • Zugriff über: FDConnection
Hallo in die Runde, wie kann ich das Ergebnis von 'SELECT COUNT(*) FROM BeginnerDB' in ein Memo einfügen:
Code:
query.SQL.Text := 'SELECT COUNT(*) FROM BeginnerDB';
  query.Open();
  outputMemo.Text:=''
  outputMemo.Text:= IntToStr(query.Text);
funzt nicht - aber wie dann.

PS: bin absoluter Anfänger und versuche mich grad an SQLite, bitte um Verständniss

Danke
Stefan
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
315 Beiträge
 
Delphi 12 Athens
 
#2

AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'

  Alt 28. Apr 2023, 09:00
outputMemo.Text:= IntToStr(query.Fields[0].Value);
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'

  Alt 28. Apr 2023, 09:01
bei so was mach ich i.d.R

Delphi-Quellcode:
query.SQL.Text := 'SELECT COUNT(*) AS Anzahl FROM BeginnerDB';
  query.Open();
  outputMemo.Text:= qry.FieldByName('Anzahl').AsString
das outputMemo.Text:='' habe ich raus genommen, das ist an der Stelle nicht sinnvoll
  Mit Zitat antworten Zitat
Schleifchen

Registriert seit: 28. Aug 2022
19 Beiträge
 
#4

AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'

  Alt 28. Apr 2023, 12:07
Danke, so läuft es perfekt:
Code:
outputMemo.Text:= IntToStr(query.Fields[0].Value);
Frage: gibt query.Fields[0] ein Array zurück wo in 0 die Rückgabe gespeichert ist?

Danke
Stefan
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.418 Beiträge
 
Delphi 7 Professional
 
#5

AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'

  Alt 28. Apr 2023, 12:28
In Fields befinden sich alle Spalten aus dem Ergebnis des SQLs, die erste Spalte ist in Fields[0], die zweite in Fields[1], ...

In query.Fields.Count steht die Anzahl der Spalten aus dem Abfrageergebnis. Enthält das Ergebnis (wie hier) nur eine Spalte, so ist query.Fields.Count = 1 und der Inhalt dieser einen Spalte ist in query.Fields[0] zu finden. Enthält das Ergebnis einer Abfrage zehn Spalten, so ist query.Fields.Count = 10 und die einzelnen Spalteninhalte können query.Fields[0] bis query.Fields[9] entnommen werden.

Da das etwas abstrakt und vor allem auch unhandlich ist, kann man auch die von Lemmy angedeutete Variante nutzen.
Delphi-Quellcode:
query.SQL.Text := 'SELECT COUNT(*) AS Anzahl FROM BeginnerDB';
query.Open();
outputMemo.Text := query.FieldByName('Anzahl').AsString;
Im SQL gibt man für jede Spalte den Namen an, bei select * from Tabelle werden die Namen aus der Tabelle genommen.

Im Quelltext kann man dann die Werte der Spalten über query.FieldByName('NameDerSpalte') erhalten, was deutlich einfacher und verständlicher ist, da man hier nicht wissen muss, an welcher Position sich die Spalte im Abfrageergebnis befindet. Hier ist es also egal, ob sich eine Spalte im Ergebnis nun in query.Fields[0], query.Fields[1], ..., query.Fields[n] befindet. Die "Suche" nimmt einem FieldByName ab und bei Änderungen in der Abfrage und einer daraus eventuell resultierenden Verschiebung der Spalten im Ergebnis, muss hier nicht im Quelltext "nachgebessert" werden, um sicherzustellen, das query.Fields[0] ... noch auf die korrekte Spalte verweisen.
  Mit Zitat antworten Zitat
Schleifchen

Registriert seit: 28. Aug 2022
19 Beiträge
 
#6

AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'

  Alt 28. Apr 2023, 13:05
Habt Dank für Eure Mühe nun ist alles bisschen klarer.

Geändert von Schleifchen (28. Apr 2023 um 13:31 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.418 Beiträge
 
Delphi 7 Professional
 
#7

AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'

  Alt 28. Apr 2023, 13:24
Die Spalte in Lemmys SQL heißt Anzahl, weil Lemmy hinter Count(*) halt AS Anzahl geschrieben hat, derweil Count(*) gibt ja die Anzahl der passenden Sätze zurück. man kann auch select count(*) as Bratkartoffel from Tabelle schreiben, dann muss man im Quelltext eben query.FieldByName('Bratkartoffel') schreiben. Der "Text" hinter dem AS gibt einfach nur an, unter welchem Namen man die entsprechende Spalte später Ansprechen möchte.

Real gibt es aber keine Spalte mit dem Namen Anzahl in Lemmys SQL, Anzahl ist hier nur ein Alias auf Count(*). Aktuallisieren kann man Anzahl hier nicht, da Count(*) immer nur die aktuelle Menge an Datensätzen aus dem SQL angibt. Fügt man Sätze hinzu oder entfernt welche, so wird ein nachfolgendes Count(*) eben die dann aktuelle Menge an Datensätzen angeben.

Bevor Du Dich damit beschäftigst, wie Du Ergebnisse von Abfragen in Delphi weiterverarbeiten kannst, solltest Du Dir zuerst die Grundzüge für die Nutzung von SQL erarbeiten. Dies kann noch losgelöst von SQLite und Delphi geschehen, da dies bei allen Datenbanken (fast) gleich ist.

Frag' bitte mal die Suchmaschine Deiner Wahl nach "Tutorial SQL" und schau, welches für Dich geeignet ist. Wenn es "nur" um die Syntax von SQL geht, könnte eine Suche nach "Referenz SQL" hilfreich sein. Wenn die Grundlagen dort verstanden sind, wird die Umsetzung mit Delphi deutlich einfacher.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'

  Alt 28. Apr 2023, 13:24
Die von Lemmy gewählt Variant setzt voraus, das die Tabelle eine Spalte 'Anzahl' hat. D.h. in jedem Datensatz muss diese Spalte beim Hinzufügen oder Löschen von Datensätzen aktualisiert werden?
Wenn ja: wie ist das zu erreichen?
Nein, dem ist nicht so, die Spalte wird mit dem Spaltenamen "Anzahl" zurückgegeben.
Die Spalte kann auch Pustekuchen heißen wenn dann ein as folgt mit einer anderen Bezeichnung wird sie mit dieser Bezeichnung ausgegeben.

Grüße
Klaus
Klaus

Geändert von Klaus01 (28. Apr 2023 um 15:44 Uhr)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'

  Alt 28. Apr 2023, 13:35
Habt Dank für Eure Mühe nun ist alles bisschen klarer.
Protipp für die Zukunft:
Lass deine Fragen stehen, sie können insbesondere denen helfen, die irgendwann in Zukunft nach einer Lösung zu ihrer Frage sind und über deine Frage jetzt leider nicht mehr stolpern können.
  Mit Zitat antworten Zitat
Schleifchen

Registriert seit: 28. Aug 2022
19 Beiträge
 
#10

AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'

  Alt 28. Apr 2023, 13:38
Ja, klar - ich lasse zukünftig die Beiträg wie sie sind. Ich meinte den Hinweis auf das Alias nicht gelesen zu haben. Aber es war ja schon eine neuer Beitrag.

Also, alles perfekto - Danke
Stefan
  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 14:14 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