Arquivo separado por tab char(9)
[#VIDEO-169#]
Frigorifico Sa
Respostas
Wesley Yamazack
31/10/2009
Peço que me mande o arquivo em formato txt, ou zip, pois o link abre no brownser, e dai não tem como pegar os tabs, me mande também o teu exemplo, para ficar mais facil,
Att,
Wesley Y
Frigorifico Sa
31/10/2009
100
2009-07-29
16:05:18-03
51516
20587
6
P114
27
851
0
2009-08-31
16:05:18-03
0
0Incluir:1;SimPedido
Cliente:2009-08-04
0
0
39
25383
procedure ConverteLayOUt(Caminho: string; Arquivo: string; var msg: string);
var
Pedido, PVE, ArqTemp: TStringList;
I: Integer;
Ped, PedI, NumPVE : string;
begin
msg := '';
Pedido := TStringList.Create;
Pedido.Text := Arquivo;
PVE := TStringList.Create; // 2.1 CABEÇALHO Ex.: 0000A000001ð 09/06/200600000099999910/04/2006X Ped := Ped + '0'; // 1 Natureza Registro 1 1 A 0 "0" Informa a natureza da informação
Ped := Ped + '000'; // 2 Tipo Registro 2 3 A 0 "000" Informa o tipo do registro
Ped := Ped + 'A'; // 3 Segmento 5 1 A 0 "A" Informa o segmento da importação
Ped := Ped + '000001'; // 4 Seqüencial 6 6 N 0 "000001" Contador seqüencial da linha
Ped := Ped + Char(240) + Formatar(' ', 2, true); // 5 Cód.Filial 12 3 A 0 Nulo Cód. Filial do
Ped := Ped + DataDDMMAAAA(DataParaString(Date)); // 6 Data Processamento 15 10 D 0 Data de criação do arquivo
Ped := Ped + '000000999999'; // 7 Cód.Funcionário 25 12 N 0 "000000999999" Cód. Do Funcionário no
Ped := Ped + '10/04/2006'; // 8 Data Versão BD 37 10 D 0 "10/04/2006" Data Base da Versão do Banco
Ped := Ped + 'X'; // 9 Díg.Verificador 47 1 A 0 "X" Dígito Verificador da Linha PVE.Add(PED); // 4.0 PEDIDO
for I := 0 to Pedido.Count - 1 do
begin
try ArqTemp := TstringList.Create;
ArqTemp.Delimiter := char(9);
ArqTemp.QuoteChar := '"';
ArqTemp.DelimitedText := Pedido[i];
NumPVE := ArqTemp[0]; if I = 0 then
ArqTemp.Savetofile('pedcab' + ArqTemp[0] + '.txt');
if I > 0 then
Wesley Yamazack
31/10/2009
Att,
Wesley Y
Frigorifico Sa
31/10/2009
Wesley Yamazack
31/10/2009
Att,
Wesley Y
Frigorifico Sa
31/10/2009
var
Pedido, PVE, ArqTemp: TStringList;
I: Integer;
Ped, PedI, NumPVE : string;
begin
msg := '';
Pedido := TStringList.Create;
Pedido.Text := Arquivo;
PVE := TStringList.Create; // 2.1 CABEÇALHO Ex.: 0000A000001ð 09/06/200600000099999910/04/2006X Ped := Ped + '0'; // 1 Natureza Registro 1 1 A 0 "0" Informa a natureza da informação
Ped := Ped + '000'; // 2 Tipo Registro 2 3 A 0 "000" Informa o tipo do registro
Ped := Ped + 'A'; // 3 Segmento 5 1 A 0 "A" Informa o segmento da importação
Ped := Ped + '000001'; // 4 Seqüencial 6 6 N 0 "000001" Contador seqüencial da linha
Ped := Ped + Char(240) + Formatar(' ', 2, true); // 5 Cód.Filial 12 3 A 0 Nulo Cód. Filial do SisAtak
Ped := Ped + DataDDMMAAAA(DataParaString(Date)); // 6 Data Processamento 15 10 D 0 Data de criação do arquivo
Ped := Ped + '000000999999'; // 7 Cód.Funcionário 25 12 N 0 "000000999999" Cód. Do Funcionário no SisAtak
Ped := Ped + '10/04/2006'; // 8 Data Versão BD 37 10 D 0 "10/04/2006" Data Base da Versão do Banco
Ped := Ped + 'X'; // 9 Díg.Verificador 47 1 A 0 "X" Dígito Verificador da Linha PVE.Add(PED); // 4.0 PEDIDO
for I := 0 to Pedido.Count - 1 do
begin
try ArqTemp := TstringList.Create;
ArqTemp.Delimiter := char(9);
ArqTemp.QuoteChar := '"';
ArqTemp.DelimitedText := Pedido[i];
NumPVE := ArqTemp[0]; if I = 0 then
ArqTemp.Savetofile('pedcab' + ArqTemp[0] + '.txt');
if I > 0 then
ArqTemp.Savetofile('pedItem ' + IntToStr(I) + '_' + ArqTemp[0] + '.txt'); if I = 0 then
begin
Ped := '1'; // 1 Natureza Registro 1 1 A 0 "1" Informa a natureza da informação
Ped := Ped + '022'; //2 Tipo Registro 2 3 A 0 "022" Informa o tipo do registro
Ped := Ped + 'Z'; //3 Segmento 5 1 A 0 "Z" Informa o segmento da importação
Ped := Ped + Formatar(IntToStr(I + 2), 6, False, '0', False); //4 Seqüencial 6 6 N 0 Contador seqüencial da linha
Ped := Ped + Formatar(ArqTemp[0], 9, True, ' ', False); //5 Chave Fato 12 9 A 0 Código de Controle do Pedido CHAVE_FATO
Ped := Ped + Char(240) + ' '; //6 Código da Filial 21 3 A 0 NULO * Não Utilizado * COD_FILIAL
Ped := Ped + Char(240) + ' '; //7 Código do Documento 24 3 A 0 NULO * Não Utilizado * COD_DOCTO
Ped := Ped + Char(240) + ' '; //8 Série do Documento 27 3 A 0 NULO * Não Utilizado * SERIE_SEQ
Ped := Ped + Char(240) + Formatar(' ', 11, true); //9 Número do Documento 30 12 N 0 * Não Utilizado * NUM_DOCTO
Ped := Ped + ArqTemp[7]; //10 Cód. Condição de Pgto 42 4 A 0 Cód. Condição de Pagamento (088) COD_COND_PGTO
Ped := Ped + Char(240) + Formatar(' ', 4, true); //11 Código do Depto 46 5 A 0 NULO * Não Utilizado * COD_DEPTO
Ped := Ped + Formatar(ArqTemp[5], 12, false, '0', false); //12 Código do Cliente 51 12 N 0 Código do Cliente (002) COD_CLI_FOR
Ped := Ped + Char(240) + Formatar(' ', 3, true); //13 Código do Local 63 4 A 0 NULO * Não Utilizado * COD_LOCAL
Ped := Ped + '851 '; //14 Cód. Tipo de Movimento 67 4 A 0 "850" Valor definido pela customização do SisAtak COD_TIPO_MV
Ped := Ped + DataDDMMAAAA(Arqtemp[2]); //15 Data do Movimento 71 10 D 0 Data da Venda DATA_MOVTO
Ped := Ped + Formatar(ArqTemp[4], 12, false, '0', false); //16 Código do Vendedor 81 12 N 0 Código do Vendedor (038) COD_VEND_COMP
Ped := Ped + Char(240) + Formatar(' ', 11, true); //17 Código do Funcionário 1 93 12 N 0 NULO * Não Utilizado * COD_FUNCIONARIO1
Ped := Ped + Char(240) + Formatar(' ', 11, true); //18 Código do Funcionário 2 105 12 N 0 NULO * Não Utilizado * COD_FUNCIONARIO2
Ped := Ped + Char(240) + Formatar(' ', 11, true); //19 Cód. do Transportador 1 117 12 N 0 NULO * Não Utilizado * COD_TRANSPORTADOR1
Ped := Ped + ArqTemp[13]; //20 Tipo de Frete 1 129 1 A 0 "F" FOB, "C" CIF TIPO_FRETE1
Ped := Ped + Char(240) + Formatar(' ', 7, true); //21 Placa 1 130 8 A 0 NULO * Não Utilizado * PLACA1
Ped := Ped + Char(240) + Formatar(' ', 1, true); //22 UF da Placa 1 138 2 A 0 NULO * Não Utilizado * UF_PLACA1
Ped := Ped + Char(240) + Formatar(' ', 11, true); //23 Cód. do Transportador 2 140 12 N 0 NULO * Não Utilizado * COD_TRANSPORTADOR2
Ped := Ped + Char(240); //24 Tipo de Frete 2 152 1 A 0 NULO * Não Utilizado * TIPO_FRETE2
Ped := Ped + Char(240) + Formatar(' ', 7, true); //25 Placa 2 153 8 A 0 NULO * Não Utilizado * PLACA2
Ped := Ped + Char(240) + Formatar(' ', 1, true); //26 UF da Placa 2 161 2 A 0 NULO * Não Utilizado * UF_PLACA2
Ped := Ped + Char(240) + Formatar(' ', 9, true); //27 Data Auxiliar 1 163 10 D 0 NULO * Não Utilizado * DATA_V1
Ped := Ped + Char(240) + Formatar(' ', 9, true); //28 Data Auxiliar 2 173 10 D 0 NULO * Não Utilizado * DATA_V2
Ped := Ped + Char(240); //29 Status 183 1 A 0 NULO * Não Utilizado * STATUS
Ped := Ped + Char(240) + Formatar(' ', 29, true); //30 Nome Auxiliar 184 30 A 0 NULO * Não Utilizado * NOME_AUX
Ped := Ped + Formatar(ArqTemp[0], 18, true, ' ', false); //31 Nº Documento Auxiliar 214 18 A 0 Código de Controle do Pedido NUM_DOCTO_AUX
// Ped := Ped + Formatar(ArqTemp[17], 15, false, '0', false) + '00' ; //32 Peso Bruto 232 17 B 2 Peso Bruto Total dos Itens PESO_BRUTO
Ped := Ped + Formatar('0', 17, false, '0', false);
// Ped := Ped + Formatar(ArqTemp[17], 15, false, '0', false) + '00'; //33 Peso Líquido 249 17 B 2 Peso Líquido Total dos Itens PESO_LIQUIDO
Ped := Ped + Formatar('0', 17, false, '0', false);
// Ped := Ped + Formatar(ArqTemp[18], 17, false, '0', false); //34 Valor dos Produtos 266 17 B 2 Valor Total dos Itens VALOR_PRODUTOS
Ped := Ped + Formatar('0', 17, false, '0', false);
Ped := Ped + Formatar('0', 17, true, '0'); //35 Valor dos Serviços 283 17 B 2 "0" * Não Utilizado * VALOR_SERVICOS
Ped := Ped + Formatar('0', 17, true, '0'); //36 Valor do Desconto 300 17 B 2 "0" * Não Utilizado * VALOR_DESCONTO
// Ped := Ped + Formatar(ArqTemp[18], 17, false, '0', false); //37 Valor Total 317 17 B 2 Valor Total dos Itens VALOR_TOTAL
Ped := Ped + Formatar('0', 17, false, '0', false);
Ped := Ped + Char(240) + Formatar(' ', 11, true); //38 Código da Carteira 334 12 N 0 NULO * Não Utilizado * COD_CARTEIRA
Ped := Ped + Char(240) + Formatar(' ', 5, true); //39 Código Mensagem 1 346 6 N 0 NULO * Não Utilizado * COD_MENSAGEM1
Ped := Ped + Char(240) + Formatar(' ', 5, true); //40 Código Mensagem 2 352 6 N 0 NULO * Não Utilizado * COD_MENSAGEM2
Ped := Ped + Char(240) + Formatar(' ', 5, true); //41 Código Mensagem 3 358 6 N 0 NULO * Não Utilizado * COD_MENSAGEM3
Ped := Ped + Char(240) + Formatar(' ', 5, true); //42 Código Mensagem 4 364 6 N 0 NULO * Não Utilizado * COD_MENSAGEM4
Ped := Ped + Char(240) + Formatar(' ', 19, true); //43 Marca 370 20 A 0 NULO * Não Utilizado * MARCA
Ped := Ped + Char(240) + Formatar(' ', 19, true); //44 Espécie 390 20 A 0 NULO * Não Utilizado * ESPECIE
Ped := Ped + Char(240) + Formatar(' ', 19, true); //45 Lacre 410 20 A 0 NULO * Não Utilizado * LACRE
Ped := Ped + Char(240) + Formatar(' ', 9, true); //46 Número 430 10 A 0 NULO * Não Utilizado * NUMERO
Ped := Ped + Char(240) + Formatar(' ', 5, true); //47 Qtde de Volumes 440 6 N 0 NULO * Não Utilizado * QTDE_VOLUME
Ped := Ped + Char(240) + Formatar(' ', 9, true); //48 Selo Fiscal 446 10 A 0 NULO * Não Utilizado * SELO_FISCAL
Ped := Ped + Char(240) + Formatar(' ', 2, true); //49 Cód. Docto Transito 456 3 A 0 NULO * Não Utilizado * COD_DOCTO_TRANSITO
Ped := Ped + Char(240) + Formatar(' ', 2, true); //50 Série Docto Transito 459 3 A 0 NULO * Não Utilizado * SERIE_DOCTO_TRANSITO
Ped := Ped + Char(240) + Formatar(' ', 11, true); //51 Nº Docto Transito 462 12 N 0 NULO * Não Utilizado * NUM_DOCTO_TRANSITO
Ped := Ped + Formatar(ArqTemp[3], 6, false, '0', false); //52 Hora Inicial 474 6 A 0 NULO * Não Utilizado * HORA_INI
Ped := Ped + Char(240) + Formatar(' ', 5, true); //53 Hora Final 480 6 A 0 NULO * Não Utilizado * HORA_FIM
Ped := Ped + Char(240) + Formatar(' ', 5, true); //54 Qtde de Itens 486 6 N 0 "0" * Não Utilizado * QTDE_ITENS
Ped := Ped + Char(240) + Formatar(' ', 2, true); //55 Série da Carga 492 3 A 0 NULO * Não Utilizado * SERIE_CARGA
Ped := Ped + Char(240) + Formatar(' ', 11, true); //56 Número da Carga 495 12 N 0 NULO * Não Utilizado * NUM_CARGA
Ped := Ped + 'N'; //57 Status Contábil 507 1 A 0 "N" * Não Utilizado * STATUS_CTB
Ped := Ped + Formatar('0', 17, true, '0'); //58 Valor do Frete 508 17 B 2 Valor Total do Frete VALOR_FRETE
Ped := Ped + Formatar('0', 17, true, '0'); //59 Valor dos Encargos 525 17 B 2 "0" * Não Utilizado * VALOR_ENCARGOS
Ped := Ped + Formatar('0', 17, true, '0'); //60 Valor do Seguro 542 17 B 2 "0" * Não Utilizado * VALOR_SEGURO
// Ped := Ped + Formatar(ArqTemp[18], 17, false, '0', false); /61 Valor Líquido 559 17 B 2 VALOR_LIQUIDO
Ped := Ped + Formatar('0', 17, false, '0', false);
Ped := Ped + 'N'; //62 Status EMT 576 1 A 0 "N" * Não Utilizado * STATUS_EMT
Ped := Ped + Char(240) + Formatar(' ', 8, true); //63 Chave Fato Docto Origem 577 9 A 0 NULO * Não Utilizado * CHAVE_FATO_ORIG_UN
Ped := Ped + Formatar(ArqTemp[14], 200, true, ' ', false); //64 Observação 586 200 A 0 Observações da Venda OBSERVACAO
Ped := Ped + Formatar('0', 17, true, '0'); //65 Valor Auxiliar 1 786 17 B 2 "0" * Não Utilizado * VALOR_V1
Ped := Ped + Formatar('0', 17, true, '0'); //66 Valor Auxiliar 2 803 17 B 2 "0" * Não Utilizado * VALOR_V2
Ped := Ped + Formatar('0', 17, true, '0'); //67 Valor Auxiliar 3 820 17 B 2 "0" * Não Utilizado * VALOR_V3
Ped := Ped + Char(240) + Formatar(' ', 29, true); //68 Código do Usuário 837 30 A 0 NULO * Não Utilizado * COD_USUARIO
Ped := Ped + Char(240) + Formatar(' ', 8, true); //69 Qtde Comissão 867 9 B 3 NULO * Não Utilizado * QTDE_COMISSAO
Ped := Ped + Char(240); //70 Unidade Comissão 876 1 A 0 NULO * Não Utilizado * UND_COMISSAO
Ped := Ped + 'N'; //71 Status Agrupamento 877 1 A 0 "N" * Não Utilizado * STATUS_AGRUPADO
Ped := Ped + 'N'; //72 Status Bloqueio 878 1 A 0 "N" * Não Utilizado * STATUS_BLOQUEIO
Ped := Ped + Char(240) + Formatar(' ', 19, true); //73 Motivo Bloqueio 879 20 A 0 NULO * Não Utilizado * MOTIVO_BLOQUEIO
Ped := Ped + Formatar(ArqTemp[8], 6, false, '0', false); //74 Cód. da Lista de Preços 899 6 N 0 Código da Lista de Preço (092) COD_LISTA
Ped := Ped + Formatar('0', 17, true, '0'); //75 Valor Total Moeda 905 17 B 2 "0" * Não Utilizado * VALOR_TOTAL_MOEDA
Ped := Ped + Formatar('0', 17, true, '0'); //76 Valor Líquido Moeda 922 17 B 2 "0" * Não Utilizado * VALOR_LIQUIDO_MOEDA
Ped := Ped + Char(240) + Formatar(' ', 11, true); //77 Seq. de Romaneio 939 12 N 0 NULO * Não Utilizado * SEQ_ROM
Ped := Ped + Char(240); //78 Status ECF 951 1 A 0 NULO * Não Utilizado * STATUS_ECF
Ped := Ped + Char(240); //79 Via de Transporte 952 1 A 0 NULO * Não Utilizado * VIA_TRANSP
Ped := Ped + Char(240) + Formatar(' ', 5, true); //80 Seq. de Entrega 953 6 N 0 NULO * Não Utilizado * SEQ_ENTREGA
Ped := Ped + Char(240) + Formatar(' ', 4, true); //81 Código do Percurso 959 5 A 0 NULO * Não Utilizado * COD_PERCURSO
Ped := Ped + Char(240) + Formatar(' ', 8, true); //82 Chave Fato Frete 964 9 A 0 NULO * Não Utilizado * CHAVE_FATO_FRETE
Ped := Ped + Formatar('0', 17, true); //83 Valor da Comissão 973 17 B 2 "0" * Não Utilizado * VALOR_COMISSAO
Ped := Ped + '2870'; //84 Cód. Tipo Movimento Destino 990 4 A 0 Definido pela Customização do SisAtak COD_TIPO_MV_DEST
Ped := Ped + Char(240); //85 Tipo Atuação de Venda 994 1 A 0 NULO * Não Utilizado * TIPO_ATUACAO_VENDA
Ped := Ped + Char(240); //86 Origem da Venda 995 1 A 0 NULO * Não Utilizado * ORIGEM_VENDA
Ped := Ped + Char(240) + Formatar(' ', 19, true); //87 CPF/CNPJ do Cliente (Soma de Conferência) 996 20 A 0 NULO * Não Utilizado * CPF/CNPJ CLIENTE (SOMA_CONF)
Ped := Ped + Char(240) + Formatar(' ', 11, true); //88 Código Localidade de Origem 1016 12 N 0 NULO * Não Utilizado * COD_LOCALIDADE_ORIG
Ped := Ped + Char(240) + Formatar(' ', 11, true); //89 Código Localidade de Destino 1028 12 N 0 NULO * Não Utilizado * COD_LOCALIDADE_DEST
Ped := Ped + Char(240) + Formatar(' ', 1, true); //90 Código do Movimento de Cancelamento 1040 2 A 0 NULO * Não Utilizado * COD_MOTIVO_CANCELA
Ped := Ped + Char(240) + Formatar(' ', 7, true); //91 Placa 11 1042 8 A 0 NULO * Não Utilizado * PLACA11
Ped := Ped + Char(240) + Formatar(' ', 7, true); //92 Placa 22 1050 8 A 0 NULO * Não Utilizado * PLACA22
Ped := Ped + Char(240) + Formatar(' ', 1, true); //93 UF da Placa 11 1058 2 A 0 NULO * Não Utilizado * UF_PLACA11
Ped := Ped + Char(240) + Formatar(' ', 1, true); //94 UF da Placa 22 1060 2 A 0 NULO * Não Utilizado * UF_PLACA22
Ped := Ped + Char(240) + Formatar(' ', 11, true); //95 Código do Motorista 1 1062 12 N 0 NULO * Não Utilizado * COD_MOTORISTA1
Ped := Ped + Char(240) + Formatar(' ', 11, true); //96 Código do Motorista 2 1074 12 N 0 NULO * Não Utilizado * COD_MOTORISTA2
Ped := Ped + Char(240) + Formatar(' ', 11, true); //97 Código do Funcionário Cancelamento 1086 12 N 0 NULO * Não Utilizado * COD_FUNCIONARIO_CANCELA
Ped := Ped + Char(240) + Formatar(' ', 9, true); //98 Data do Cancelamento 1098 10 D 0 NULO * Não Utilizado * DATA_CANCELA
Ped := Ped + Formatar('0', 12, true); //99 % Desconto CSCT 1 1108 12 B 4 "0" * Não Utilizado * PERC_DESCONTO_CSCT1
Ped := Ped + Formatar('0', 12, true); //100 % Desconto CSCT 2 1120 12 B 4 "0" * Não Utilizado * PERC_DESCONTO_CSCT2
Ped := Ped + Formatar('0', 12, true); //101 % Desconto CSCT 3 1132 12 B 4 "0" * Não Utilizado * PERC_DESCONTO_CSCT3
Ped := Ped + Formatar('0', 12, true); //102 % Desconto CSCT 4 1144 12 B 4 "0" * Não Utilizado * PERC_DESCONTO_CSCT4
Ped := Ped + Formatar('0', 12, true); //103 % Desconto CSCT 5 1156 12 B 4 "0" * Não Utilizado * PERC_DESCONTO_CSCT5
Ped := Ped + Char(240) + Formatar(' ', 9, true); //104 Data Estoque 1168 10 D 0 NULO * Não Utilizado * DATA_ESTOQUE
Ped := Ped + Char(240) + Formatar(' ', 11, true); //105 Código do Proprietário 1178 12 N 0 NULO * Não Utilizado * COD_PROPRIEDADE
Ped := Ped + Char(240) + Formatar(' ', 11, true); //106 Código do Funcionário 1190 12 N 0 NULO * Não Utilizado * COD_FUNCIONARIO
Ped := Ped + Char(240); //107 Tipo de Peso 1202 1 A 0 NULO * Não Utilizado * TIPO_PESO
Ped := Ped + Char(240) + Formatar(' ', 2, true); //108 Código Equipto ECF 1203 3 A 0 NULO * Não Utilizado * COD_EQUIPTOECF
Ped := Ped + Formatar('0', 17, true, '0'); //109 Valor Auxiliar 4 1206 17 B 2 "0" * Não Utilizado * VALOR_V4
Ped := Ped + Formatar('0', 17, true, '0'); //110 Valor Auxiliar 5 1223 17 B 2 "0" * Não Utilizado * VALOR_V5
Ped := Ped + Formatar('0', 17, true, '0'); //111 Valor Auxiliar 6 1240 17 B 2 "0" * Não Utilizado * VALOR_V6
Ped := Ped + Formatar('0', 17, true, '0'); //112 Valor Auxiliar 7 1257 17 B 2 "0" * Não Utilizado * VALOR_V7
Ped := Ped + Formatar('0', 17, true, '0'); //113 Valor Auxiliar 8 1274 17 B 2 "0" * Não Utilizado * VALOR_V8
Ped := Ped + Formatar('0', 17, true, '0'); //114 Valor do Troco 1291 17 B 2 "0" * Não Utilizado * VALOR_TROCO
Ped := Ped + Formatar('0', 17, true, '0'); //115 Valor Cancelado 1308 17 B 2 "0" * Não Utilizado * VALOR_CANCELADO
Ped := Ped + Char(240) + Formatar(' ', 8, true); //116 Chave Fato Transmissão 1325 9 A 0 NULO * Não Utilizado * CHAVE_FATO_TRANSMISSAO
Ped := Ped + Char(240) + Formatar(' ', 8, true); //117 Chave Fato Recepção 1334 9 A 0 NULO * Não Utilizado * CHAVE_FATO_RECEPCAO
Ped := Ped + Char(240); //118 Via de Transporte 2 1343 1 A 0 NULO * Não Utilizado * VIA_TRANSP2
Ped := Ped + Char(240) + Formatar(' ', 8, true); //119 Chave Fato Comércio Exterior 1344 9 A 0 NULO * Não Utilizado * CHAVE_FATO_PROCCOMEXT
Ped := Ped + Char(240) + Formatar(' ', 11, true); //120 KM 1 1353 12 N 0 NULO * Não Utilizado * KM1
Ped := Ped + Char(240) + Formatar(' ', 11, true); //121 KM 11 1365 12 N 0 NULO * Não Utilizado * KM11
Ped := Ped + DataDDMMAAAA(Arqtemp[2]); //122 Data de Vigor 1377 10 D 0 Data de Inicio de Vigor (092) DATA_VIGOR
Ped := Ped + '0'; //123 Status Externo 1387 1 A 0 "0" Sem Retorno; "1" Exige Retorno STATUS_PALM
Ped := Ped + 'X'; //124 Díg.Verificador 1388 1 A 0 "X" Dígito Verificador da Linha
PVE.Add(PED);
end
else
begin //4.2 - Item do Pedido //Os registros do tipo Item do Pedido são representados pelo cód. "024". (TBSAIDASITEM)
//Nº Descrição Posição Inicial Tamanho Tipo de Dados Decimais Conteúdo Fixo Detalhamento Observações Campo (BD)
PedI := '1'; //1 Natureza Registro 1 1 A 0 "1" Informa a natureza da informação
PedI := PedI + '024'; //2 Tipo Registro 2 3 A 0 "022" Informa o tipo do registro
PedI := PedI + 'Z'; //3 Segmento 5 1 A 0 "Z" Informa o segmento da importação
PedI := PedI + Formatar(IntToStr(I + 2), 6, False, '0', False); //4 Seqüencial 6 6 N 0 Contador seqüencial da linha
PedI := PedI + Formatar(ArqTemp[0], 9, True, ' ', False); //5 Chave Fato 12 9 A 0 Código de Controle do Pedido (022) CHAVE_FATO
PedI := PedI + Formatar(IntToStr(I), 6, False, '0', False); //6 Número do Item 21 6 N 0 Número Seqüencial do Item no Pedido NUM_ITEM
PedI := PedI + Formatar('0', 6, true, '0'); //7 Número do Sub-Item 27 6 N 0 "0" * Não Utilizado * NUM_SUBITEM
PedI := PedI + Char(240) + Formatar(' ', 2, true); //8 Cód. Situação Tributária 33 3 A 0 NULO * Não Utilizado * COD_ST
PedI := PedI + Char(240) + Formatar(' ', 2, true); //9 Código do C. Fiscal 36 3 A 0 NULO * Não Utilizado * COD_CF
PedI := PedI + Char(240) + Formatar(' ', 4, true); //10 Código do CFOP 39 5 A 0 NULO * Não Utilizado * COD_CFOP
PedI := PedI + 'KG' + Formatar(' ', 2, true); //11 Código da Unidade 44 4 A 0 Código da Unidade de Venda (083) COD_UNIDADE
PedI := PedI + Formatar(ArqTemp[1], 12, True, ' ', False); //12 Código do Produto 48 12 A 0 Código do Produto (042) COD_PRODUTO
PedI := PedI + Formatar('0', 4, true, ' '); //13 Código da Referência 60 4 A 0 Código da Referência (042) COD_REF
PedI := PedI + Formatar('0', 12, true, '0'); //14 Código Centro de Custo 64 12 N 0 NULO * Não Utilizado * COD_CCUSTO
PedI := PedI + Formatar(ArqTemp[2], 15, false, '0', false) + '000'; //15 Qtde Unidade 76 18 B 3 Quantidade de Venda QTDE_UND
PedI := PedI + Formatar(ArqTemp[2], 15, false, '0', false) + '000'; //16 Qtde Primária 94 18 B 3 "0" * Não Utilizado * QTDE_PRI
PedI := PedI + Formatar('0', 18, true, '0'); //17 Qtde Auxiliar 112 18 B 3 "0" * Não Utilizado * QTDE_AUX
PedI := PedI + Formatar('0', 18, true, '0'); //18 Qtde Primária Filhos 130 18 B 3 "0" * Não Utilizado * QTDE_PRI_FILHOS
PedI := PedI + Formatar('0', 18, true, '0'); //19 Qtde Auxiliar Filhos 148 18 B 3 "0" * Não Utilizado * QTDE_AUX_FILHOS
PedI := PedI + Formatar(TiraPontoeVirgula(ArqTemp[4]), 17, false, '0', false) + '00'; //20 Valor Unitário 166 19 B 4 Valor Unitário do Item VALOR_UNITARIO
PedI := PedI + Formatar('0', 19, true, '0'); //21 Valor Unitário 1 185 19 B 4 "0" * Não Utilizado * VALOR_UNITARIO_V1
PedI := PedI + Formatar('0', 17, true, '0'); //22 Valor Total 204 17 B 2 "0" * Não Utilizado * VALOR_TOTAL
PedI := PedI + Formatar('0', 17, true, '0'); //23 Valor Desconto 221 17 B 2 "0" * Não Utilizado * VALOR_DESCONTO
PedI := PedI + Formatar('0', 12, true, '0'); //24 % de Desconto 238 12 B 4 "0" * Não Utilizado * PERC_DESCONTO
PedI := PedI + Formatar('0', 9, true, '0'); //25 % de Encargos 250 9 B 3 "0" * Não Utilizado * PERC_ENCARGOS
PedI := PedI + Formatar('0', 9, true, '0'); //26 % de Frete 259 9 B 3 "0" * Não Utilizado * PERC_FRETE
PedI := PedI + Char(240) + Formatar(' ', 5, true); //27 Prazo de Validade 268 6 N 0 NULO * Não Utilizado * PRAZO_VALIDADE
PedI := PedI + Char(240) + Formatar(' ', 5, true); //28 Prazo de Entrega 274 6 N 0 NULO * Não Utilizado * PRAZO_ENTREGA
PedI := PedI + Char(240) + Formatar(' ', 8, true); //29 Qtde Comissão 280 9 B 3 NULO * Não Utilizado * QTDE_COMISSAO
PedI := PedI + Char(240); //30 Unidade de Comissão 289 1 A 0 NULO * Não Utilizado * UND_COMISSAO
PedI := PedI + Char(240); //31 Status do Item 290 1 A 0 NULO * Não Utilizado * STATUS_ITEM
PedI := PedI + Char(240) + Formatar(' ', 9, true); //32 Data 1 291 10 D 0 NULO * Não Utilizado * DATA_ITEM_V1
PedI := PedI + Char(240) + Formatar(' ', 9, true); //33 Data 2 301 10 D 0 NULO * Não Utilizado * DATA_ITEM_V2
PedI := PedI + Char(240) + Formatar(' ', 8, true); //34 Chave Fato Docto Origem 311 9 A 0 NULO * Não Utilizado * CHAVE_FATO_ORIG
PedI := PedI + Char(240) + Formatar(' ', 5, true); //35 Nº Item Origem 320 6 N 0 NULO * Não Utilizado * NUM_ITEM_ORIG
PedI := PedI + Char(240) + Formatar(' ', 19, true); //36 Cód. do Produto Auxiliar 326 20 A 0 NULO * Não Utilizado * COD_AUX_PROD
PedI := PedI + Formatar('0', 19, true, '0'); //37 Valor Unitário Moeda 346 19 B 4 "0" * Não Utilizado * VALOR_UNITARIO_MOEDA
PedI := PedI + Formatar('0', 17, true, '0'); //38 Valor Total Moeda 365 17 B 2 "0" * Não Utilizado * VALOR_TOTAL_MOEDA
PedI := PedI + Char(240) + Formatar(' ', 9, true); //39 Número do Lote 382 10 A 0 NULO * Não Utilizado * NUM_LOTE
PedI := PedI + Formatar('0', 17, true, '0'); //40 Valor do Frete 392 17 B 2 "0" * Não Utilizado * VALOR_FRETE
PedI := PedI + Formatar('0', 17, true, '0'); //41 Valor dos Encargos 409 17 B 2 "0" * Não Utilizado * VALOR_ENCARGOS
PedI := PedI + Formatar('0', 17, true, '0'); //42 Valor do Seguro 426 17 B 2 "0" * Não Utilizado * VALOR_SEGURO
PedI := PedI + Formatar('0', 17, true, '0'); //43 Valor Líquido 443 17 B 2 "0" * Não Utilizado * VALOR_LIQUIDO xxxxxQtdeXvalor()
PedI := PedI + 'N'; //44 Atualiza Pendência Pri. Aux. 460 1 A 0 "N" * Não Utilizado * ATLZ_PEND_PRIAUX
PedI := PedI + 'N'; //45 Atualiza Estoque 461 1 A 0 "N" * Não Utilizado * ATLZ_ESTOQUE
PedI := PedI + Char(240) + Formatar(' ', 5, true); //46 Nº Sub-Item Origem 462 6 N 0 NULO * Não Utilizado * NUM_SUBITEM_ORIG
PedI := PedI + Char(240) + Formatar(' ', 8, true); //47 Chave Fato Destino 468 9 A 0 NULO * Não Utilizado * CHAVE_FATO_DEST
PedI := PedI + Char(240) + Formatar(' ', 5, true); //48 Nº Item Destino 477 6 N 0 NULO * Não Utilizado * NUM_ITEM_DEST
PedI := PedI + Char(240) + Formatar(' ', 5, true); //49 Nº Sub-Item Destino 483 6 N 0 NULO * Não Utilizado * NUM_SUBITEM_DEST
PedI := PedI + 'NP'; //50 Atualiza Saldo Primário 489 2 A 0 "NP" * Não Utilizado * ATLZ_SALDO_PRI
PedI := PedI + 'NA'; //51 Atualiza Saldo Auxiliar 491 2 A 0 "NA" * Não Utilizado * ATLZ_SALDO_AUX
PedI := PedI + 'NP'; //52 Atualiza Saldo C. Pend. 493 2 A 0 "NP" * Não Utilizado * ATLZ_SALDO_CPEND
PedI := PedI + 'NP'; //53 Atualiza Saldo V. Pend. 495 2 A 0 "NP" * Não Utilizado * ATLZ_SALDO_VPEND
PedI := PedI + 'NP'; //54 Atualiza Saldo 1 497 2 A 0 "NP" * Não Utilizado * ATLZ_SALDO_V1
PedI := PedI + 'NP'; //55 Atualiza Saldo 2 499 2 A 0 "NP" * Não Utilizado * ATLZ_SALDO_V2
PedI := PedI + 'NP'; //56 Atualiza Saldo 3 501 2 A 0 "NP" * Não Utilizado * ATLZ_SALDO_V3
PedI := PedI + 'NP'; //57 Atualiza Saldo 4 503 2 A 0 "NP" * Não Utilizado * ATLZ_SALDO_V4
PedI := PedI + 'NP'; //58 Atualiza Saldo 5 505 2 A 0 "NP" * Não Utilizado * ATLZ_SALDO_V5
PedI := PedI + Char(240) + Formatar(' ', 2, true); //59 Código da Filial 507 3 A 0 NULO * Não Utilizado * COD_FILIAL
PedI := PedI + Char(240) + Formatar(' ', 3, true); //60 Código do Local 510 4 A 0 NULO * Não Utilizado * COD_LOCAL
PedI := PedI + 'N'; //61 Atualiza Qtde de Filhos 514 1 A 0 "N" * Não Utilizado * ATLZ_QTDE_FILHOS
PedI := PedI + Char(240) + Formatar(' ', 17, true); //62 Qtde CMP 515 18 B 3 NULO * Não Utilizado * QTDE_CMP
PedI := PedI + Formatar('0', 17, true, '0'); //63 Valor Líquido Moeda 533 17 B 2 "0" * Não Utilizado * VALOR_LIQUIDO_MOEDA
PedI := PedI + Char(240) + Formatar(' ', 18, true); //64 Valor Unitário Lista 550 19 B 4 NULO * Não Utilizado * VALOR_UNITARIO_LISTA
PedI := PedI + Char(240) + Formatar(' ', 9, true); //65 Código da Conta 569 10 A 0 NULO * Não Utilizado * COD_REDUZ_CONTA
PedI := PedI + 'A' + Formatar(' ', 3, true); //66 Cód. Unidade Mim. Máx 579 4 A 0 NULO * Não Utilizado * COD_UNIDADE_MINMAX
PedI := PedI + 'N'; //67 Status Produto Promoção 583 1 A 0 "N" "S" Se o produto estiver em promoção, neste caso o Valor Unitário deve ser o valor do produto na promoção; "N" Se o produto não estiver em promoção // STATUS_PROD_PROMOCAO
PedI := PedI + Char(240) + Formatar(' ', 17, true); //68 Qtde 1 584 18 B 3 NULO * Não Utilizado * QTDE_V1
PedI := PedI + Char(240) + Formatar(' ', 17, true); //69 Qtde 2 602 18 B 3 NULO * Não Utilizado * QTDE_V2
PedI := PedI + Char(240) + Formatar(' ', 18, true); //70 Valor Unitário Custo 620 19 B 4 NULO * Não Utilizado * VALOR_UNITARIO_CUSTO
PedI := PedI + Char(240) + Formatar(' ', 5, true); //71 Código Classificação Fiscal 639 6 N 0 NULO * Não Utilizado * COD_CLASSIF
PedI := PedI + Formatar('0', 18, true, '0'); //72 Qtde CMP Filhos 645 18 B 3 "0" * Não Utilizado * QTDE_CMP_FILHOS
PedI := PedI + Char(240) + Formatar(' ', 5, true); //73 Número da Faixa 663 6 N 0 NULO * Não Utilizado * NUM_FAIXA
PedI := PedI + Char(240) + Formatar(' ', 16, true); //74 Valor Cancelado 669 17 B 2 NULO * Não Utilizado * VALOR_CANCELADO
PedI := PedI + 'X'; //75 Díg.Verificador 686 1 A 0 "X" Dígito Verificador da Linha
PVE.Add(PedI); end; except
on E: Exception do begin
msg := msg + #10#13 + E.Message + ' Conteudo ' + Pedido[i] + ' PVE ' + ArqTemp[0] ; end; end;
ArqTemp.Free; end; //2.2 - Rodapé //Ex.: 9999A000008022000000000001024000000000005X //Nº Descrição Posição Inicial Tamanho Tipo de Dados Decimais Conteúdo Fixo Detalhamento Campo (BD)
Ped := '9'; //1 Natureza Registro 1 1 A 0 "9" Informa a natureza da informação
Ped := Ped + '999'; //2 Tipo Registro 2 3 A 0 "999" Informa o tipo do registro
Ped := Ped + 'A'; //3 Segmento 5 1 A 0 "A" Informa o segmento da importação
Ped := Ped + Formatar(IntToStr(I + 2), 6, False, '0', False); //4 Seqüencial 6 6 N 0 Contador seqüencial da linha
Ped := Ped + '022000000000001024'; //Para cada Tipo Registro Existente no Arquivo
Ped := Ped + Formatar(IntToStr(I - 1), 12, False, '0', False); // Tipo Registro
//Ped := Ped + '' // Qtde.Registros
//Ped := Ped + '' // ...
//Ped := Ped + '' // ...
Ped := Ped + 'X'; // Díg.Verificador 1 A 0 "X" Dígito Verificador da Linha PVE.Add(Ped); Pedido.Free;
PVE.SaveToFile(Caminho + 'PVE' +NumPVE + '.IMP');
PVE.Free; // msg := 'Registro :' + InttoStr(Registro) + ' Coluna :' + Inttostr(i) + ' Conteudo :' + DataSet.Fields[i].DisplayText + #10#13 + ' Linha ' + st;
end;
Frigorifico Sa
31/10/2009
100
2009-08-25
13:22:08-03
51516
6084
1
P000
2
851
0
2009-08-29
13:22:08-03
0
0
0
0
647
381743
Tenho esta rotina que pega o pedido desmembrado e junta gerando assim o PVE000010 .... procedure TFormPrincipal.JuntaPedidos(var Msg: string);
var
P, C, I, J, L, O: Integer;
ArqSaida, ArqTemp, ArqTempI, ArqTempO, ArqPed, ArqItem, ArqObs: TStringList;
Sped, SItem, Sobs, SobsData, sPeso, sTotal, sValor: string;
vPeso, vPesoT, vTotal: Currency;
vValor: Real;
begin for P := 0 to lst1.count - 1 do
begin try ArqPed := TStringList.Create;
ArqPed.LoadFromFile(lst1.Items[p]); ArqItem := TStringList.Create;
if FileExists(lst2.Items[p]) then
ArqItem.LoadFromFile(lst2.Items[p]); ArqObs := TStringList.Create;
if FileExists(lst3.Items[p]) then
ArqObs.LoadFromFile(lst3.Items[p]); for C := 0 to ArqPed.count - 1 do
begin
ArqSaida := TStringList.Create;
ArqTemp := TstringList.Create;
ArqTemp.Delimiter := Char(9);
ArqTemp.QuoteChar := '"';
ArqTemp.DelimitedText := ArqPed[C]; // ArqTemp[2] := Trim(ArqTemp[2]) + Trim(ArqTemp[3]); ArqTemp.Savetofile('pedcab' + ArqTemp[0] + '.txt'); //junta as observaçoes ao cabeçalho do pedido
for O := 0 to ArqObs.count - 1 do
begin
ArqTempO := TstringList.Create;
ArqTempO.Delimiter := char(9);
ArqTempO.QuoteChar := '"';
ArqTempO.DelimitedText := ArqObs[O];
// Showmessage(ArqTemp[16]);
if (ArqTemp[0] = ArqTempO[0]) then
begin
//if ArqTemp[14] = '0' then ArqTemp[14] := 'X';
//if ArqTemp[15] = ' ' then
// ArqTemp[15] := ArqTemp[15] + Char(9); if (ArqTempO[1] = '1') then // Data Entrega
ArqTemp[11] := ArqTempO[2] else
if (ArqTempO[1] = '2') then // Texto nf
ArqTemp[14] := Trim(ArqTemp[14]) else
if (ArqTempO[1] = '3') then
ArqTemp[14] := ArqTemp[15] + 'Periodo Entrega:' + Trim(ArqTempO[2]) else
if (ArqTempO[1] = '4') then
ArqTemp[14] := ArqTemp[14] + 'Pedido Cliente:' + Trim(ArqTempO[2]) else
if (ArqTempO[1] = '5') then
ArqTemp[14] := ArqTemp[14] + 'Encarte:' + Trim(ArqTempO[2]) else
if (ArqTempO[1] = '6') then
ArqTemp[14] := ArqTemp[14] + 'Incluir:' + Trim(ArqTempO[2]) else
if (ArqTempO[1] = '7') then
ArqTemp[14] := ArqTemp[14] + 'Juntar no Pedido:' + Trim(ArqTempO[2]) else
if (ArqTempO[1] = '8') then
ArqTemp[14] := ArqTemp[14] + 'Encarte Rede:' + Trim(ArqTempO[2]) else
if ArqTemp[14] = '0' then
ArqTemp[14] := ArqTemp[14] + 'pve' + arqTemp[0] + Char(9);
//if ArqTemp[0] = '11' then
//begin
//Showmessage(ArqTemp[14]);
//end; end;
end; ArqTempO.Free; Sped := '';
for L := 0 to ArqTemp.Count - 1 do
begin
if (L = ArqTemp.Count - 1) then
Sped := Sped + ArqTemp[L] else
if ((L = 2) or (L = 11)) then
Sped := Sped + ArqTemp[L] + ' ' else
Sped := Sped + ArqTemp[L] + Char(9); end; //Atribui o valor total, peso total ao pedido
vPeso := 0;
for I := 0 to ArqItem.count - 1 do
begin
ArqTempI := TstringList.Create;
ArqTempI.Delimiter := char(9);
ArqTempI.QuoteChar := '"';
ArqTempI.DelimitedText := ArqItem[i];
//ArqTempI.Savetofile('peditem' + ArqTemp[0] + '.txt');
vPeso := StrToCurr(ArqTempI[2]);
vPesoT := vPesoT + vPeso;
sVAlor := ArqTempI[4];
sValor := TiraPontoeVirgula(sValor);
vValor := StrToFloat(sVAlor);
vTotal := vTotal + (vValor * vPeso) end;
Sped := Sped + Char(9) + CurrTostr(vPesoT);
Sped := Sped + Char(9) + CurrTostr(vTotal);
ArqSaida.Add(Sped); //cabecalho do pedido //junta os itens ao cabeçalho do pedido
for I := 0 to ArqItem.count - 1 do
begin
ArqTempI := TstringList.Create;
ArqTempI.Delimiter := char(9);
ArqTempI.QuoteChar := '"';
ArqTempI.DelimitedText := ArqItem[i];
if ArqTemp[0] = ArqTempI[0] then
ArqSaida.Add(ArqItem.Strings[I]);
end;
ArqTempI.Free; ArqSaida.SaveToFile('pve' + Formatar(ArqTemp[0], 6, False, '0') + '.txt');
ArqTemp.Free;
ArqSaida.Free; end; ArqPed.Free;
ArqItem.Free;
ArqObs.Free; except
on E : Exception do
begin
msg := msg + #10#13 + E.message + ' PVE ' + ArqPed[0];
end;
end; end; end;
Wesley Yamazack
31/10/2009
Agora qual é o padrão ? 17 linhas ? ou 18 LInhas ? Sem um padrão até mesmo no Excel, você verá esta diferença.
Att,
Wesley Y
Frigorifico Sa
31/10/2009
Wesley Yamazack
31/10/2009
Att,
Wesley Y
Frigorifico Sa
31/10/2009
S Texto/String Sem limite caso coluna T não
preenchido
F Numérico com 2 casas decimais/Float 2 casas decimais caso coluna T
não preenchido
B Booleano – trate como um Decimal 0 (Falso) ou 1 (Verdadeiro)
T Time/Data Arquivo de Pedidos Sentido Polibrás -> Empresas 1.a – Cabeçalho do Pedido (pc_AAAAMMDD_HHMMSS.ped)
Campo Tipo Ini Tam Observações
1 Código do Pedido D
2 Organização de venda D
3 Data do Pedido T YYYY-MM-DD HH:MM:SS-03
4 Código do Vendedor S
5 Código do Cliente S
6 Código do Meio S
7 Código do Prazo S
8 Código da Tabela S
9 Código do Tipo de Venda S
10 Situação B 0 – Liberado ; 1 - Bloqueado
11 Data Extra T YYYY-MM-DD HH:MM:SS-03
12 Cliente Retira D 2 – Retira ; 0 – Não Retira
13 Código do Cliente Fatura S
14 Observação S Observação Padrão
15 IPI F
16 Desconto Pé do Talão F Att.. Ricardo
Wesley Yamazack
31/10/2009
Att,
Wesley Y
Wesley Yamazack
31/10/2009
Link : http://www.rwsolution.com.br/Pedido_origem.rar
Um abraço
Wesley Y
Frigorifico Sa
31/10/2009
Wesley Yamazack
31/10/2009
//Arquivo 1
Lista1 := TStringList.Create;
Lista1.LoadFromFile('a.ped');
Lista1.Delimiter := Char(9);
Lista1.SaveToFile('teste1.txt');
//Arquivo 2
Lista1.LoadFromFile('b.ped');
Lista1.Delimiter := Char(9);
Lista1.SaveToFile('teste2.txt');
//Arquivo 3
Lista1.LoadFromFile('C.ped');
Lista1.Delimiter := Char(9);
Lista1.SaveToFile('teste3.txt');
Fico no aguardo da sua resposta,
Att,
Wesley Y
Frigorifico Sa
31/10/2009
100
2009-08-25
13:22:08-03
51516
6084
1
P000
2
851
0
2009-08-25
13:22:08-03
0
0
0
0
var
i : Integer;
begin
//Arquivo 1
Lista1 := TStringList.Create; Lista1.LoadFromFile('a.ped');
Lista1.Delimiter := Char(9);
Lista1.SaveToFile('teste1.txt'); //Arquivo 2
Lista1.LoadFromFile('b.ped');
Lista1.Delimiter := Char(9);
Lista1.SaveToFile('teste2.txt');
//Arquivo 3
Lista1.LoadFromFile('C.ped');
Lista1.Delimiter := Char(9);
Lista1.SaveToFile('teste3.txt'); Lista1.LoadFromFile('teste3.txt'); for i := 0 to Lista1.Count -1 do
begin Lista2.DelimitedText := Lista1[i]; Lista2.SaveToFile('pedcabteste'+ Inttostr(i) +'.txt');
end;
Att.. Ricardo
Wesley Yamazack
31/10/2009
Olha só com o código que eu fiz os meus arquivos ficam salvos da seguinte forma, senao for assim não estou conseguindo entender o que você esta querendo fazer, os arquivos não tem que ficar assim ? Data e hra na mesma linha? Correto ?
Att,
Wesley Y
Frigorifico Sa
31/10/2009
begin Lista2.DelimitedText := Lista1[i]; // Lista2.SaveToFile('pedcabteste'+ Inttostr(i) +'.txt'); ShowMessage(Lista2[2]); //data ShowMessage(Lista2[3]); // hora end;
O campo data e hora tem que estar na mesma posição, sendo que eles não vem separdos por tab. Faz um teste fazendo um favor. Att.. Ricardo
Wesley Yamazack
31/10/2009
for i := 0 to Lista1.Count -1 do
begin Lista2.DelimitedText := Lista1[i]; Lista2.DelimitedText := Lista1.DelimitedText; //Não seria assim não ?
ShowMessage(Lista2[2]); //data ShowMessage(Lista2[3]); // hora end;
Realmente desta forma que você esta fazendo ele esta quebrando em data e hora.
Não seria pegar o mesmo delimiter da Lista1 ? E pra que ter 2 listas ?
Att,
Wesley Y
Frigorifico Sa
31/10/2009
Wesley Yamazack
31/10/2009
Fico no aguardo
Att
Wesley Y
Frigorifico Sa
31/10/2009
Frigorifico Sa
31/10/2009
Wesley Yamazack
31/10/2009
1- Você consegue salvar o arquivo com separador sendo o ";' , certo ?eu fiz um teste desta forma, e funcionou, veja o arquivo como eu deixei.
10;100;2009-08-25 13:08:04-03;51516;18330;1;P114;27;851;0;2009-08-25 13:08:04-03;0;0;0;0
11;100;2009-08-25 13:22:08-03;51516;6084;1;P000;2;851;0;2009-08-25 13:22:08-03;0;0;0;0
12;100;2009-08-25 13:46:53-03;51516;7443;1;P107;27;851;0;2009-08-25 13:46:53-03;0;0;0;0
13;100;2009-08-25 13:50:19-03;51516;8163;1;P103;27;851;0;2009-08-25 13:50:19-03;0;0;1:Sim;0;0
Todo separado por ";", assim com a rotina que eu desenvolvi você pode facilmente quebrar este arquivo, veja a função :
function TForm1.Explode(str, separador: string): TStringList;
var
p: integer;
begin
Result := TStringList.Create;
p := Pos(separador, str);
while (p > 0) do
begin
Result.Add(Copy(str, 1, p-1));
Delete(str, 1, p + Length(separador) - 1);
p := Pos(separador, str);
end;
if (str <> '') then
Result.Add(str);
end;
E por último crie uma TStringList, e coloque um memo, e um botão, no clique do botão implemente o seguinte.
procedure TForm1.Button1Click(Sender: TObject);
Var
I : Integer;
begin
Lista:= TStringList.Create;
Lista.LoadFromFile(ExtractFilePath(Application.ExeName)+ 'd.ped');
For I := 0 to Pred(Lista.Count) do
begin
Memo1.Lines.AddStrings(Explode(Lista.Strings[I],'#9'));
end;
end;
d.ped = arquivo separado pro ";"
Faça esta adaptação e veja se não lhe atende.
Forte abraço,
Wesley Y
Wesley Yamazack
31/10/2009
UM abraço
Wesley Y
Frigorifico Sa
31/10/2009
12[TAB]TESTE DE CAMPO[TAB]VALOR 1[ENTER] resulta em:
12
TESTE
DE
CAMPO
VALOR
1
12[TAB]'TESTE DE CAMPO'[TAB]'VALOR 1'[ENTER] (conteúdo entre aspas) resulta em:
12
TESTE DE CAMPO
VALOR 1 O que me intrigou é que no excel ou no acess importa certo sem que o conteudo esteja entre aspas simples ou dupla. Sera que não deveria usar o QuotedChar? sl.Delimiter := #9; // [tab]
sl.QuoteChar := #39 // 34 para aspas duplas, 39 para aspas simples
Se a classe não resolve. Pode encerrar. No momento vou tentar resolver de outra forma. Muito Obrigado. Att.. Ricardo
Wesley Yamazack
31/10/2009
Desculpe a demora, porém não me conformei com o seu problema, estava intrigado com isso, veja a solução.
Adicione um Button, e um Memo, e um OpenDialog(para localizar os arquivos), e crie uma função chamada Explode
function TForm1.Explode(str, separador: string): TStringList;
var
p: integer;
begin
Result := TStringList.Create;
p := Pos(separador, str);
while (p > 0) do
begin
Result.Add(Copy(str, 1, p-1));
Delete(str, 1, p + Length(separador) - 1);
p := Pos(separador, str);
end;
if (str <> '') then
Result.Add(str);
end;
procedure TForm1.Button1Click(Sender: TObject);
Var
I : Integer;
begin
if OpenDialog1.Execute then
begin
Lista:= TStringList.Create;
Lista.LoadFromFile(OpenDialog1.FileName);
For I := 0 to Pred(Lista.Count) do
Memo1.Lines.AddStrings(Explode(Lista.Strings[I],'#9'));
end;
end;
Teste o exemplo e me diga o resultado.
Um abraço
Wesley Y
Frigorifico Sa
31/10/2009
lista2.DelimitedText := memo1.Text;
for I := 0 to Pred(Lista2.Count) do
begin ShowMessage(lista2.Strings[i]); end;
Att.. Ricardo.
Wesley Yamazack
31/10/2009
Att,
Wesley Y
Frigorifico Sa
31/10/2009
Wesley Yamazack
31/10/2009
Veja o link http://www.rwsolution.com.br/Teste_TAB.rar
O meu exemplo esta funcionando, veja se consegue funcionar.
Att,
Wesley Y
Frigorifico Sa
31/10/2009
Wesley Yamazack
31/10/2009
E aqui é o memo com a função que desenvolvi, para quebrar por tab
Não é isso que você quer ? Senão for não estou conseguindo entender o que realmente você quer
Att,
Wesley Y
Frigorifico Sa
31/10/2009
var
lista2: TStringList;
I: Integer;
begin lista2 := TStringList.Create;
lista2.Delimiter := #9;
lista2.DelimitedText := Memo1.Text; for I := 0 to Pred(Lista2.Count) do
begin
lista2.DelimitedText := memo1.Lines[i];
ShowMessage(lista2[0]); //cooluna zero
ShowMessage(lista2[1]); //cooluna um
ShowMessage(lista2[2]); //cooluna dois end; lista2.Free; end;
O conteudo da coluna dois na posição 1 da linha deveria ser 2009-08-31 13:13:15-03 e aparece somente a data 2009-08-31. Veja como fica. Att.. Ricardo
Wesley Yamazack
31/10/2009
Não tem como gerar este arquivo separado por ";" ? Pois da maneira que está parece que foi gerado errado ou algo do tipo, pois ele consegue separar a linha
10 4 999999
10 1 2009-08-31 13:13:15-03
11 2 nao usar.
Mas parece que o caracter que esta entre as colunas não é um tab, já diferente do que esta na data, pois ele divide em 2 colunas.
Infelizmente não consegui ver outra forma, estou procurando, mas não estou consegui resolver estes teus arquivos.
Att,
Wesley Y
Frigorifico Sa
31/10/2009