Ver Mensaje Individual
  #7  
Antiguo 10-10-2006
CamiloU CamiloU is offline
Miembro
 
Registrado: dic 2005
Ubicación: Sincelejo - COlombia
Posts: 59
Reputación: 21
CamiloU Va por buen camino
Parece que no fui claro con la inquietud. Voy a presentar el codigo para realizar nuevemente la consulta.


Código Delphi [-]
unit PlanillarSGP01;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, DBTables, StdCtrls;
type
  Registro01 = record
            c01 : string[2];
            c02 : string[5];
            c03 : string[200];
            c04 : string[2];
            c05 : string[16];
            c06 : string[1];
            c07 : string[1];
            c08 : string[10];
            c09 : string[10];
            c10 : string[1];
            c11 : string[10];
            c12 : string[40];
            c13 : string[6];
            c14 : string[7];
            c15 : string[7];
            c16 : string[10];
            c17 : string[10];
            c18 : string[5];
            c19 : string[12];
            c20 : string[1];
            c21 : string[2];
          end;
  Registro02 = record
            d01 : string[2];
            d02 : string[5];
            d03 : string[2];
            d04 : string[16];
            d05 : string[2];
            d06 : string[2];
            d07 : string[1];
            d08 : string[1];
            d09 : string[2];
            d10 : string[3];
            d11 : string[20];
            d12 : string[30];
            d13 : string[20];
            d14 : string[30];
            d15 : string[1];
            d16 : string[1];
            d17 : string[1];
            d18 : string[1];
            d19 : string[1];
            d20 : string[1];
            d21 : string[1];
            d22 : string[1];
            d23 : string[1];
            d24 : string[1];
            d25 : string[1];
            d26 : string[1];
            d27 : string[1];
            d28 : string[1];
            d29 : string[1];
            d30 : string[2];
            d31 : string[6];
            d32 : string[6];
            d33 : string[6];
            d34 : string[6];
            d35 : string[6];
            d36 : string[2];
            d37 : string[2];
            d38 : string[2];
            d39 : string[2];
            d40 : string[9];
            d41 : string[1];
            d42 : string[9];
            d43 : string[9];
            d44 : string[9];
            d45 : string[9];
            d46 : string[7];
            d47 : string[9];
            d48 : string[9];
            d49 : string[9];
            d50 : string[9];
            d51 : string[9];
            d52 : string[9];
            d53 : string[9];
            d54 : string[7];
            d55 : string[9];
            d56 : string[9];
            d57 : string[15];
            d58 : string[9];
            d59 : string[15];
            d60 : string[9];
            d61 : string[9];
            d62 : string[9];
            d63 : string[9];
            d64 : string[7];
            d65 : string[9];
            d66 : string[7];
            d67 : string[9];
            d68 : string[7];
            d69 : string[9];
            d70 : string[7];
            d71 : string[9];
            d72 : string[7];
            d73 : string[9];
          end;
  TForm1 = class(TForm)
    Button1: TButton;
    E1: TEdit;
    Tabla1: TTable;
    Tabla2: TTable;
    Tabla3: TTable;
    procedure RegistroTipo01;
    procedure RegistroTipo02;
    procedure LlenaTipo01;
    procedure LlenaTipo02;
    procedure ValorAporte;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1 : TForm1;
  R01 : file of Registro01;
  R02 : file of Registro02;
  Dato01 : Registro01;
  Dato02 : Registro02;
  c01, c02, c03, c04, c05, c06, c07, c08, c09, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21 : string;
  d01, d02, d03, d04, d05, d06, d07, d08, d09, d10, d11, d12, d13, d14, d15, d16, d17, d18, d19, d20 : string;
  d21, d22, d23, d24, d25, d26, d27, d28, d29, d30, d31, d32, d33, d34, d35, d36, d37, d38, d39, d40 : string;
  d41, d42, d43, d44, d45, d46, d47, d48, d49, d50, d51, d52, d53, d54, d55, d56, d57, d58, d59, d60 : string;
  d61, d62, d63, d64, d65, d66, d67, d68, d69, d70, d71, d72, d73, ced, aux1, aux2, temp : string;
  cont, basliq, num1, num2, num3 : integer;
  porc, par1, par2, par3 : real;
  encontrado : boolean;
implementation
{$R *.dfm}
procedure TForm1.RegistroTipo01;
begin
with Dato01 do
  begin
    c01 := '01';
    c02 := '00001';
    c03 := 'ENTIDAD';
    c04 := 'NI';
    c05 := '892280021';
    c06 := '1';
    c07 := ' ';
    c08 := ' ';
    c09 := ' ';
    c10 := 'U';
    c11 := ' ';
    c12 := ' ';
    c13 := ' ';
    c14 := '2006-09';
    c15 := '2006-09';
    c16 := ' ';
    c17 := ' ';
    c18 := ' ';
    c19 := ' ';
    c20 := '1';
    c21 := ' ';
  end;
end;
 
procedure TForm1.LlenaTipo01;
begin
assignfile(R01,'PlanillaSGP01.txt');
rewrite(R01);
RegistroTipo01;
seek(R01, FileSize(R01));
Write(R01,Dato01);
Closefile(R01);
end;
 
procedure TForm1.RegistroTipo02;
var
  n1, n2, n3 : integer;
  nom1, nom2, ape1, ape2 : string;
begin
with Dato02 do
  begin
  d01 := '02';
  if cont < 10 then aux1 := concat('0000',inttostr(cont));
  if (cont >= 10) and (cont < 100) then aux1 := concat('000',inttostr(cont));
  if (cont >= 100) and (cont < 1000) then aux1 := concat('00',inttostr(cont));
  if (cont >= 1000) and (cont < 10000) then aux1 := concat('0',inttostr(cont));
  if (cont >= 10000) then aux1 := inttostr(cont);
  d02 := aux1;
  Tabla1.First;
  encontrado := false;
  while (Not Tabla1.Eof) and (encontrado = false) do
    begin
      if Tabla1.FieldByName('cedula').AsString = Tabla2.FieldByName('Cedula').AsString then
        begin
          if Tabla1.FieldByName('Tipo').AsString = '1' then d03 := 'CC';
          if Tabla1.FieldByName('Tipo').AsString = '2' then d03 := 'CE';
          encontrado := true;
        end
      else Tabla1.Next;
    end;
  d04 := Tabla2.FieldByName('Cedula').AsString;
  d05 := '1';
  d06 := ' ';
  d07 := ' ';
  d08 := ' ';
  d09 := '70';
  d10 := Tabla2.FieldByName('Mun_Colegi').AsString;
  Tabla3.First;
  encontrado := false;
  while (Not Tabla3.Eof) and (encontrado = false) do
    begin
      if Tabla3.FieldByName('cedula').AsString = Tabla2.FieldByName('Cedula').AsString then
        begin
          nom1 := Tabla3.FieldByName('Primer_Ape').AsString;
          nom2 := Tabla3.FieldByName('Segundo_Ap').AsString;
          ape1 := Tabla3.FieldByName('Primer_Nom').AsString;
          ape2 := Tabla3.FieldByName('Segundo_No').AsString;
          aux2 := Tabla3.FieldByName('Base').AsString;
          encontrado := true;
        end;
      Tabla3.Next;
    end;
  d11 := nom1;
  d12 := nom2;
  d13 := ape1;
  d14 := ape2;
  num1 := strtoint(aux2);
  num2 := num1 DIV 1000;
  num3 := num1 MOD 1000;
  if num3 >= 500 then num2 := num2 + 1;
  basliq := num2 * 1000;
  d15 := ' ';
  d16 := ' ';
  d17 := ' ';
  d18 := ' ';
  d19 := ' ';
  d20 := ' ';
  d21 := ' ';
  d22 := ' ';
  d23 := ' ';
  d24 := ' ';
  d25 := ' ';
  d26 := ' ';
  d27 := ' ';
  d28 := ' ';
  d29 := ' ';
  d30 := ' ';
  d31 := ' ';
  d32 := ' ';
  d33 := ' ';
  d34 := ' ';
  d35 := ' ';
  d36 := '30';
  d37 := '30';
  d38 := '30';
  d39 := '30';
  d40 := aux2;
  d41 := ' ';
  d42 := inttostr(basliq);
  d43 := inttostr(basliq);
  d44 := inttostr(basliq);
  d45 := inttostr(basliq);
  d46 := '0.15500';
  porc := 0.15500;
  ValorAporte;
  n1 := num2 * 100;
  d47 := inttostr(n1);
  porc := 0.00500;
  ValorAporte;
  n2 := num2 * 100;
  d48 := inttostr(n2);
  porc := 0.00500;
  ValorAporte;
  n3 := num2 * 100;
  d49 := inttostr(n3);
  d50 := inttostr(n1 + n2 + n3);
  d51 := ' ';
  d52 := ' ';
  d53 := ' ';
  d54 := '0.12000';
  porc := 0.12000;
  ValorAporte;
  d55 := inttostr(num2 * 100);
  d56 := ' ';
  d57 := ' ';
  d58 := ' ';
  d59 := ' ';
  d60 := ' ';
  d61 := '0.0052200';
  d62 := ' ';
  porc := 0.0052200;
  ValorAporte;
  d63 := inttostr(num2 * 100);
  d64 := '0.04000';
  porc := 0.04000;
  ValorAporte;
  d65 := inttostr(num2 * 100);
  d66 := '0.00500';
  porc := 0.00500;
  ValorAporte;
  d67 := inttostr(num2 * 100);
  d68 := '0.03000';
  porc := 0.03000;
  ValorAporte;
  d69 := inttostr(num2 * 100);
  d70 := '0.00500';
  porc := 0.00500;
  ValorAporte;
  d71 := inttostr(num2 * 100);
  d72 := '0.01000';
  porc := 0.01000;
  ValorAporte;
  d73 := inttostr(num2 * 100);   
  end;
end;
 
procedure TForm1.LlenaTipo02;
begin
Tabla1.Open;
Tabla2.Open;
Tabla3.Open;
Tabla2.First;
assignfile(R02,'PlanillaSGP01.txt');
cont := 1;
while (Not Tabla2.Eof) do
  begin
    if (Tabla2.FieldByName('Cargo').AsString < '9900') and
       (Tabla2.FieldByName('Est_Labora').AsString = '01') then
      begin
        reset(R02);
        RegistroTipo02;
        seek(R02, cont);
        Write(R02,Dato02);
        cont := cont + 1;
      end;
    Tabla2.Next;
  end;
Closefile(R02);
end;
 
procedure TForm1.ValorAporte;
begin
  par1 := porc * basliq;
  temp := floattostrf(par1,fffixed,10,0);
  num1 := strtoint(temp);
  num2 := num1 DIV 100;
  num3 := num1 MOD 100;
  if num3 >= 50 then num2 := num2 + 1;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  LlenaTipo01;
  LlenaTipo02;
end;
end.




Lo que intento hacer es generar el archivo plano para una Planilla de Pago por Internet. Debe traer un Registro Tipo 1 que se genera en LlenaTipo1 y un Tipo 2 que tiene tantos como funcionarios tenga la entidad. Cabe anotar que la planilla es para aportes Fiscales y parafiscales.

Hasta ahi no hay problema. Sin embargo, cuando reviso el Archivo resultante, que se llama PlanillaSGP01.txt, veo en el resultado cuadros que separan los diferentes campos del Registro.

Esos son los cuadritos a los cuales me refiero.

Además, al revisar dicho archivo, veo que los nombres se mezclan, por ejemplo, el Primer nombre es ANDRES y el Segundo es ROBERTO y el resultado que veo es ANDRESERTO. Lo mismo pasa con los apellidos.

Y por ultimo, lo ideal es que cada registro inicie línea pero no se como darle el salte. Intente con WRITELN y me dio el error
Writeln(R02,Dato02); Illegal type en Write/Writeln statement.

Muchas gracias por la colaboración.

Última edición por roman fecha: 10-10-2006 a las 20:49:03.
Responder Con Cita