passar??
JESUS TE AMA !!!
----- Original Message -----
From: "Walter Alves Chagas Junior" <[EMAIL PROTECTED]>
To: <delphi-br@yahoogrupos.com.br>
Sent: Tuesday, May 23, 2006 11:54 AM
Subject: RES: [delphi-br]Itabyte®-Importar do Excel p/ Delphi - Obrigado
Estou postando aqui uma rotina completa Marcio. Não preocupa em fazer ela
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 >>>>>
Links do Yahoo! Grupos
--
<<<<< 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!.