Autor Beitrag
Hänsel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 144



BeitragVerfasst: Mi 05.05.21 12:44 
Hallo, kann mir hier jemand weiterhelfen?

Ich arbeite mit der Datenbank "SQLite-Studio". Wenn ich nach dem hinzufügen von Datensätzen mit der Abfrage komme:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
DataModule_Tabellen.FDConnection1.Connected:=true;
DataModule_Tabellen.FDQuery_Einlesung.Close;
DataModule_Tabellen.FDQuery_Einlesung.SQL.Text:='Select * From Einlesung Where Feld1 order by Feld1 ';
DataModule_Tabellen.FDQuery_Einlesung.Open;
Satz:=DataModule_Tabellen.FDQuery_Einlesung.RecordCount;
Label1.Caption:=IntToStr(Satz);

bekomme ich das Ergebnis (Anzahl der Datensätze) angezeigt. Wenn keine Datensätze hinzugefügt werden, bekomme ich mit dieser Abfrage keine Rückmeldung von der Anzahl der Datensätze. Das gleiche gilt, wenn ich das Programm öffne um zu sehen wieviel Sätze sind vorhanden. Was habe ich da eventuell falsch gemacht? Bei Delphi habe ich die Version '10.1 Berlin'

Schon mal Danke im Voraus
Hänsel

Moderiert von user profile iconTh69: Titel geändert (war "SQLite-Studio").
Moderiert von user profile iconTh69: Delphi-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 05.05.21 14:07 
Hallo,

deine Where-Anweisung ist falsch - du solltest eigentlich einen Datenbankfehler erhalten.

PS: Die Datenbank heißt nur "SQLite"!
Hänsel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 144



BeitragVerfasst: Mi 05.05.21 15:19 
Danke für die Antwort,
es funktioniert auch nicht ohne der "Where" Anweisung.
Der Name heißt doch "InstallSQLiteStudio-3.2.1"
vielleicht kann hier noch jemand Hinweise geben.

Danke
Hänsel
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 05.05.21 15:57 
Du meinst 'Select * From Einlesung order by Feld1'?
Dies sollte zumindestens syntaktisch in Ordnung sein.

Hast du die Anweisung denn mal direkt im SQLite-Studio ausgeführt?

PS: SQLite-Studio ist doch nur das Programm, mit dem du die SQLite-Datenbank bearbeiten kannst - von Delphi greifst du aber nur noch direkt auf die SQLite-Datenbank(datei) zu.
Hänsel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 144



BeitragVerfasst: Mi 05.05.21 16:18 
ja, nach dem Einlesen aller neuen Daten, können Select Anweisungen bzw. Abfragen durchgeführt werden und auch das Zählen der Datensätze funktioniert (aber nur nach dem Einlesen der Daten). Nur wenn ich das Programm öffne (und noch keine Daten eingelesen habe) kann die Anweisung zum zählen der Daten herausgeben werden, aber dabei passiert nichts.
ausblenden Delphi-Quelltext
1:
Satz:=DataModule_Tabellen.FDQuery_Einlesung.RecordCount;					


Hänsel

Moderiert von user profile iconTh69: Delphi-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 05.05.21 16:28 
Wird überhaupt nichts im Label angezeigt oder 0?
Fängst du Exceptions in deinem Programm (und verwirfst diese)?
Ansonsten debugge doch mal Zeile für Zeile.
Hänsel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 144



BeitragVerfasst: Mi 05.05.21 18:07 
Ich denke zumindest den Fehler erkannt zuhaben. Es lag an der Einstellung der Komponente 'FDQuery1'. Hier muss nur die Anzahl der Datensätze geändert werden. Als Standard stehen dort 50 . Ich habe diese auf 100000 gesetzt und es funktionierte sofort.
Ich bedanke mich bei Euch für die Mithilfe.

Danke
Hänsel
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 06.05.21 09:10 
Sehr eigenartig.
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1321
Erhaltene Danke: 117

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Do 06.05.21 12:37 
Hallo,

wenn es dir an der Stelle nur darum ging die Anzahl der Datensätze zu ermitteln ist der Aufruf eh mehr als ungeeignet.
Da würde SELECT Count(*) AS C FROM Einlesung deutlich mehr sinn machen.

Für gewöhnlich ist ein DB Zugriff auf Vermeidung von unnötigen Zugriffen und Datentransfers ausgelegt.
Soweit RecordCount nicht als Funktion der Datenbank untersützt wird, liefert ein Aufruf bei den meißten DB Komponenten nur die Größe des geladenen Puffers zurück.
Es sei denn man hat nach dem Öffnen via query.Last dafür gesorgt das einmal alles übertragen wurde. Oder verwendet eh FetchAll und lädt das Ergebnis der kompletten Abfrage in den lokalen Speicher.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?