rodar não porque vai dar um monte de erro, mas presta atenção na sequencia
de código que começa com o comentario "// Começa a coleta de dados dos
valores das atividades da planília" e vai até o "// para pular coluna de
valor do serviço", é neste intervalo que eu pego os dados da planilha que
deve estar em formato texto separado por tabulações.
procedure TfmpNumPedido.btnImportClick(Sender: TObject);
const
// CMEDICAOMATERIAL = '2.1.14';
// CMEDICAOSERVICO = '2.1.09';
CMEDICAOMATERIAL = '2.1.17';
CMEDICAOSERVICO = '2.1.16';
// CMEDICAOMATERIAL = '2.1.14';
// CMEDICAOSERVICO = '2.1.09';
CFATURAMENTOMATERIAL = '2.1.17';
CFATURAMENTOSERVICO = '2.1.16';
var
fb : file of byte;
fi, fo, fr : textfile;
line,
preco,
DadNumMedicao,
DadNumNota,
DadNumItem,
DadNumPedido,
DadPedItem,
DadPedValor,
BackupName,
strLocate,
strSelMov,
strMov,
fname : string;
(*$IFDEF DEBUG*)
LinhaLog: String;
(*$ENDIF*)
nprod, nrejected, nerror,
iLenghtLine, i, j: integer;
idmov : integer;
done : boolean;
qryItensMov,
qryMov, qrySelMov, qryLocate : TQuery;
begin
if eFileName.Text = '' then
begin
MessageDlg('Você deverá selecionar um arquivo para proceder com a
importação', mtError, [mbOk], 0);
eFileName.Setfocus;
Exit;
end;
btnAbort.Visible := True;
btnImport.Visible := False;
DecimalSeparator := '.';
ProgressBarImport.Min := 0;
ProgressBarImport.Max := 0;
ProgressBarImport.Position := 1;
codfilial := Param.Filial;
StopProcess := False;
(*$IFDEF DEBUG*)
assignfile(f, 'c:\temp\tstimpnumpedido.txt');
rewrite(f);
writeln(f, 'Numero de pedidos importados');
writeln(f, 'Data da importação: ' + DateToStr(Now));
writeln(f,'');
(*$ENDIF*)
try
ProgressBarImport.position := 0;
assignfile(fb, eFileName.text);
FileMode := 0;
reset(fb);
ProgressBarImport.max := FileSize(fb);
closefile(fb);
except
Exit;
end;
try
assignfile(fi, eFileName.text);
{$i-} Reset(fi); {$i+}
if ioresult <> 0 then
begin
MessageDlg('Erro ao abrir arquivo ' + eFileName.text + 'Erro: ' +
Exception(exceptobject).message, mtError, [mbOk], 0);
exit;
end;
fmpNumPedido.Caption := 'Importanto arquivo ' + eFileName.text;
CombStatusPlan.Enabled := False;
chkMedicaoesFat.Enabled := False;
fname := eFileName.text;
i := length(fname);
while (i > 1) and (fname[i] <> '.') do
dec(i);
fname := copy(fname, 1, i);
// and SERIE = 'MD'
if iStatusPlan = 0 then
begin
strLocate := 'select CAMPOLIVRE2 from TMOV where CODFILIAL =
:CODFILIAL and CODCOLIGADA = :CODCOLIGADA and CODTMV in ("' +
CMEDICAOSERVICO + '","' + CMEDICAOMATERIAL + '") and SERIE = "MD" and
NUMEROMOV = :NUMEROMOV';
if chkMedicaoesFat.Checked then
strSelMov := 'select IDMOV from TMOV where CODFILIAL = :CODFILIAL
and CODCOLIGADA = :CODCOLIGADA and CODTMV in ("' + CMEDICAOSERVICO + '","' +
CMEDICAOMATERIAL + '") and SERIE = "MD" and NUMEROMOV = :NUMEROMOV and
STATUS = "F"'
else
strSelMov := 'select IDMOV from TMOV where CODFILIAL = :CODFILIAL
and CODCOLIGADA = :CODCOLIGADA and CODTMV in ("' + CMEDICAOSERVICO + '","' +
CMEDICAOMATERIAL + '") and SERIE = "MD" and NUMEROMOV = :NUMEROMOV and
STATUS = "A"';
end
else
begin
strLocate := 'select CAMPOLIVRE2 from TMOV where CODFILIAL =
:CODFILIAL and CODCOLIGADA = :CODCOLIGADA and CODTMV in ("2.2.01", "2.2.15")
and SERIE in ("U", "1") and NUMEROMOV = :NUMEROMOV';
strSelMov := 'select IDMOV from TMOV where CODFILIAL = :CODFILIAL and
CODCOLIGADA = :CODCOLIGADA and CODTMV in ("2.2.01", "2.2.15") and SERIE in
("U", "1") and NUMEROMOV = :NUMEROMOV and STATUS = "F"';
end;
qryLocate := TQuery.Create(nil);
qryLocate.DatabaseName := CorporeRM.DatabaseName;
qryLocate.sql.Clear;
qryLocate.sql.Add(strLocate);
qryLocate.Prepare;
qrySelMov := TQuery.Create(nil);
qrySelMov.DatabaseName := CorporeRM.DatabaseName;
qrySelMov.sql.Clear;
qrySelMov.sql.Add(strSelMov);
qrySelMov.Prepare;
qryMov := TQuery.Create(nil);
qryMov.DatabaseName := CorporeRM.DatabaseName;
qryMov.sql.Clear;
if iStatusPlan = 0 then
qryMov.sql.Add('update TMOV set CAMPOLIVRE2 = :NUMPEDIDO where SERIE =
"MD" and CODFILIAL = :CODFILIAL and CODCOLIGADA = :CODCOLIGADA and IDMOV =
:IDMOV')
else
qryMov.sql.Add('update TMOV set CAMPOLIVRE2 = :NUMPEDIDO where SERIE
in ("U", "1") and CODFILIAL = :CODFILIAL and CODCOLIGADA = :CODCOLIGADA and
IDMOV = :IDMOV');
qryMov.Prepare;
qryItensMov := TQuery.Create(nil);
qryItensMov.DatabaseName := CorporeRM.DatabaseName;
qryItensMov.sql.Clear;
qryItensMov.sql.Add('update TITMMOV set CAMPOLIVRE = :ITEM where
NUMEROSEQUENCIAL = :NUMEROSEQMOV and CODCOLIGADA = :CODCOLIGADA and IDMOV =
:IDMOV');
qryItensMov.Prepare;
readln(fi, line);
// Começa a coleta de dados dos valores das atividades da planília
while (not done) and (not Eof(fi)) and (not StopProcess) do
begin
readln(fi, line);
iLenghtLine := length(Line);
if (line <> '') then
begin
i := 0;
j := 0;
DadNumMedicao := '';
DadNumNota := '';
DadNumItem := '';
DadNumPedido := '';
DadPedItem := '';
preco := '';
DadPedValor := '0';
btnAbort.Visible := True;
btnImport.Visible := False;
while i <= iLenghtLine do
begin
{
while (i <= iLenghtLine) and (line[i] <> #$09) do // Pula o campo
Código da Atividades
inc(i);
while line[i] = #$09 do
inc(i);
while (i <= iLenghtLine) and (line[i] <> #$09) do // Pula o campo
Código da Localidade
inc(i);
while line[i] = #$09 do
inc(i);
while (i <= iLenghtLine) and (line[i] <> #$09) do // Pula o campo
Descrição
inc(i);
while line[i] = #$09 do
inc(i);
}
while (i <= iLenghtLine) and (line[i] <> #$09) do // Numero do
movimento/Medição
begin
if line[i] <> '' then DadNumMedicao := DadNumMedicao + line[i];
inc(i);
end;
while line[i] = #$09 do
inc(i);
//
if iStatusPlan = 1 then
begin
while (i <= iLenghtLine) and (line[i] <> #$09) do // Numero
da Nota fiscal (somente para importação de pedidos já faturados)
begin
if line[i] <> '' then DadNumNota := DadNumNota + line[i];
inc(i);
end;
while line[i] = #$09 do
inc(i);
end;
//
while (i <= iLenghtLine) and (line[i] <> #$09) do // Sequência
do ítem
begin
if line[i] <> '' then DadNumItem := DadNumItem + line[i];
inc(i);
end;
while line[i] = #$09 do
inc(i);
while (i <= iLenghtLine) and (line[i] in ['0'..'9', ',', '.',' '])
do // Valor do ítem
begin
if line[i] in ['0'..'9',','] then DadPedValor := DadPedValor +
line[i];
inc(i);
end;
while line[i] = #$09 do
inc(i);
while (i <= iLenghtLine) and (line[i] <> #$09) do // Número do
pedido PC
begin
if line[i] <> '' then DadNumPedido := DadNumPedido + line[i];
inc(i);
end;
while line[i] = #$09 do
inc(i);
while (i <= iLenghtLine) and (line[i] <> #$09) do // Número do
ítem do pedido PC
begin
if line[i] <> '' then DadPedItem := DadPedItem + line[i];
inc(i);
end;
while line[i] = #$09 do
inc(i);
inc(i); // para pular coluna de valor do serviço
inc(j);
Application.ProcessMessages;
end;
if iStatusPlan = 0 then
DadNumMedicao := SomenteDigitos(DadNumMedicao,6)
else
DadNumNota := SomenteDigitos(DadNumNota,6);
Label5.Caption := '';
try
qryLocate.Close;
qryLocate.ParamByName('CODFILIAL').AsInteger := codfilial;
qryLocate.ParamByName('CODCOLIGADA').AsInteger :=
CorporeRM.Coligada;
if iStatusPlan = 0 then
qryLocate.ParamByName('NUMEROMOV').AsString := DadNumMedicao
else
qryLocate.ParamByName('NUMEROMOV').AsString := DadNumNota;
qryLocate.Open;
begin
try
qrySelMov.ParamByName('CODFILIAL').AsInteger := codfilial;
qrySelMov.ParamByName('CODCOLIGADA').AsInteger :=
CorporeRM.Coligada;
if iStatusPlan = 0 then
qrySelMov.ParamByName('NUMEROMOV').AsString := DadNumMedicao
else
qrySelMov.ParamByName('NUMEROMOV').AsString := DadNumNota;
qrySelMov.Open;
if not qrySelMov.Eof then
begin
idmov := qrySelMov.FieldByName('IDMOV').AsInteger;
Label5.Caption := DadNumPedido;
//if qryLocate.FieldByName('CAMPOLIVRE2').AsString <>
DadNumPedido then
//begin
try
qryMov.ParamByName('CODFILIAL').AsInteger := codfilial;
qryMov.ParamByName('NUMPEDIDO').AsString :=
DadNumPedido;
qryMov.ParamByName('CODCOLIGADA').AsInteger :=
CorporeRM.Coligada;
qryMov.ParamByName('IDMOV').AsInteger := idmov;
//
(*$IFDEF DEBUG*)
if iStatusPlan = 0 then
LinhaLog := 'Medição lida: ' + DadNumMedicao + ';
Numero do PC gerado: ' + DadNumPedido
else
LinhaLog := 'Nota fiscal lida: ' + DadNumNota + ';
Numero do PC gerado: ' + DadNumPedido;
(*$ENDIF*)
qryMov.ExecSQL;
//end;
try
//
if iStatusPlan = 0 then
Label2.Caption := 'Importando o item ' + DadPedItem +
' da Medição nº: ' + DadNumMedicao
else
Label2.Caption := 'Importando o item ' + DadPedItem +
' da Nota Fiscal nº: ' + DadNumNota;
//
qryItensMov.ParamByName('ITEM').AsString := DadPedItem;
qryItensMov.ParamByName('NUMEROSEQMOV').AsString :=
DadNumItem;
qryItensMov.ParamByName('CODCOLIGADA').AsInteger :=
CorporeRM.Coligada;
qryItensMov.ParamByName('IDMOV').AsInteger := idmov;
(*$IFDEF DEBUG*)
LinhaLog := LinhaLog + '; Número do ítem PC gerado: ' +
DadPedItem;
(*$ENDIF*)
qryItensMov.ExecSQL;
except
nerror := 2501;
if MessageDlg('Ocorreu um erro durante a importação dos
dados. O arquivo de importação pode estar com algum erro ou a conexão com o
banco de dados foi perdida durante este processo. É recomendável você
cancelar esta importação e revisar o arquivo de origem.' + #$0a + #$0d +
#$0a + #$0d + exception(exceptobject).Message + #$0a + #$0d + #$0a + #$0d +
'Deseja prosseguir com a importação? ', mtError, [mbYes, mbNo], 0) = mrNo
then
begin
StopProcess := True;
qryItensMov.Close;
end;
(*$IFDEF DEBUG*)
LinhaLog := LinhaLog + exception(exceptobject).Message;
(*$ENDIF*)
end;
except
nerror := 2501;
if MessageDlg('Ocorreu um erro durante a importação dos
dados. O arquivo de importação pode estar com algum erro ou a conexão com o
banco de dados foi perdida durante este processo. É recomendável você
cancelar esta importação e revisar o arquivo de origem.' + #$0a + #$0d +
#$0a + #$0d + exception(exceptobject).Message + #$0a + #$0d + #$0a + #$0d +
'Deseja prosseguir com a importação? ', mtError, [mbYes, mbNo], 0) = mrNo
then
begin
StopProcess := True;
qryMov.Close;
end;
(*$IFDEF DEBUG*)
LinhaLog := exception(exceptobject).Message;
(*$ENDIF*)
end;
end;
qrySelMov.Close;
except
nerror := 2502;
if MessageDlg('Ocorreu um erro ao conectar com o banco de
dados. A conexão pode ter sido perdida devido a um erro de rede. É
recomendável você cancelar esta importação e revisar a conexão com a base de
dados.'+ #$0a + #$0d + #$0a + #$0d + exception(exceptobject).Message + #$0a
+ #$0d + #$0a + #$0d + 'Deseja prosseguir com a importação?', mtError,
[mbYes, mbNo], 0) = mrNo then StopProcess := True;
end;
end;
except
nerror := 2502;
if MessageDlg('Ocorreu um erro ao conectar com o banco de dados. A
conexão pode ter sido perdida devido a um erro de rede. É recomendável você
cancelar esta importação e revisar a conexão com a base de dados.'+ #$0a +
#$0d + #$0a + #$0d + exception(exceptobject).Message + #$0a + #$0d + #$0a +
#$0d + 'Deseja prosseguir com a importação?', mtError, [mbYes, mbNo], 0) =
mrNo then StopProcess := True;
end;
end;
(*$IFDEF DEBUG*)
writeln(f, LinhaLog);
(*$ENDIF*)
ProgressBarImport.StepBy(iLenghtLine + 2);
Application.ProcessMessages;
end;
finally
MessageDlg('Importação finalizada', mtInformation, [mbOk], 0);
//
CloseFile(fi);
qryMov.UnPrepare;
qryItensMov.UnPrepare;
if nerror <> 2502 then qrySelMov.UnPrepare;
FreeAndNil(qryMov);
FreeAndNil(qryItensMov);
FreeAndNil(qrySelMov);
btnAbort.Visible := False;
btnImport.Visible := True;
CombStatusPlan.Enabled := True;
chkMedicaoesFat.Enabled := True;
ProgressBarImport.Position := 0;
Label5.Caption := '';
Label2.Caption := '';
//
(*$IFDEF DEBUG*)
closefile(f);
(*$ENDIF*)
//
if not StopProcess then
begin
//
BackupName := ExtractFileName(eFileName.text);
BackupName := ChangeFileExt(BackupName, '.old');
if not RenameFile(eFileName.text, BackupName) then
raise Exception.Create('Não foi possível renomear o arquivo já
importado!');
//
end;
//
end;
end;
[]s
Walter Alves Chagas Junior
Projeto e desenvolvimento de sistemas
Telemont Engenharia de telecomunicações S/A
Belo Horizonte - MG - Brasil
[EMAIL PROTECTED]
Fone: (31) 3389-8215 Fax: (31) 3389-8200
-----Mensagem original-----
De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
nome de MarcioCC©
Enviada em: terça-feira, 23 de maio de 2006 10:06
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: [delphi-br]Itabyte®-Importar do Excel p/ Delphi - Obrigado
Se você puder me enviar agradeça muito , outra pergunta :
Por acaso se sabe como faço via delphi para bloquear o msn e alguns sites da
net como orkut, playboy , sex e tal ??
JESUS TE AMA !!!
----- Original Message -----
From: "Walter Alves Chagas Junior" <[EMAIL PROTECTED]>
To: <delphi-br@yahoogrupos.com.br>
Sent: Monday, May 22, 2006 11:01 AM
Subject: RES: [delphi-br]Itabyte®-Importar do Excel p/ Delphi - Obrigado
Marcio, eu faço muito disto aqui mas eu converto a planílha primeiro pra TXT
separado por tabulações. Se o exemplo servir eu te passo ele.
[]s
Walter Alves Chagas Junior
Projeto e desenvolvimento de sistemas
Telemont Engenharia de telecomunicações S/A
Belo Horizonte - MG - Brasil
[EMAIL PROTECTED]
Fone: (31) 3389-8215 Fax: (31) 3389-8200
-----Mensagem original-----
De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED]
nome de MarcioCC©
Enviada em: segunda-feira, 22 de maio de 2006 09:35
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: [delphi-br]Itabyte®-Importar do Excel p/ Delphi - Obrigado
Bom dia como você fez para fazer a importaçao do excel para o banco?? Daria
para enviar o exemplo ..obrigado!!!
JESUS TE AMA !!!
----- Original Message -----
From: "Nesio Messias" <[EMAIL PROTECTED]>
To: <delphi-br@yahoogrupos.com.br>
Sent: Friday, May 19, 2006 11:09 AM
Subject: Re: [delphi-br] Importar do Excel p/ Delphi - Obrigado
Valeu pessoal deu certo....obrigado...
__________________________________________________
Faça ligações para outros computadores com o novo Yahoo! Messenger
http://br.beta.messenger.yahoo.com/
[As partes desta mensagem que não continham texto foram removidas]
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
Links do Yahoo! Grupos
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
Links do Yahoo! Grupos
[As partes desta mensagem que não continham texto foram removidas]
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
Links do Yahoo! Grupos
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
Links do Yahoo! Grupos
[As partes desta mensagem que não continham texto foram removidas]
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
<*> Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages
<*> Para falar com o moderador, envie um e-mail para:
[EMAIL PROTECTED]
Yahoo! Grupos, um serviço oferecido por: | |
|
Links do Yahoo! Grupos
- Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/
- Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
- O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.