Zitat von
Solid01:
folgendes Problem: Ich möchte eine Tabelle aus einer
Access-Datenbank in eine
SQL Server-Datenbank kopieren.
Ich habe schon zwei Wege versucht.
1. Eine CREAT TABLE - SQLAnweisung basteln und diese ausführen. Das scheitert nur leider daran, dass die Informationen, wie z. B. den dDtentyp eines Feldes, in die Anweisung zu bekommen. Denn ich kenne keine Methode, die einem den Datentyp eines Feldes als String zurückgibt.
Für die Zuordnung des Datentyps zur
SQL Datentyp musst du dir eigene Funktionen
bauen:
Delphi-Quellcode:
function SQLDatatypeForSQL_Server(f:TField):string;
begin
case f.Datatype of
ftInteger : result := 'Int';
ftString : Result := Format('varchar(%d)', [f.DataLength]);
...
else
Assert(False, 'Datatype not supported');
end;
if f.Required then
result := Result + ' NOT NULL'
else
result := Result + ' NULL';
end;
function SQLDatatypeForAccess(f:TField):string;
....
Ein weiterer Weg wäre die Verwendung von
ADOX (
ADO Extentions).
Leider sind diese Schnittstellen nicht 100% implementiert, so dass man
manchmal wieder auf
SQL ausweichen muss. (M$ hat wohl keine Bock mehr gehabt)
Das Hinzufügen von
FieldDefs kannst du vergessen, da dies eigentlich
nie richtig funktioniert.