Zitat von
WS1976:
Hallo,
alzaimar: zu deinen Bemerkungen gebe ich hier keinen Kommentar.
ich hatte ganz klar beschrieben was ich machen wollte, nämlich eine Tabelle kopieren, sonst nichts.
Lösung: select * into Tabelle2 from Tabelle1
Wenn mir noch jemand sagt wie man das ohne Inhalte macht bin ich zufrieden.
Danke
Entspanne dich.
Das war leider nicht so klar, wie du meinst. Eine Tabelle hast du hier nämlich nicht kopiert, sondern Daten von Tab A nach Tab B geschoben. Ein Kopieren impliziert die Neuanlage der Tabelle(nstruktur), und da hat alzaimar dann recht, da müsste man dann erst ein Kommando zum Erstellen aufbauen.
Hier ein bisserl Code für den Aufbau (evtl. DB2-spezifisch und durchaus noch zu verbessern):
Delphi-Quellcode:
procedure GenerateDDLOfDataset(Dataset: TDataset; DDL: TStrings; Options: TGenerateOptions);
var i: integer;
var Str:
string;
var Field: TField;
begin
//Create-Befehl
DDL.Clear;
DDL.Add('
CREATE TABLE "SCHEMA"."TABELLE"');
DDL.Add('
(');
//Alle Felder auflisten
for i := 0
to Dataset.Fields.Count - 1
do
begin
//Feldnamen
Field := Dataset.Fields[i];
//nicht sichtbare Felder ignorieren?
if not Field.Visible
and (goIgnoreUnvisibleFields
in Options)
then
Continue;
Str := '
"' + Uppercase(Field.FieldName) + '
"';
//Feldtyp
if Field
is TIntegerField
then
Str := Str + '
integer'
else
if Field
is TFloatField
then
Str := Str + '
double'
else
if Field
is TStringField
then
Str := Str + '
varchar(' + IntToStr(TStringfield(Field).Size) + '
)'
else
if Field
is TDateField
then
Str := Str + '
date'
else
if Field
is TTimeField
then
Str := Str + '
time'
else
if Field
is TDateTimeField
then
Str := Str + '
timestamp'
else
if Field
is TSQLTimeStampField
then
Str := Str + '
timestamp'
else
if Field
is TMemoField
then
Str := Str + '
clob(???) logged'
else
if Field
is TBlobField
then
Str := Str + '
blob(???) logged'
else
raise Exception.CreateFmt('
Feldtyp für Klasse %s unbekannt.', [Field.ClassName]);
//nicht null?
if Field.Required
then
Str := Str + '
not null';
//Letztes Feld? Kein Komma
if i < Dataset.Fields.Count - 1
then
Str := Str + '
,';
DDL.Add(Str);
end;
DDL.Add('
)');
DDL.Add('
IN "USERSPACE1";');
end;
Cu,
Udontknow