Hallo,
Wie ich in der online Hilfe gelesen habe:
Thema:
<b>ADO-Datenbanktabellen erstellen und umstrukturieren
</b>
Das Erstellen und Löschen von Metadaten in einer ADO-Datenbank durch eine Delphi-Anwendung erfolgt mit Hilfe von SQL. Auch das Umstrukturieren von Tabellen wird mit SQL-Anweisungen durchgeführt. Das Ändern anderer Metadatenobjekte ist nicht immer direkt möglich. Sie müssen vielmehr das Metadatenobjekt löschen und dann durch ein neues mit anderen Attributen ersetzen.......
Das bedeutet, wenn man mit "SELECT * FROM ..." eine unbekannte Feldstruktur erhält und diese in eine neue Tabelle schreiben will,
muß man bei "CRAETE TABLE ...." sich die neue Feldstruktur als STring aus der alten Struktur zusammenbasteln ! ?
Da muss es doch noch eine andere Möglichkeit geben ?
Ich habe es mit der Methode "Clone" und der folgenden Kopierroutine Probiert Basiert auf Herrn Koschs Kopierroutine )
Try
// Schritt 1: Feldstruktur kopieren
with Dest do
begin
Close;
FieldDefs.Clear;
for i := 0 to Source.FieldDefs.Count - 1 do
begin
with FieldDefs.AddFieldDef do
begin
Name := Source.FieldDefs[i].DisplayName;
DisplayName := Source.FieldDefs[i].DisplayName;
Attributes := Source.FieldDefs[i].Attributes;
DataType := Source.FieldDefs[i].DataType;
Precision := Source.FieldDefs[i].Precision;
Required := Source.FieldDefs[i].Required;
Size := Source.FieldDefs[i].Size;
end;
end;
// Schritt 2: RecordSet anlegen
CreateDataSet; // geht nur mit ADODataset
end;
// Schritt 3: Daten kopieren
Dest.open;
with Source do
begin
Open;
First;
while not Eof do
begin
Dest.Append;
for i := 0 to Dest.FieldCount - 1 do
begin
Dest.Fields[i].Value := Fields[i].Value;
end;
try
Dest.Post;
Except
Dest.Cancel;
end;
Next;
end;
end;
// Schritt 4: Kopierte Daten anzeigen
Dest.Active := True;
Except
Result:=False;
end;
In beiden fällen wurden die Daten zwar kopiert, aber nicht in die Datenbank geschrieben !
Bei "CREATEDATASET" geht die Verbindung zur DB verloren.
Hat jemand eine Idee, wie es einfacher geht ?
Vielen Dank
Wie ich in der online Hilfe gelesen habe:
Thema:
<b>ADO-Datenbanktabellen erstellen und umstrukturieren
</b>
Das Erstellen und Löschen von Metadaten in einer ADO-Datenbank durch eine Delphi-Anwendung erfolgt mit Hilfe von SQL. Auch das Umstrukturieren von Tabellen wird mit SQL-Anweisungen durchgeführt. Das Ändern anderer Metadatenobjekte ist nicht immer direkt möglich. Sie müssen vielmehr das Metadatenobjekt löschen und dann durch ein neues mit anderen Attributen ersetzen.......
Das bedeutet, wenn man mit "SELECT * FROM ..." eine unbekannte Feldstruktur erhält und diese in eine neue Tabelle schreiben will,
muß man bei "CRAETE TABLE ...." sich die neue Feldstruktur als STring aus der alten Struktur zusammenbasteln ! ?
Da muss es doch noch eine andere Möglichkeit geben ?
Ich habe es mit der Methode "Clone" und der folgenden Kopierroutine Probiert Basiert auf Herrn Koschs Kopierroutine )
Try
// Schritt 1: Feldstruktur kopieren
with Dest do
begin
Close;
FieldDefs.Clear;
for i := 0 to Source.FieldDefs.Count - 1 do
begin
with FieldDefs.AddFieldDef do
begin
Name := Source.FieldDefs[i].DisplayName;
DisplayName := Source.FieldDefs[i].DisplayName;
Attributes := Source.FieldDefs[i].Attributes;
DataType := Source.FieldDefs[i].DataType;
Precision := Source.FieldDefs[i].Precision;
Required := Source.FieldDefs[i].Required;
Size := Source.FieldDefs[i].Size;
end;
end;
// Schritt 2: RecordSet anlegen
CreateDataSet; // geht nur mit ADODataset
end;
// Schritt 3: Daten kopieren
Dest.open;
with Source do
begin
Open;
First;
while not Eof do
begin
Dest.Append;
for i := 0 to Dest.FieldCount - 1 do
begin
Dest.Fields[i].Value := Fields[i].Value;
end;
try
Dest.Post;
Except
Dest.Cancel;
end;
Next;
end;
end;
// Schritt 4: Kopierte Daten anzeigen
Dest.Active := True;
Except
Result:=False;
end;
In beiden fällen wurden die Daten zwar kopiert, aber nicht in die Datenbank geschrieben !
Bei "CREATEDATASET" geht die Verbindung zur DB verloren.
Hat jemand eine Idee, wie es einfacher geht ?
Vielen Dank
Comment