AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Komponente Table kopieren

Komponente Table kopieren

Ein Thema von MarcRB75 · begonnen am 17. Dez 2022 · letzter Beitrag vom 20. Dez 2022
Antwort Antwort
MarcRB75

Registriert seit: 31. Mai 2018
Ort: Hof/Saale
51 Beiträge
 
Delphi XE2 Starter
 
#1

Komponente Table kopieren

  Alt 17. Dez 2022, 18:44
Datenbank: ABS • Version: 7.93 • Zugriff über: Formular
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.
Marc
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Komponente Table kopieren

  Alt 19. Dez 2022, 09:05
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
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
679 Beiträge
 
Delphi 12 Athens
 
#3

AW: Komponente Table kopieren

  Alt 19. Dez 2022, 09:36
pack Dir die Table Komponente auf ein Datenmodul und erzeuge eine zweite Instanz des Datenmoduls....
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.497 Beiträge
 
Delphi 7 Professional
 
#4

AW: Komponente Table kopieren

  Alt 19. Dez 2022, 12:47
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.139 Beiträge
 
Delphi 12 Athens
 
#5

AW: Komponente Table kopieren

  Alt 19. Dez 2022, 14:04
Zitat:
Tabelle kopieren
Wilst du nun den Inhalt der Tabelle kopieren, also einer DB in die Andere,
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
MarcRB75

Registriert seit: 31. Mai 2018
Ort: Hof/Saale
51 Beiträge
 
Delphi XE2 Starter
 
#6

AW: Komponente Table kopieren

  Alt 20. Dez 2022, 00:24
Vielen lieben Dank für Eure Antworten.


pack Dir die Table Komponente auf ein Datenmodul und erzeuge eine zweite Instanz des Datenmoduls....

Hört sich ja schon mal sehr interessant an.
mhh... aber was genau meinst Du mit "zweite Instanz des Datenmoduls" erstellen?


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
Ich meinte mit der Tabelle-Kopie die Festlegung der einzelnen Felder, also mit FieldKind (fkData, fkLookup... usw.)
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.
Marc

Geändert von MarcRB75 (20. Dez 2022 um 00:26 Uhr)
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.207 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Komponente Table kopieren

  Alt 20. Dez 2022, 08:32
Vielleicht hilft das:
http://www.delphigroups.info/2/af/37581.html
https://docwiki.embarcadero.com/Libr...le.CreateTable
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
679 Beiträge
 
Delphi 12 Athens
 
#8

AW: Komponente Table kopieren

  Alt 20. Dez 2022, 10:46
pack Dir die Table Komponente auf ein Datenmodul und erzeuge eine zweite Instanz des Datenmoduls....
Hört sich ja schon mal sehr interessant an.
mhh... aber was genau meinst Du mit "zweite Instanz des Datenmoduls" erstellen?
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
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.958 Beiträge
 
Delphi 12 Athens
 
#9

AW: Komponente Table kopieren

  Alt 20. Dez 2022, 16:42
Vielen lieben Dank für Eure Antworten.


pack Dir die Table Komponente auf ein Datenmodul und erzeuge eine zweite Instanz des Datenmoduls....

Hört sich ja schon mal sehr interessant an.
mhh... aber was genau meinst Du mit "zweite Instanz des Datenmoduls" erstellen?
Dir ist bewußt, dass man Forms und genauso auch Datenmodule auch nicht automatisch erzeugen lassen kann sondern zur Laufzeit
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!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:00 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