![]() |
Datenbank: ABS • Version: 7.93 • Zugriff über: Formular
Komponente Table kopieren
Hallo,
ich hoffe, mir kann jemand weiter helfen. Ich habe auf einem Datenmodul eine Tabelle + Datasource. Bei dieser Tabelle habe ich einige Felder, die auf per FieldKind (fkLookup), KeyFields, Lookupdataset, Lookupkeyfields, LookupResultField auf andere Tabellen zugreifen. Soweit so gut. Das funktioniert auch. Aber kann man diese Tabelle, so wie diese festgelegt ist auch während der Laufzeit kopieren? Also eine Komponenten-Kopie erstellen?? Ich habe 2 identische Datenbanken, in der 2 identischen Tabellen mit den Tabellenfelder vorliegen. Ich möchte nun die vorhandene, während der Entwurfzeit festgelete Tabelle - mit festgelegten Felder-/Typen - kopieren. (Also mit dem Lookup festlegungen ect). Damit ich während der Laufzeit eine weitere Tabelle mit den in der 1. Tabelle festgelegten Typen/Felder auch habe. Natürlich könnte ich während der Entwurfszeit die 1. Tabelle, die auf dem Datenmodul vorliegt kopieren ... das wäre das Einfachste. Aber da ich mehrere Tabellen habe, müsste ich alle Tabellen kopieren, was ich nicht möchte, weil ich während der Laufzeit nur die Tabelle mit allen Felderfestlegungen kopieren möchte, dessen "Original-Tabelle" vorliegt. Ich hoffe, ich hab das jetzt irgendwie gut und verständlich ausgedrückt.... * -->> Table1.assign() klappt nicht. :( Vielleicht würde mir schon ein Ansatz helfen... wenn man während der Entwurfszeit doppelt auf die Tabelle klickt, kann man doch dort alle Felder Tabelle quasi hinzufügen. Kann man z.B. während der Laufzeit diesen "Doppelklick" simulieren bzw. diese Felder wie beim Doppeltclick hinzufügen. Geht das? Das würde mir auch schon weiterhelfen. Könnte mir da bitte jemand weiterhelfen, ich mache da jetzt schon fast 2 Tage rum und das klappt - aus welchen Gründen auch immer -nicht. |
AW: Komponente Table kopieren
So recht verstanden habe ich deine Frage nicht.
Wenn du eine Tabellen-Kopie mit den gleichen Inhalten benötigst, dann musst du dir eine zweite Tabelle Table2 mit den gleichen Feldern wie dem Original anlegen und anschließend entweder Satz für Satz via Table2.Append kopieren oder in einem Rutsch mit einer entsprechenden SQL-Anweisung (Insert-Statement). Gruß Mikhal |
AW: Komponente Table kopieren
pack Dir die Table Komponente auf ein Datenmodul und erzeuge eine zweite Instanz des Datenmoduls....
|
AW: Komponente Table kopieren
Ein Datenmodul für eine Datenbank mit "allem Drum und Dran" in der IDE designen.
Zur Laufzeit je Datenbank eine Instanz dieses Datenmoduls erstellen und mit der jeweiligen Datenbank verbinden. Letztlich ist ein Datenmodul auch nur ein Objekt und je Datenbank wird ein entsprechendes Objekt erstellt. Wenn's mal nicht mehr zwei identische Datenbanken sind, sondern (warum auch immer) 3, 4, 42, ..., dann kannst Du weiterhin für jede Datenbank eine Instanz dieses Objektes (= Datenmoduls) erstellen, ohne Dir weitere Gedanken über die Kopie von irgendwelchen Tabellenkomponenten ... machen zu müssen. |
AW: Komponente Table kopieren
Zitat:
oder doch eine Kopie der Komponente erstellen, um z.B. gleichzeitig auf beide Datenbanken zuzugreifen? Oftmals kann man auch eine neue Instanz einer Komponente erstellen (Create) und dann mit der Assign-Methode die Eigenschaften einer anderen Instanz kopieren. |
AW: Komponente Table kopieren
Vielen lieben Dank für Eure Antworten.
Zitat:
Hört sich ja schon mal sehr interessant an. mhh... aber was genau meinst Du mit "zweite Instanz des Datenmoduls" erstellen? Zitat:
Also nur die Festlegung der Tabelle selbst. Denn ich habe Tabelle A --> TableName ist z.B. Kunden und TabelleB hat den TableName z.B. Kunden2. Die Feldernamen/Bezeichnungen der beiden Tabellen sind identisch. Bei der Tabelle A habe ich also die Felderfestlegungen manuell definiert. (Doppelclick auf TabellA) Und diese Definition soll TabelleB auch bekommen, ohne dass ich bei der TabelleB die Felderfestlegungen(Definitionen) manuell festlegen muss. Es geht mir also nicht um den Inhalt der Tabelle selbst, sondern quasi nur um die Struktur, die ich bei TabellA festgelegt habe. Diese Festlegung habe ich beim Doppelclick auf der TabelleA, Felder hinzufügen, bestimmt. |
AW: Komponente Table kopieren
|
AW: Komponente Table kopieren
Zitat:
Delphi-Quellcode:
var
dm1, dm2: TMyDatamodule; ... begin ... dm1:=TMyDatamodule.Create(self); dm2:=TMyDatamodule.Create(self); dm1.Table1.DoSomething; //Tabelleninstanz des ersten Datenmoduls dm2.Table1.DoSomething; //Tabelleninstanz des zweites Datenmoduls |
AW: Komponente Table kopieren
Zitat:
eine Objektreferent haben kann die mittels Create der Form/des Datenmoduls dann instantiiert wird? Somit brauchst du nur 2 Variablen vom Typ des Datenmoduls und kannst dennen jeweils mittels Create eine Instanz des Datenmoduls erzeugen. Freigeben am Ende dann halt nicht vergessen! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 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