Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.433 Beiträge
 
Delphi 7 Professional
 
#16

AW: Paradox ohne BDE

  Alt 22. Jul 2019, 12:27
Für Access braucht man keine Kompetenz

Die Oberfläche oder sonst irgendwas vom "optischen" Access wird nicht benötigt.

Die Tabellen kann man (auch aus Delphi heraus) per SQL erstellen.

Wenn Du die Tabellen (wie oben beschrieben per TBatchMove) kopierst, brauchst Du nicht mal das.

In dem Fall benötigst Du einen ODBC-Treiber für die Access-DB. Die Access-DB kann man über die ODBC-Verwaltung von Windows erstellen lassen, es werden letztlich nur die Treiber für Access benötigt. Die Software Access (also die Oberfläche) ist nicht erforderlich.

Die BDE kann dann darauf einen Alias machen.

TBatchMove benötigt dann den Alias auf die Paradoxtabelle und den Alias auf die Access-DB. Das Erstellen der Tabellen in der Access-DB erfolgt automatisch (mode = batCopy).

Beim Kopieren der Daten per TBatchMove ist es letztlich aber egal, für welches Zieldatenbanksystem Du dich entscheidest.

Benötigt wird halt die BDE (für Paradox und TBatchMove) und ein ODBC-Treiber für die Zieldatenbank, der in die BDE per Alias eingebunden wird. (Wenn ich mich recht erinnere, erkennt die BDE aber die eingerichteten ODBC-Treiber selbständig, habe gerade bei mir mal nachgeschaut: In der BDE-Verwaltung sind alle eingerichteten ODBC-Treiber als BDE-Alias sichtbar.)

Grob könnte sowas schon ausreichen, sofern es sich um Tabellen "mit handelsüblichen Spalten" handelt, also Integer, Float, Strings, ob und wie das mit Blobs funktioniert weiß ich nicht, könnte aber auch so einfach gehen.

Delphi-Quellcode:
// tbSource und tbDestination = TTable
// bm = TBatchMove
  tbSource.Close;
  tbDestination.Close;
  tbDestination.FieldDefs.Clear;
  tbDestination.IndexDefs.Clear;
  tbSource.DatabaseName := 'Paradox-Alias im Objektinspektor auswählen';
  tbDestination.DatabaseName := 'ODBC-Alias auf Access im Objektinspektor auswählen';
  tbSource.TableName := 'paradox.db';
  tbDestination.TableName := 'paradox'; // nur der Tabellenname ohne Dateiendung.
  bm.Mappings.Clear;
  bm.Mode := batCopy;
  bm.Execute;
Arbeitet Ihr im Programm irgendwo mit SQL? Wenn nein, könnte nach dem Kopieren der Daten eine Änderung der Tabellen von TTable nach TAdoTable bzw. von TQuery nach TAdoQuery per global Change in den DFM-Dateien bzw. den PAS-Dateien (wie von Jobo beschrieben) ausreichen.

SQLs müssen ggfls. in der Syntax angepasst werden.

Geändert von Delphi.Narium (22. Jul 2019 um 13:45 Uhr) Grund: Quelltextbeispiel etwas verändert.
  Mit Zitat antworten Zitat