![]() |
ODBC DatenbankReplikation (komplett auslesen, neu schreiben)
Ich bin mir nicht ganz sicher, ob HenryK
![]() Die Funktion muss also 1. Alle Tabellennamen automatisch auslesen können 2. Die Datensätze komplett auslesen können (3.) Die Möglichkeit bieten das der Benutzer die ODBC Datenbank selbst über eine ComboBox auswählen kann ?! Rekursivität ist wohl nicht nötig, aber was sagt ihr zu 3.? ist das möglich, dass der Benutzer aussucht von welcher ODBC Datenbank eine Replikation erstellt werden soll, gibts da vielleicht nen befehl für, der die ODBC Datenbanken auflistet? (bestimmt :D ) Ich danke euch schonmal!! |
Hallo FlatG 8)
Wie mir scheint hast Du hier mächtig vieles durcheinander gebracht ... Wenn schon, dann die Reihenfolge Deiner Aufgabe müsste so aussehen: 1. Die Möglichkeit bieten das der Benutzer die ODBC Datenbank selbst über eine ComboBox auswählen kann ?! 2. Alle Tabellennamen automatisch auslesen können 3. Die Datensätze komplett auslesen können Ich weiß beim besten willen nicht was Du unter ODBC Datenbank meinst. Auch in Sachen Rekursivität bin ich hier überfordert (wüsste ich leider nicht in welchem Zusammenhang zu Deiner Aufgabe diese Bemerkung steht). Man kann z.B. via Delphi buchstäblich alles über eine Tabelle bzw. Felder Definitionen, Indizes etc... auslesen und sich dann ein SQL- Script zu recht basteln und ausführen. Dies ist aber sehr umfangreiche und schwierige Aufgabe. Da ich mich schon mit dem Problem beschäftig habe weiß ich (wie ich denke) wovon ich spreche. Ich frage mich allerdings an dieser Stelle wozu braucht man so was? :mrgreen: , da normalerweise verfügt man schon über ein Datebank-SQL-Script... es seitdem man möchte fremde Datenbanken samt Inhalten anzapfen...? __________________________ Fazit: Die Aufgabe ich durchaus machbar... verlangt aber umfangreiches Wissen in Sachen Delphi und DB. Allerdings z.B. schon bei der Trigger müsstest du auf die SQL-System Tabellen zugreifen :shock: Da ich derzeit unter chronischem Zeit-Mangel leide zeige ich Dir für (Dein) guten Anfang wie du die ODBC- Datenquellen auflistet. Gruß Paul Jr.
Code:
xGetRegistryKey(HKEY_LOCAL_MACHINE, '\Software\ODBC\ODBC.INI\ODBC Data Sources', ListBox1); (…) (* Die Funktion xGetRegistryKey liefert (in dem Sender), anhand des Hauptschlüssels für das TRegistry-Objekt (hier sRootKey --> z.B.: HKEY_LOCAL_MACHINE) und dem Registry-Eintrag Verzeichnisses (sRootPath), alle Einträge zurück die sich in dem so beschriebenem Schlüssel befinden. Als Sender kann man hier TMemo, TListBox, TComboBox und eine TStringList eingeben. Allerdings muss eine StringListe vorher erzeugt werden. Bei erfolgreicher Ausführung von Registry.OpenKey hat diese Funktion den Rückgabe Wert = TRUE _________________________________ PROGRAMMIERUNG: Hier ein Beispiel wie man alle Datenquellen-ODBC-Einträge ablesen kann: 1.) Zuweisung für TListBox xGetRegistryKey(HKEY_LOCAL_MACHINE, '\Software\ODBC\ODBC.INI\ODBC Data Sources', ListBox3); 2.) Hier werden die Ergebnisse an eine TSTringList übergeben. Nun dann kann man solche StringListe belibig weiter verwenden. TRY StringList := TStringList.Create; xGetRegistryKey(HKEY_LOCAL_MACHINE, '\Software\ODBC\ODBC.INI\ODBC Data Sources', StringList); ListBox3.Items.AddStrings(StringList); FINALLY StringList.Free; END; *) FUNCTION xGetRegistryKey(sRootKey : HKey; sRootPath : STRING; Sender : TObject) : Boolean; VAR Registry: TRegistry; BEGIN Result := FALSE; Registry := NIL; IF Sender Is TListBox THEN (Sender As TListBox).Items.Clear; IF Sender Is TComboBox THEN (Sender As TComboBox).Items.Clear; IF Sender Is TMemo THEN (Sender As TMemo).Clear; TRY // Object für die Regiestrierdatenbank von Windows wird erzeugt Registry := TRegistry.Create; // Die Eigenschaft bestimmt in einer Anwendung den Hauptschlüssel Registry.RootKey := sRootKey; // für das TRegistry-Objekt. // Die Methode OpenKey öffnet den angegebenen Schlüssel. IF NOT Registry.OpenKey(sRootPath, FALSE) THEN Exit; IF Sender Is TListBox THEN BEGIN Registry.GetValueNames((Sender As TListBox).Items); (Sender As TListBox).Sorted := TRUE; END; IF Sender Is TComboBox THEN BEGIN Registry.GetValueNames((Sender As TComboBox).Items); (Sender As TComboBox).Sorted := TRUE; END; IF Sender Is TMemo THEN Registry.GetValueNames((Sender As TMemo).Lines); IF Sender Is TStringList THEN BEGIN Registry.GetValueNames(Sender As TStringList); (Sender As TStringList).Sorted := TRUE; END; Result := TRUE; FINALLY Registry.Free; END; END; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:22 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