Importar Excel para SQL Server 2012 com Delphi
05/02/2015
0
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:
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,
Segue o meu código para importar abaixo:
var 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,
Eduardo Oliveira
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)