AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TTable Objekte editieren ohne Änderung auf Platte
Thema durchsuchen
Ansicht
Themen-Optionen

TTable Objekte editieren ohne Änderung auf Platte

Ein Thema von Majortomster · begonnen am 11. Mai 2005 · letzter Beitrag vom 12. Mai 2005
Antwort Antwort
Majortomster

Registriert seit: 11. Mai 2005
27 Beiträge
 
#1

TTable Objekte editieren ohne Änderung auf Platte

  Alt 11. Mai 2005, 15:56
Datenbank: Paradox • Zugriff über: ?
Hallo zusammen,

ich stehe vor einem Problem, das vielleicht denkbar einfach zu lösen ist... aber ich komme nicht drauf.
Es geht um ein bereits fertiges Programm, das per SQL-Statements (SELECT) in TQuery Objekten, bestimmte Daten aus einer Datenbank ausliest, miteinander vergleicht, usw.
Da die zugrundeliegende Datenbank nun geändert wird, müssen auch einige Änderungen am Programm vorgenommen werden. Das bedeutet unter anderem, dass Abfragen per SQL nicht mehr funktionieren. So müssen alle Abfragen ohne SQL über TTable vorgenommen werden, um die vorherigen Statements so zu "umschreiben".
Das ist zwar ein Heidenaufwand, aber machbar - denke ich...
Jetzt kommt aber das Problem: Ich möchte gern in einem TTable Objekt (das eine Tabelle dieser DB repräsentiert) "herumpfuschen" können (Datensätze löschen, ändern, etc.), OHNE DASS diese Änderungen physikalisch auf der Platte geschrieben werden. Die Tabelle auf der Platte soll danach genauso aussehen wie zuvor.
Ich möchte also mit einer Art Kopie des TTable Objekts im Speicher arbeiten - das geht aber nicht, da diese Objekte immer auf ihr Pendant auf der Platte "zeigen" und alle Änderungen dort vermerken.
Hat irgendjemand eine Idee wie ich das lösen könnte?
Mich würde die Möglichkeit schon zufrieden stellen, diese Tabelle in ein anderes Objekt zu kopieren - was aber genauso sinnvoll zu behandeln sein sollte wie eine Tabelle (Feste Anzahl Spalten, Variable Anzahl Zeilen, Spalten/Zeilen löschbar usw...).
Würd mich freuen wenn jemand weiterhelfen könnte.

Tomster
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#2

Re: TTable Objekte editieren ohne Änderung auf Platte

  Alt 11. Mai 2005, 21:20
Hallo und herzlich willkommen in der DP

Nimm einen Memory Dataset ( z.B. rxMemData aus den RX-Tools oder jvMemoryData aus der Jedi VCL)
Das sind TDataset Nachfahren die eine Tabelle im Arbeitsspeicher verwalten.
Da kannst du ändern was du willst.

Die beiden o.a. in-Memory-Tables unterstützen die Methoden CopyFromDataset(TDataset) und CopyStructure(TDataset) so das du deine physikalische TTable problemlos in den Arbeitsspeicher clonen kannst ...

Schöne Grüße,
Jens
  Mit Zitat antworten Zitat
Majortomster

Registriert seit: 11. Mai 2005
27 Beiträge
 
#3

Re: TTable Objekte editieren ohne Änderung auf Platte

  Alt 12. Mai 2005, 08:51
Zunächst erstmal vielen Dank für die Antwort.
An sich ist das von dir erwähnte ja genau das was ich suche. Aber leider würde ich es gern vermeiden, auf externe Bibliotheken zugreifen zu müssen :/
Also sehe ich das richtig, dass es in den Standard Bibliotheken keine solche Klasse gibt? Das ist mir unbegreiflich-das ist doch ein echter Mangel. Oder stand noch nie jemand vor dem gleichen Problem wie ich? (Kann ich mir gar nicht vorstellen)
Gäbe es evtl. Möglichkeiten das Problem mit vorhandenen Mitteln anzugehen?

Gruß, T
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

Re: TTable Objekte editieren ohne Änderung auf Platte

  Alt 12. Mai 2005, 08:57
Zitat von Majortomster:
Zunächst erstmal vielen Dank für die Antwort.
An sich ist das von dir erwähnte ja genau das was ich suche. Aber leider würde ich es gern vermeiden, auf externe Bibliotheken zugreifen zu müssen :/
Also sehe ich das richtig, dass es in den Standard Bibliotheken keine solche Klasse gibt? Das ist mir unbegreiflich-das ist doch ein echter Mangel. Oder stand noch nie jemand vor dem gleichen Problem wie ich? (Kann ich mir gar nicht vorstellen)
Gäbe es evtl. Möglichkeiten das Problem mit vorhandenen Mitteln anzugehen?
Du könntest ADO nehmen und dort eine disconnected Dataset aufbauen. Willst Du die Daten von einer realen Datenbank füllen lassen, so könntest Du den DataShape-Provider verwenden. Beispiele zu der Verwendung findest du im Entwickler Forum wenn Du nach MSDataShape suchst.
Dat das TTable nicht unterstützt liegt daran das du hier die BDE verwendest und diese schon vom Kern her 10-15 Jahre alt ist und eigentlich nicht mehr verwendet werden soll (außer Altprojektpflege) und damals solche Möglichkeiten nicht vorgesehen waren.
Wenn du auf .NET umsteigen willst/kannst, so ist der disconnected Fall der Standard. Hier hast du sogar ein komplettes DBMS als In-Memory-System zur verfügung.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Majortomster

Registriert seit: 11. Mai 2005
27 Beiträge
 
#5

Re: TTable Objekte editieren ohne Änderung auf Platte

  Alt 12. Mai 2005, 12:39
ADO kommt leider auch nicht in Frage :/

Habe nochmal ein bisschen rumgesucht und bin dabei auf die Klasse "TClientDataset" gestoßen. Könnte das vielleicht genau das sein, was ich suche. Die Beschreibung in der Delphi-Hilfe hört sich schon mal ganz nett an. Hat vll. schon jemand Erfahrungen mit dieser Klasse gesammelt?

Gruß, T
  Mit Zitat antworten Zitat
Majortomster

Registriert seit: 11. Mai 2005
27 Beiträge
 
#6

Re: TTable Objekte editieren ohne Änderung auf Platte

  Alt 12. Mai 2005, 13:36
Falls das geht stellt sich nun nur noch die Frage, wie ich eine TTable in das TClientDataSet rein kriege... :/
(Hab leider nicht so die Ahnung von Datenbanken in Delphi aber hoffe trotzdem, dass mir jemand diese Noob-Fragen beantworten kann.

T
  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 22:11 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