AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Verzweiflung durch falsches Query-Ergebnis
Thema durchsuchen
Ansicht
Themen-Optionen

Verzweiflung durch falsches Query-Ergebnis

Ein Thema von PASST · begonnen am 30. Mär 2005 · letzter Beitrag vom 31. Mär 2005
Antwort Antwort
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#1

Verzweiflung durch falsches Query-Ergebnis

  Alt 30. Mär 2005, 08:47
Datenbank: dbase • Version: 3 • Zugriff über: BDE 5.01
Hi NG.

Delphi 4 (update 3), WinXP Pro (SP2) bzw. WinNT4.0 (SP6a), BDE 5.01 (mit dBase3)

Meine Verzweiflung erreicht langsam ihren Höhepunkt, da ein (von mir geschriebenes) Programm immer mal wieder nachweislich falsche Daten anzeigt. Angezeigt werden Daten in einem DBGrid, die per Datasource mit einem TQuery verknüpft sind. Fange ich den TQuery.SQL.Text während der Laufzeit ab und lasse den String in der DBoberfläche anzeigen, so werden die Daten dort korrekt angezeigt, jedoch nicht im DBGrid. Andererseits, wenn ich die DBF-Datei in ein Test-Pfad kopiere und das Programm mit seiner Query-Anzeige erneut auf diesen Pfad bezogen anzeige, ist der Fehler verschwunden.

Paralleler, mehrfacher Zugriff auf die DBF-Datei seitens der Abfrage konnte ich bisher nicht feststellen.

Kann mir jemand Hinweise geben, in welcher Richtung ich suchen kann?


Gruß
Peter Schoettler
  Mit Zitat antworten Zitat
Neelix

Registriert seit: 30. Nov 2004
Ort: Im Delta-Quadranten
84 Beiträge
 
#2

Re: Verzweiflung durch falsches Query-Ergebnis

  Alt 30. Mär 2005, 08:52
Guten Morgen Peter,

kannst Du das Problem mal etwas detailierter beschreiben (SELECT-Statement, Datenstruktur, Welche Daten sollten kommen und welche werden angezeigt).
Gruß von der USS Voyager

Neelix
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Verzweiflung durch falsches Query-Ergebnis

  Alt 30. Mär 2005, 08:57
Schmeiß die BDE und dBase weg und stell (wenn ja scheinbar eine Desktopdatenbank reicht) auf ADS Local Server um. Die Programmierung ist sehr ähnlich, aber alle BDE-Probleme (Zerschossene Indexe, Probleme mit Optimistischen Sperrverfahren neuerer Windows-Versione, ...) gehören der Vergangenheit an. Die Umstellung ist sehr einfach durchzuführen (Für die DB-Konvertierung kann das ARC32-Tool (entspricht Datenbankoberfläche bei BDE) verwendet werden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Verzweiflung durch falsches Query-Ergebnis

  Alt 30. Mär 2005, 10:03
@Bernhard
Aus diversen Gründen möchte ich mich im Augenblick nicht von der BDE trennen.

@Neelix
Ok, dann will ich mal ins Detail gehen.
Der SQL-String sieht so aus:
Delphi-Quellcode:
SELECT
kund_nr, matchcode, lgschein, datum, leertyp, leername, schloss_nr, anzahl, hin_rueck,
sbh_uga2.bemerkung, miete, id, erfassdate, uebergabe, sbhnr, sbh_uga2.export
FROM sbh_kdns
INNER JOIN sbh_uga2
ON sbh_kdns.kund_nr=sbh_uga2.kund_nr
INNER JOIN sbh_uga3
ON sbh_uga2.leernr=sbh_uga3.leernr
WHERE datum>="28.02.2005"
AND datum<="30.03.2005"
AND leernr=2
AND kund_nr=1016053
ORDER BY
leername, schloss_nr, datum DESC, kund_nr, hin_rueck DESC
Ich konnte bisher erst zweimal den Fehler genauer beobachten. Dabei sind mit dem obigen SQL-String (Parameterwerte sind austauschbar) in der DBoberfläche alle Daten korrekt angezeigt worden, während im Programm einige Einträge nicht mit angezeigt wurden.
Der SQL-String ist korrekt, was die Abfrage in der DBoberfläche beweist. Irgendwo hapert es in der Darstellung im Programm. Ich muss gestehen, dass ich dort beim Fehlverhalten nicht die Anzahl der Ergebnisrecords überprüft habe. Was das Fehlen einzelner Records bestätigen würde oder das Grid als Fehlerursache entlarven würde.
Ich weiß aber nicht wirklich weiter wo ich suchen soll, insb. da der Fehler nicht reproduzierbar ist.

Nebenbei bemerkt, stürzt das Programm ab und an auf dem User-PC ebenso sporadisch ab, was bei mir nicht passiert. Dass dies die Ursache für den Fehler ist, bezweifle ich aber, da ich den Fehler, wenn er auftritt auch von meinem Rechner aus bestätigen konnte.
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#5

Re: Verzweiflung durch falsches Query-Ergebnis

  Alt 30. Mär 2005, 10:10
Moin, moin,

natürlich hat Bernhard recht. Aber vielleicht hilft es auch die Query explizit auf readonly zu stellen, wenn die Daten nur angezeigt werden sollen. Vermeide es auf einem Rechner mehr als ein BDE-Programm gleichzeitig laufen zu lassen. Die BDE passt nicht zur NT-Speicherverwaltung und bekommt hier von Zeit zu Zeit Probleme die nur schwer nachzuvollziehen sind. Hintergurnd ist, das die BDE zum Datenaustausch mit den Programmen bestimmte Speicherblöcke braucht, die offensichtlich im unteren Speichersegment zu finden sind und diese konkurrieren unter den NT-Systemen mit Treibern. Da habe ich lange leidvolle Erfahrungen mit Paradoxdatenbanken gemacht.

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Verzweiflung durch falsches Query-Ergebnis

  Alt 30. Mär 2005, 14:16
@mchaefer:
ich versuch das mal mit dem readonly = requestlive:=false.
Irgendwie wundert es mich schon, dass es an der BDE liegen soll. Dies ist die erste Anwendung, wo die BDE Zicken machen soll. Wobei es sich hier um eine Art kleine Stückzahlen-Verwaltung handelt, mit Bestandsübersicht etc.
  Mit Zitat antworten Zitat
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Verzweiflung durch falsches Query-Ergebnis

  Alt 31. Mär 2005, 09:46
Ich habe den Fehler gefunden. Jetzt weiß ich nicht ob er ist oder ob ich bin.
Auf jeden Fall liegt die falsche Anzeige von Daten daran, dass der TQuery.DatabaseName im Pogramm immer nur auf Testdaten gezeigt hat. Während alle andere TDataSet-Objekte auf die in einer ini-Datei eingetragene BDE-DB zugreifen.
Sei's drum, sollte jetzt nicht wider Erwarten ein anderer Fehler sich eingeschlichen haben, so kann ich diesen Thread abschließen!

Gruß und danke an alle.
Peter PASST
  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 08:19 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