Jump to content


Photo

Crear archivo para carga electronica nomina


  • Please log in to reply
18 replies to this topic

#1 thecitezen

thecitezen

    Newbie

  • Miembros
  • Pip
  • 9 posts

Posted 22 April 2013 - 01:31 PM

Hola,
necesito crear un programa que genere un archivo PE000010109210000001E.TXT de ejemplo para luego cargar,

Nombre del Archivo debe ser:
PE /Número asignado a la compañía de 5 posiciones  /  Tipo  de servicio de
dos posiciones (01)  /  (02)  /  (03)  /  MMDD mes y día en que se envía el
archivo/  Secuencia del header de siete posiciones  /mas una E significando
que es de entrada /.txt

por favor necesito una idea, lo de crear la base de datos llamada nomina para que el archivo se alimente desde hay, lo hago facil,

por favor ayuda.  saludos
  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4945 posts
  • LocationMéxico

Posted 22 April 2013 - 02:57 PM

claro amigo, es sencillo pero hace falta mucha informacuión, por ejemplo, con qué datos se llenará el archivo? a partir de qué datos se van a generar los nombres de archivo?

  • 0

#3 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3486 posts
  • LocationMexico City

Posted 22 April 2013 - 02:59 PM

Hola amigo thecitezen, bienvenido a DelphiAccess...

Con calma que llevamos prisa... lo que quieres es un programa que genere un TXT vacío pero cuyo nombre tenga el formato que haz indicado anteriormente ???

Si es el caso, tengo varias preguntas:

1. De dónde va a tomar los datos que conforman el nombre ??? Una base de datos ???  Un INI ???
2. Dónde va a depositar el archivo una vez creado ??? El usuario elige la ruta o es fija ???

Tu solicitud me suena bastante simple, es por ello que me parece que no es exactamente lo que estoy pensando lo que en realidad deseas obtener. Por favor tómate un poco de tiempo en extender y en poner en contexto tu solicitud. Será mucho más fácil ayudarte ;)...

Saludox ! :)

  • 0

#4 thecitezen

thecitezen

    Newbie

  • Miembros
  • Pip
  • 9 posts

Posted 22 April 2013 - 03:12 PM

claro amigo, es sencillo pero hace falta mucha informacuión, por ejemplo, con qué datos se llenará el archivo? a partir de qué datos se van a generar los nombres de archivo?


gracias por responder,ya tengo una db nomina, de esa base de datos es que se estara alimentando el archivo, lo que necesito es saber realizar el codigo en delphi.

Saludo
  • 0

#5 thecitezen

thecitezen

    Newbie

  • Miembros
  • Pip
  • 9 posts

Posted 22 April 2013 - 03:14 PM

Hola amigo thecitezen, bienvenido a DelphiAccess...

Con calma que llevamos prisa... lo que quieres es un programa que genere un TXT vacío pero cuyo nombre tenga el formato que haz indicado anteriormente ???

Si es el caso, tengo varias preguntas:

1. De dónde va a tomar los datos que conforman el nombre ??? Una base de datos ???  Un INI ???
2. Dónde va a depositar el archivo una vez creado ??? El usuario elige la ruta o es fija ???

Tu solicitud me suena bastante simple, es por ello que me parece que no es exactamente lo que estoy pensando lo que en realidad deseas obtener. Por favor tómate un poco de tiempo en extender y en poner en contexto tu solicitud. Será mucho más fácil ayudarte ;)...

Saludox ! :)


gracias por responder,
tengo la db nomina, es donde el archivo se estara alimentando, cuando el archivo sea generado.
  • 0

#6 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4945 posts
  • LocationMéxico

Posted 22 April 2013 - 03:57 PM

aún faltan más datos amigo, para poder ayudarte necesitamos conocer la estructura de la base de datos de nómina, si ya tienes algo de código Delphi avanzado o deseas que te ayudemos a creearlo de cero.

además necesitamos saber de qué tabla o tablas deben tomarse los datos.

saludos
  • 0

#7 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 posts
  • LocationEspaña

Posted 23 April 2013 - 01:38 AM

Extraido de la ayuda de Delphi



delphi
  1. var F: TextFile;
  2.  
  3. begin
  4.   AssignFile(F, 'NEWFILE.$$$');
  5.   Rewrite(F);
  6.   Writeln(F, 'Just created file with this text in it...');
  7.   CloseFile(F);
  8. end;



Con este ejemplo ves como crear un archivo de texto. Ahora es cosa tuya adaptarlo a tus necesidades ;-)

Nos leemos
  • 0

#8 thecitezen

thecitezen

    Newbie

  • Miembros
  • Pip
  • 9 posts

Posted 23 April 2013 - 06:48 AM

GRACIAS por su ayuda.
  • 0

#9 thecitezen

thecitezen

    Newbie

  • Miembros
  • Pip
  • 9 posts

Posted 24 April 2013 - 07:59 AM

claro amigo, es sencillo pero hace falta mucha informacuión, por ejemplo, con qué datos se llenará el archivo? a partir de qué datos se van a generar los nombres de archivo?


hola poli, en sql server estoy utilizando tres tablas para sacar el ENCABEZADO del archivo PE000010109210000001E.txt

tabla compania
tabla tipos_servicios
tabla afiliados
y sus respectivos campos como lo muestra el select

SELECT a.idcompania,b.id_servicios,c.fechaingreso,a.secuencia
  from compania a,
tipos_servicios b,
      afiliado c

ahora, como puedo realizar  en delphi la generacion de dicho query,
1- tengo una conexion ADO en delphi, que puedo ver las tablas en la base de datos sql server.
2- en realidad no soy un experto en delphi pero estoy aprendiendo lo que puedo.

todo esto es parte del HEADER del archivo, luego me faltara la parte que la estoy preparando con los datos que tendra el archivo.


Saludos
  • 0

#10 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4945 posts
  • LocationMéxico

Posted 24 April 2013 - 08:22 AM

Ok amigo, vamos entonces paso a paso para crear el programa que necesitas.

En el formulario dónde tienes el componente ADOConnection coloca además los siguientes componentes:

TADOQuery
TDataSource
TDbGrid.

Selecciona el componente Adoquery y cambia su propiedad Connection para que apunte a tu Adoconnection, esto es sencillo de hacer solo selecciona la propiedad y en el select que aparece desplega la lista y allí verás el componente ADoConnection.

Despúes en su propiedad SQL da click y aparecerá un botón con puntos, dale clik al botón y en el caudro de diálogo que se muestra pega tu consulta.

Luego cambia su propiedad active a true.

Si todo va bien hasta aquí continuaremos con el siguiente componente.

Selecciona el componente Datasource y en su propieda dataset hazlo apuntar al Adoquery.

hecho lo anterior selecciona el componente DbGrid y cambia supropiedad DataSource para que apunte al DataSource hecho esto y si todo ha estado correcto verás el resultado de tu consulta en el grid.



Una vez que me confirmes que todo va bien hasta aquí seguiremos con la generación del archivo, por cierto, los valroes como van a ir separados?

  • 0

#11 thecitezen

thecitezen

    Newbie

  • Miembros
  • Pip
  • 9 posts

Posted 24 April 2013 - 09:14 AM

ok, ya tengo los datos desplegados en el dbgrid delphi como lo mencionaste paso a paso.  ha, los valores deben de estar juntos para formar el nombre del archivo PE000010109210000001E.TXT, aunque se que me faltan varios campos ( PE y E .txt)


Saludos
  • 0

#12 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14448 posts
  • LocationMéxico

Posted 24 April 2013 - 09:43 AM

Hola

Yo lo haría así:



delphi
  1. var
  2.   Nombre_Archivo: String;
  3.  
  4. begin
  5.   Nombre_Archivo := format( 'PE%.5d%.2d%s%.7dE.TXT',[ TADOQuery1.FieldByName('idcompania').AsInteger,
  6.                                                       TADOQuery1.FieldByName('id_servicios').AsInteger,
  7.                                                       FormatDateTime('mmdd',TADOQuery1.FieldByName('fechaingreso').AsDate),
  8.                                                       TADOQuery1.FieldByName('secuencia').AsInteger ] );
  9.   ShowMessage( Nombre_Archivo );
  10. end;



Saludos
  • 0

#13 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4945 posts
  • LocationMéxico

Posted 24 April 2013 - 09:56 AM

solo para complementar el código de nuestro amigo egostar, coloca un botón en tu formulario dale doble click y en el editor de código que se abre remplaza el bloque bengin end del evento Onclick por el proporcionado por nuestro amigo.
  • 0

#14 thecitezen

thecitezen

    Newbie

  • Miembros
  • Pip
  • 9 posts

Posted 24 April 2013 - 12:10 PM

Nombre_Archivo := format( 'PE%.5d%.2d%s%.7dE.TXT',[ TADOQuery.FieldByName('idcompania').el cursor se detiene aqui como error AsInteger,


Saludo
  • 0

#15 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14448 posts
  • LocationMéxico

Posted 24 April 2013 - 12:15 PM

Nombre_Archivo := format( 'PE%.5d%.2d%s%.7dE.TXT',[ TADOQuery.FieldByName('idcompania').el cursor se detiene aqui como error AsInteger,


Saludo


Si nos dices el tipo de dato de tus campos podemos determinar el porqué del error.

De preferencia saber el tipo de los 4 campos.

Saludos
  • 0

#16 thecitezen

thecitezen

    Newbie

  • Miembros
  • Pip
  • 9 posts

Posted 24 April 2013 - 12:21 PM

Ok amigo, vamos entonces paso a paso para crear el programa que necesitas.

En el formulario dónde tienes el componente ADOConnection coloca además los siguientes componentes:

TADOQuery
TDataSource
TDbGrid.

Selecciona el componente Adoquery y cambia su propiedad Connection para que apunte a tu Adoconnection, esto es sencillo de hacer solo selecciona la propiedad y en el select que aparece desplega la lista y allí verás el componente ADoConnection.

Despúes en su propiedad SQL da click y aparecerá un botón con puntos, dale clik al botón y en el caudro de diálogo que se muestra pega tu consulta.

Luego cambia su propiedad active a true.

Si todo va bien hasta aquí continuaremos con el siguiente componente.

Selecciona el componente Datasource y en su propieda dataset hazlo apuntar al Adoquery.

hecho lo anterior selecciona el componente DbGrid y cambia supropiedad DataSource para que apunte al DataSource hecho esto y si todo ha estado correcto verás el resultado de tu consulta en el grid.



Una vez que me confirmes que todo va bien hasta aquí seguiremos con la generación del archivo, por cierto, los valroes como van a ir separados?


hasta ahora todo va como lo mencionaste, pero la parte de los valores me imagino que debo concatenar los campos para que se vean en un solo valor como el HEADER  PE000010109210000001E.TXT
  • 0

#17 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4945 posts
  • LocationMéxico

Posted 24 April 2013 - 12:27 PM

hasta ahora todo va como lo mencionaste, pero la parte de los valores me imagino que debo concatenar los campos para que se vean en un solo valor como el HEADER  PE000010109210000001E.TXT


Así es amigo.
  • 0

#18 thecitezen

thecitezen

    Newbie

  • Miembros
  • Pip
  • 9 posts

Posted 24 April 2013 - 01:25 PM

solo para complementar el código de nuestro amigo egostar, coloca un botón en tu formulario dale doble click y en el editor de código que se abre remplaza el bloque bengin end del evento Onclick por el proporcionado por nuestro amigo.


despues de haber realizado estos pasos, me esta dando un error despues del TADOQuery.FieldByName('idcompania').AsInteger,
(el error es en la linea 39:  this form of method call only allowed for class methods
  • 0

#19 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4945 posts
  • LocationMéxico

Posted 24 April 2013 - 02:24 PM

¿nos puedes colocar como te quedó el código?
  • 0




IP.Board spam blocked by CleanTalk.