Hallo,
schau mal bitte hier
http://support.microsoft.com/kb/257819/de, ob Dir das eventuell weiterhelfen kann.
Was Du mal probieren könntest (ich weiß allerdings nicht, ob das bei Excel überhaupt unterstützt wird):
Delphi-Quellcode:
ADODataSetExcelVV.CommandText:= 'SELECT
Cast(Spaltenname1 As VarChar(256)) As Spaltenname1,
Cast(Spaltenname2 As VarChar(256)) As Spaltenname1,
...
FROM [' + sTableName + ']';
Damit könnte die Möglichkeit bestehen, im Select den Datentyp vorzugeben.
Was ich nicht weiß: Kann man bei Excel die Spaltenname abfragen? Es könnte eventuell mit
Delphi-Quellcode:
Var
slFieldList : TStringList;
sCommandText : String;
i : Integer;
begin
slFieldList := TStringlist.Create;
sCommandText := select ';
...
ADODataSetExcelVV.GetFieldNames(slFieldList);
for i := 0 to slFieldList.Count - 1 do begin
sCommandText := sCommandText + 'Cast(slFieldList[i] + ' as VarChar(256)) As ' + slFieldList[i] + ', ';
end;
sCommandText := sCommandText + FROM [' + sTableName + ']';
ADODataSetExcelVV.Open;
...
end;
funktionieren.
Dashier ist nicht getestet, sondern nur mal so hingeschrieben, in der Hoffnung, dass es bei der Problemlösung behilflich sein könnte.