Autor Beitrag
edi
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 05.06.03 14:06 
Hallo zusammen,
habe folgendes problem: es soll eine datenbankanwendung ohne bde und statt dessen mit den interbase-komponenten in delphi 5 geschrieben werden. leider funktioniert die ibquery-komponente nicht so wie ich mir das wünsche. eine "bde"-query gibt mir über recordcount die info, wieviele datensätze sie gefunden hat, leider funktioniert das wohl bei ibquery nicht so: da gibt es nur recordcount=0 oder 1. es würde mich freuen, wenn mir jemand diesbzgl.weiterhelfen kann. im voraus schon mal vielen dank. gruß edi
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Do 05.06.03 14:16 
Hi,

das hat den Grund: die bde holt sich gleich alle Datensätze in den Speicher. Das funzt bei Desktop-DB wunderbar. Bei SQL-Servern wäre solches Verhalten destruktiv, da die Daten ja übers Netz müssen.

Bei IBX hast du nur über nen Select Count eine Möglichkeit an die Anzahl zu kommen.

Grüße
Lemmy
edi Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 05.06.03 14:38 
hallo lemmy,
vielen dank für deine antwort. wenn ich sie richtig verstanden habe, dann muß ich also jedesmal 2 ibquery-läufe starten:
den 1.lauf mit select count(*) + bedingungen und den 2.lauf dann wie gehabt mit select * + bedingungen ??? lieben gruß, edi.
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Do 05.06.03 14:40 
Es gibt noch die Möglichkeit das Verhalten der BDE nachzubilden, indem Du die Records einfach holen lässt. Das ist natülich nur bei kleineren Anfragen sinnvoll und sollte bei kompletten Querys nicht angewandt werden.

RecordCount liefert einen sinnvollen Wert, wenn du davor ein
ausblenden Delphi-Quelltext
1:
Query1.FetchAll;					

machst.

Gruß
edi Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 05.06.03 14:59 
hallo ugrohne,
auch dir vielen dank für den tip. die datensätze der tabellen, auf die ich in meiner datenbank zugreifen muß, ändern sich ständig. genau diese änderungsdaten hole ich, fische immer den aktuellsten stand heraus und reagiere dementsprechend. fetchall paßt da nicht so. trotzdem herzlichen dank. edi
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Do 05.06.03 17:10 
edi hat folgendes geschrieben:
hallo lemmy,
vielen dank für deine antwort. wenn ich sie richtig verstanden habe, dann muß ich also jedesmal 2 ibquery-läufe starten:


Im Prinzip ja, wenn Du dich immer auf die selbe Tabelle beziehst, dann würde ich eine Stored Procedure empfehlen, da diese doch wesentliche Performancevorteile gegenüber einer "nomalen" SQL-Anweisung bietet.

GRüße
Lemmy