AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Durcheinander im TDBGrid bei dynamischem Cursor
Thema durchsuchen
Ansicht
Themen-Optionen

Durcheinander im TDBGrid bei dynamischem Cursor

Ein Thema von bisenegger · begonnen am 6. Dez 2006 · letzter Beitrag vom 14. Dez 2006
Antwort Antwort
bisenegger

Registriert seit: 25. Okt 2006
Ort: Kriens
14 Beiträge
 
#1

Durcheinander im TDBGrid bei dynamischem Cursor

  Alt 6. Dez 2006, 07:29
Datenbank: Pervasive PSQL • Version: 9.5 • Zugriff über: PDAC
Hoi zusammen

Wenn ich mit PDAC vom Pervasive mit Delphi auf meine Datenbank zugreife habe ich mit dynamischem Cursor ein durcheinander von Datensätzen im TDBGrid.
Sobald ich den vert. Scrollbalken schiebe und die Datenmenge kleiner ist als das Grid sind die meisten Datensätze doppelt vorhanden.

Wenn im TPvQuery (analog TQuery) Cursor auf "Static" steht kommt dieses Problem nicht vor.

Hat dieses Problem nun allgemein mit der Pervasive Komponente TPvQuery oder mit Delphi (TDbGrid) selbst zu tun und weiss evtl. jemand eine Lösung dazu.

Der dynamische Cursor überzeugt mich, da dann nicht zuerst das ganze Query eingelesen wird, sondern nur was "man" im DBGrid sehen muss.
Vorallem von Vorteil wenn über langsame ADSL-Upload-Kanäle oder GPRS/EDGE/UMTS auf die Datenbank zugegriffen wird.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Durcheinander im TDBGrid bei dynamischem Cursor

  Alt 6. Dez 2006, 07:41
Also solch ein Verhalten mit DBGrid und anderen Datenbanken bei verwendung von serverseitigen Curser sind mir nicht bekannt.

Kannst Du noch deine Delphi-Version angeben

Kannst du noch folgendes Testen (per Code):

1, Abfrage von Query.RecordCount nach öffnen der Query.
2, Durchlauf der Query mittels Next-Methode bis EOF = True mit Trace-Ausgaben der Datensätze
3, Abfrage von RecordCount
4, Zurücklaufen mittles Prior-Methode bis BOF = True
5, Abfrage von RecordCount
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
bisenegger

Registriert seit: 25. Okt 2006
Ort: Kriens
14 Beiträge
 
#3

Q

  Alt 6. Dez 2006, 17:31
Zitat von Bernhard Geyer:
1, Abfrage von Query.RecordCount nach öffnen der Query.
2, Durchlauf der Query mittels Next-Methode bis EOF = True mit Trace-Ausgaben der Datensätze
3, Abfrage von RecordCount
4, Zurücklaufen mittles Prior-Methode bis BOF = True
5, Abfrage von RecordCount
Query.RecordCount nach Oeffnen = -1
und bleibt mit diversen Aktion immer gleich.

anderer Test:
Durchlauf mit Button mit Aktion "Query.Next" und angschlossenem DBGrid,
Resultat: alles i.O.

Probleme entstehen wenn Resultat der Query kleiner als DBGrid ist und unten leerzeilen vorhanden sind. Nach dem Verschieben des vert. Scrollbalken sind die Leerzeilen mit doppelten "Falsch-Einträgen" besetzt.

Delphi-Version:
Turbo Delphi Prof. - Win32
eine vernünftige Variante nach meinem Delphi4. Zwischenversionen hatte ich nicht und Delphi 2005/2006 sind nicht zahlbar.
Turbo Delphi hat ca. den Stand von Delphi2005 (einfach aber nur die Win32-Version).
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Q

  Alt 6. Dez 2006, 20:03
Zitat von bisenegger:
Query.RecordCount nach Oeffnen = -1
und bleibt mit diversen Aktion immer gleich.
AFAIK sollte es bei erreichen von EOF einen gültigen Wert haben. Probiers mal mit einer BDE-Quelle aus. Das könnte u.U. der Fehler der Komponente sein.
Zitat von bisenegger:
Turbo Delphi hat ca. den Stand von Delphi2005 (einfach aber nur die Win32-Version).
Nein. Turbo Delphi ist ein Delphi 2006, jedoch nur mit dem Win32-Teil der VCL mit Pascal.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
bisenegger

Registriert seit: 25. Okt 2006
Ort: Kriens
14 Beiträge
 
#5

Re: Q

  Alt 6. Dez 2006, 20:54
Zitat von Bernhard Geyer:
Zitat von bisenegger:
Turbo Delphi hat ca. den Stand von Delphi2005 (einfach aber nur die Win32-Version).
Nein. Turbo Delphi ist ein Delphi 2006, jedoch nur mit dem Win32-Teil der VCL mit Pascal.
Nach dem Senden habe ich den Irrtum auch bemerkt, aber der nächste Jahreswechsel steht schon wieder an

Nun zum Thema:
Bei RequestLive=True erhalte ich einen gültigen Query.RecordCount und das DBGrid lässt keine Wünsche offen.
Viola.

RequestLive=True verursacht aber mehr Datenvolumen, ist das richtig?

Meinerseits stelle ich auf RequestLive=True um - aber warum das Eine geht und das Andere nicht ist ein Rätsel?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Q

  Alt 6. Dez 2006, 21:05
Zitat von bisenegger:
Nun zum Thema:
Bei RequestLive=True erhalte ich einen gültigen Query.RecordCount und das DBGrid lässt keine Wünsche offen.
Viola.

RequestLive=True verursacht aber mehr Datenvolumen, ist das richtig?

Meinerseits stelle ich auf RequestLive=True um - aber warum das Eine geht und das Andere nicht ist ein Rätsel?
Das wird vermutlich der RecordCount sein. Solange der immer nur -1 liefert kommt das DBGrid durcheinander. Das dies hier mit RequestLive zusammenhängt ist wohl Implementierungslösung der Kompo. Ob (sehr viel) mehr Traffic entsteht müsste man Tracen, da jede DB sich anders verhält.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
bisenegger

Registriert seit: 25. Okt 2006
Ort: Kriens
14 Beiträge
 
#7

Re: Durcheinander im TDBGrid bei dynamischem Cursor

  Alt 14. Dez 2006, 07:36
Abschliessend folgende Bemerkungen:

Resultat nach diversen Tests:

- mit den BDE-Komponente(n) gibt es keine Probleme im TDBGrid (DBGrid).

- TPvSQLQuery (PvSQLQuery) macht grosse Probleme mit dynamischem Cursor (ecDynamic,ctDynamic).
Mit RequestLive=True sind die Vorteile das dynamischen Cursors dahnin.

Wenn man im DBGrid am Ende "ankommt", die Cursor-Taste nach oben - und dann wieder nach unten "drückt" sind Datensätze "doppelt" (gemixt).

Ganz klar ein Bug in den Pervasive-Komponenten PDAC.
Pervasive schreibt seit Version 8.x dass im PDAC der dynamische Cursor der "neue Standard" sei.
Warum ist den ctStatic als Standard gesetzt????

PDAC 9.50.023.000 Win32
Client 9.50.077.002 Win32
Server 9.50.077.003 Netware
Turbo Delphi Prof.

Pervasive schreibt im direkten Vergleich zu Titan (Regatta), dass Ihre Software dauernd gewartet wird. Aber scheinbar sind die "Dynamischen Probleme schon seit längerem bekannt"
Nach dem Umstieg von Titan zu PDAC ...........
  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 11:06 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