AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ODBC DatenbankReplikation (komplett auslesen, neu schreiben)
Thema durchsuchen
Ansicht
Themen-Optionen

ODBC DatenbankReplikation (komplett auslesen, neu schreiben)

Ein Thema von FlatG · begonnen am 17. Feb 2003 · letzter Beitrag vom 20. Feb 2003
Antwort Antwort
FlatG

Registriert seit: 31. Jan 2003
21 Beiträge
 
Delphi 5 Professional
 
#1

ODBC DatenbankReplikation (komplett auslesen, neu schreiben)

  Alt 17. Feb 2003, 08:42
Ich bin mir nicht ganz sicher, ob HenryK HIER nicht schon ein ähnliches wenn nicht gar das gleiche Problem hat wie ich, jedenfalls hab ich nicht vor das Rad ein zweites Mal zu erfinden und deshalb frage ich ob hier jemand eine Funktion zu bieten hat mit der man ganz automatisch eine Datenbank komplett auslesen und dann als neue Datenbank mit den gleichen Inhalten wieder ausgeben kann. Es soll sich also praktisch um eine KOPIE handeln, nur das die .mdb Datei (in diesem Falle) nicht einfach nur kopiert wird sondern eine tatsächliche Replikation darstellt.

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 )

Ich danke euch schonmal!!
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#2
  Alt 20. Feb 2003, 11:38
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? , 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

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;
  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 18:13 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