![]() |
Datenbank: SQLite • Version: 3 • Zugriff über: FDConnection
Datenbankabfrage:'SELECT COUNT(*) FROM DB'
Hallo in die Runde, wie kann ich das Ergebnis von 'SELECT COUNT(*) FROM BeginnerDB' in ein Memo einfügen:
Code:
funzt nicht - aber wie dann.
query.SQL.Text := 'SELECT COUNT(*) FROM BeginnerDB';
query.Open(); outputMemo.Text:='' outputMemo.Text:= IntToStr(query.Text); PS: bin absoluter Anfänger und versuche mich grad an SQLite, bitte um Verständniss :wink: Danke Stefan |
AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'
Delphi-Quellcode:
outputMemo.Text:= IntToStr(query.Fields[0].Value);
|
AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'
bei so was mach ich i.d.R
Delphi-Quellcode:
das outputMemo.Text:='' habe ich raus genommen, das ist an der Stelle nicht sinnvoll
query.SQL.Text := 'SELECT COUNT(*) AS Anzahl FROM BeginnerDB';
query.Open(); outputMemo.Text:= qry.FieldByName('Anzahl').AsString |
AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'
Danke, so läuft es perfekt:
Code:
Frage: gibt query.Fields[0] ein Array zurück wo in 0 die Rückgabe gespeichert ist?
outputMemo.Text:= IntToStr(query.Fields[0].Value);
Danke Stefan |
AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'
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:
Im SQL gibt man für jede Spalte den Namen an, bei
query.SQL.Text := 'SELECT COUNT(*) AS Anzahl FROM BeginnerDB';
query.Open(); outputMemo.Text := query.FieldByName('Anzahl').AsString;
Delphi-Quellcode:
werden die Namen aus der Tabelle genommen.
select * from Tabelle
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. |
AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'
Habt Dank für Eure Mühe:thumb: nun ist alles bisschen klarer.
|
AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'
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
Delphi-Quellcode:
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.
select count(*) as Bratkartoffel from Tabelle
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. |
AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'
Zitat:
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 |
AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'
Zitat:
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. |
AW: Datenbankabfrage:'SELECT COUNT(*) FROM DB'
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:15 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