![]() |
Datenbank: Sybase SQL Anywhere • Version: 12 • Zugriff über: ODBC/BDE
DBGrid Datensätze doppelt angezeigt / Sybase
Hallo,
ich habe folgendes Problem: Ich benutze in Delphi 7 ein DBGrid in Verbindung mit einer Sybase SQL-Anywhere Datenbank. Das Problem ist, daß unter bestimmten Umständen einige Datensätze doppelt bzw. mehrfach im Datengitter angezeigt werden. In der Tabelle, eine TTable-Komponente, die zurückgeliefert wird über den ODBC-Treiber, scheinen die Datensätze aber korrekterweise nur einmal zu sein. Das Problem scheint nur dann aufzutreten, wenn die Sortierung der Daten nicht nach dem Primärschlüssel der Tabelle in der Sybase Datenbank sondern nach einem anderen Index ist. Wenn man im Datengitter scrollt ist die Anzeige auch oft wieder plötzlich korrekt. Hat jemand eine Idee, was das sein kann? Liegt das am DBGrid, daß dieses an der TTable irgendwie vorbei arbeitet? Vielen Dank für Hinweise. Grüße Andy |
AW: DBGrid Datensätze doppelt angezeigt / Sybase
Zitat:
Ich würde mir dazu eine Procedure schreiben, die die Daten als CSV in eine Datei rausschreibt dann kann du in aller Ruhe kontrollieren ob das stimmt. So ganz grob als Anregung:
Delphi-Quellcode:
// TTable oder TQuery sowie eine TStringliste übergeben
// danach Stringliste mit SaveToFile() speichern procedure DumpDatasetAsCSV(ds:TDataset; list:Strings); var i : Integer; s : string; begin ds.First; while not ds.Eof do begin s := ''; for i := 0 to ds.Fields.Count-1 do begin if i <> 0 then s := s + '|'; s := s + ds.Fields[i].AsString; en; list.Add(s); ds.next; end; end; Zitat:
Ich frage das weil du oben ja geschrieben hast du würdest TTable verwenden. |
AW: DBGrid Datensätze doppelt angezeigt / Sybase
Hallo sx2008,
danke schon mal für deine Antwort. Ja ich kann inzwischen ganz sicher sagen, daß die Datensätze in der Datenbank und damit der TTable nur einmal vorhanden sind. Wenn ich die Daten wie von Dir beschrieben in eine CSV schrieben lasse, dann sind die da nur einmal drin. Es scheint wirklich ein Problem in der Kombination einer TTable mit dem TDBGrid zu sein. Irgendwie kommt das TDBGrid nicht mit der Darstellung der Datensätze klar, siehe auch den Hinweis mit dem scrollen. Wie gesagt es scheint immer zu funktionieren, wenn die TTable nach einem eindeutigen Index sortiert ins (Indexfieldnames). Auch taucht es bei mehrdeutigen Indizes nicht immer auf. Ich hoffe es gibt noch Hilfe. Vielen Dank und Grüße Andy |
AW: DBGrid Datensätze doppelt angezeigt / Sybase
Ich hatte das Problem bei MSSQL 6.5, welches auf (Code)Basis von Sybase entwickelt wurde.
Prüfe doch mal (=googeln), ob das ein known feature ist. |
AW: DBGrid Datensätze doppelt angezeigt / Sybase
Hat die Tabelle einen (eindeutigen) Primärschlüssel?
Falls nicht, wäre das die Ursache der Probleme. Grundsätzlich sollte jede Tabelle in einer relationalen Datenbank einen Primärschlüssel haben. PS: Ups - das steht doch schon im 1. Betrag. Ok, damit das DBGrid richtig funktioniert müssen folgende Bedingungen erfüllt sein: 1.) eindeutiger PK vorhanden 2.) Treiberschicht muss der VCL den Namen des PK-Feldes mitteilen 3.) und davon abhängig muss die Mehode GotoBookmark() funktionieren Könnte also ein Problem des Treibers sein. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 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