Array
(
)

Importar Excel para SQL Server 2012 com Delphi

Eduardo Oliveira
   - 05 fev 2015

Pessoal, depois de anos sem programar, basicamente somente na escola e faculdade, resolvi desenvolver um aplicativo para ajudar no trabalho. Estou encontrando um problema para Importar uma planilha em Excel para o SQL.
Segue o meu código para importar abaixo:
#Códigovar
Excel, sheet: OleVariant;
i: Integer;
arquivo, Location: string;
DateLoc: TDateTime;
begin
i:=3;
if opendialog1.Execute then
begin
arquivo:=opendialog1.FileName;
Excel:= CreateOleObject('Excel.Application'); //Crio o objeto que gerencia o arquivo excel
Excel.Visible:=False;
Excel.DisplayAlerts:=False;
Excel.WorkBooks.Open(arquivo); //Abro o arquivo
sheet:= Excel.WorkSheets[1]; //Pego a primeira planilha do arquivo
while sheet.cells[i,1].Text <> '' do
begin
dm.SQLDataSet1.Close;
dm.SQLDataSet1.CommandText := 'Select * from TID where Barcode = ''' + Excel.WorkSheets[1].cells[i, 1].Text + '''';
dm.SQLDataSet1.Open;
if dm.SQLDataSet1.RecordCount = 0 then
begin
dm.SQLDataSet1.Close;
dm.SQLDataSet1.Open;
dm.SQLDataSet1.Last;
dm.SQLDataSet1.Insert;
dm.SQLDataSet1.FieldByName('Barcode').AsString := Excel.WorkSheets[1].Cells[i, 1];
dm.SQLDataSet1.FieldByName('Description').AsString := Excel.WorkSheets[1].Cells[i, 2];
if not (Excel.WorkSheets[1].Cells[i, 4].Text='') then
begin
label1.Caption:= Excel.WorkSheets[1].Cells[i, 4].Text;
dm.SQLDataSet1.FieldByName('Date Change Location').AsDatetime:= strtodate(label1.Caption);
end;
if not (Excel.WorkSheets[1].Cells[i, 5].Text='') then
begin
dm.SQLDataSet1.FieldByName('Tape Assigned').Asdatetime := strtodatetime(Excel.WorkSheets[1].Cells[i, 5].Text);
end;
if not (Excel.WorkSheets[1].Cells[i, 6].Text='') then
begin
dm.SQLDataSet1.FieldByName('Tape Returned').Asdatetime := strtodatetime(Excel.WorkSheets[1].Cells[i, 6].Text);
end;
dm.SQLDataSet1.Post;
dm.SQLDataSet1.Close;
end;
i:= i+1;
end;
//Fecho a planilha
Excel.WorkBooks.Close;
end;
showmessage('Done');
end;


O problema que estou encontrando, é que a coluna Location no arquivo em excel é um combobox e ele retorna erro.
Colunas Date Change Location, Tape Assigned e Tape Returned, são datas, e retorna o mesmo erro.
Todos os erros retornam como: Operação de várias etapas gerou erros. Verifique cada valor de status.
No SQL o campo Location ja configurei como nvarchar(50), text, e não tive nenhum sucesso. Os campos de data estão como datetime.
Alguém do fórum poderia ajudar a achar uma solução?
Obrigado,