Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi "Offline" TDataSet (Erledigt) --> MemoryData (https://www.delphipraxis.net/21045-offline-tdataset-erledigt-memorydata.html)

Fellmer Lloyd 27. Apr 2004 09:28


"Offline" TDataSet (Erledigt) --> MemoryData
 
Hi!

Ich habe wieder einmal eine seltsame Frage :angle2:

Ich möchte als Funktionsparameter ein TDataSet übergeben, das nicht mit einer Datenmenge verknüpft ist.
Gründe:
-Die Funktion soll eine Dynamische anzahl Felder erhalten
-Die Felder können von beliebigem Typ sein (Variant, Fieldtype etc.)
-Die Anzahl Datensätze soll Dynamisch sein (Tabelle)
-Die Funktion soll DB-Unabhängig sein

Ich will also eine Tabelle als Parameter übergeben.
Die Tabelle ist immer sehr klein (2*2 bis ca. 12*4).

Ein TDataSet kann ich nicht verwenden, da ich ja keine Datenbank verknüpft habe.

Meine Frage:
Ist es möglich, eine Tabelle "im Speicher" zu erstellen und als Parameter an eine Funktion zu übergeben?
Es sollte sich nach möglichkeit um ein unabhängiges Format handeln.

Ich habe mir bereits überlegt, dazu eine eigene Klasse zu schriben (Array of Fields und ein Array mit Datensätzen), doch das würde mich natürlich viel Zeit kosten.

...Oder bin ich wieder einmal auf dem Holzweg? :gruebel:

Danke fürs Grübeln :thuimb:

sakura 27. Apr 2004 09:32

Re: "Offline" TDataSet
 
Schau mal hier (bei Torry), da sind verschieden DB Export/Import/Offline Komponenten. Es sollte mind. eine dabei sein, dir Dir hilft ;)

...:cat:...

shmia 27. Apr 2004 09:45

Re: "Offline" TDataSet
 
Du möchtest eine Memory-Table oder Memory-Dataset Komponente haben.
Es gibt diverse Freeware Komponenten dieser Art; z.B. in RX-Lib und
in JVCL.
Oder auch einzeln: kbmmemtable

Fellmer Lloyd 27. Apr 2004 09:47

Re: "Offline" TDataSet
 
Es geht um eine Import funktionen:

Code:
[Zu importierendes File]
          |
          |
          V
    Importprozedur
          |
          |
          V
    Eigene Klasse
Ich will bei allen Importprozeduren (ca. 6) die gleiche Schnitstelle, nämlich eine Tabelle (DataSet).
Die Prozeduren sollen die Werte mit ihren Typen und Namen Liefern.
Bei Torry gibt es diverse Komponente die ein Dataset in etwas anderes umwandeln, das will ich aber nicht.
Ich will ein Dataset "füllen", und übergeben.

Ich hoffe ich habe mich einigermassen klar ausgedrückt.

Gibt es vieleicht eine ähnliche klasse wie DataSet, die man füllen kann?
(So eine Art StringGrid, mit verschiedenen FeldTypen)

Aber danke für den Link! :!:

[EDIT] Ich werde mir die MemTables ansehen, danke!

Eledigt: Die Komponente TJvMemoryData erfüllt meine Anforderungen.
Das Package ist auf www.delphi-jedi.org erhältlich.

shmia 27. Apr 2004 10:04

Re: "Offline" TDataSet
 
Zitat:

Zitat von Fellmer Lloyd
Gibt es vieleicht eine ähnliche klasse wie DataSet, die man füllen kann?
(So eine Art StringGrid, mit verschiedenen FeldTypen)

Der Vater (=Basisklasse) aller Tables, Queries und Memorytables ist TDataset.
Wenn du einer Procedure ein Objekt der Klasse TDataset übergibst, dann spürt die Procedure
keinen Unterschied, ob es sich um TTable, TQuery, TADOTable, TADODataset, TADOQuery, RxMemoryDataset oder sonst einer von TDataset abgeleiteten Komponente handelt.
Es gibt aber doch einen Unterschied:
Ein Objekt der Klasse TTable kann ohne Datenbank nicht geöffnet werden; eine Memory-Table
aber sehr wohl. Also brauchst du definitiv eine Memory-Table.

Andererseits möchte die Memory-Table auch mit Daten gefüllt werden
(Bei einer Memory-Table kannst du zur Entwicklungszeit nur die Feldnamen/Datentypen festlegen).
Hier kommen die Import/Export Komponenten ins Spiel, die dir Sakura genannt hat.
Ein Import-Komponente liest z.B. eine Datei im Fixed-ASCII Format und spiechert die
Daten in einem von TDataset abgeleiteten Objekt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 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