Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-12-2006
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 18
BlackDaemon Va por buen camino
Question Consejo para una aplicación ( paradox )

Hola a todos
primero saludo a todos soy nuevo aquí, espero poder conocer amigos y que sea de agrado a la comunidad.

Bueno resulta que estoy en mi primer trabajo xD ya que nunca trabajé soy un chaval no mas, ahora mi jefe quiere que aprenda delphi y eso es lo que estoy haciendo y me gusta mucho el único lenguaje que se es python y algo de php pero ni al caso ahora al grano...

estoy haciendo una aplicación para el "control de asistencia de usuarios ( empleados ). Bueno y decidí usar paradox para eso, ahora lo que no se muy bien es como hacerla cuantas tablas ocupar si van a tener relación unas con las otras.
Bueno la aplicación lo unico que tendrá sera un panel principal donde pondrán un user y pass los empleados y picar en un boton y automaticamente se almacena la fecha y hora en que entro al trabajo y lo mismo para salir mete user y pass y la aplicación guardará la hora y fecha de salida.... bueno esa parte no se como hacerla, habia pensado en hacer una tabla para cada usuarios pero no creo que sea la solucion correcta. y otra es relación entre tablas ( cosa que no se pero puedo aprender ) ahora también tendrá un panel de administración y un panel de usuarios, en el panel de admin lo que podrá hacer es agregar usuarios borrarlos y modificarlos ahhh y ver el reporte de cada usuario ( reporte de las horas totales trabajadas ) esa parte de agregar eliminar modificar usuarios ya la tengo echa ( cosa que me costo mucho ) todo se conecta a una tabla (usuarios.db) y donde se almacenan - nombre, apellidos ... etc el user y pass del usuario y tambien del otro panel que mencioné (panel del usuario) donde tiene un login y que solo puedan ver las horas trabajadas, totales ( solo del user que se logeo )

Bueno creo que eso es todo... necesito consejos y ayudas para poder hacer esta aplicación, ya tengo algo avanzado puesto que recien tengo 1 semana con delphi

bueno espero haber sido claro y que puedan darme una pequeña opinion sobre como hacerla puesto que es la primera que hago.

saludos y gracias de antemano

PD me tendrán mucho por aquí
Responder Con Cita
  #2  
Antiguo 01-12-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Bienvenido a ClubDelphi, el número de mensajes te delata .

Normalmente a cada usuario se le asigna un código, es decir un número entero, y a partir de ahí haces varias tablas con la información que quieras almacenar.

De momento se me ocurren varias tablas:
Código:
tabla usuarios:
CodigoUsuario  (autonumérico) clave primaria
nombre
apellidos
...

tabla login:
CodigoUsuario  (entero) clave primaria
NombreUsuario  char
pass                char

tabla entradas:
CodigoUsuario  entero clave primaria
entrada  datetime clave primaria
salida     datetime
En cuanto a la relación entre tablas, debes saber que Paradox no implementa la integridad referencial, por tanto tienes que hacerlo a mano. Dicho de otra forma, cuando das de alta un usuario, se dispara el autoincremental "codigoUsuario" y ahora tú tienes que copiar ese código a la tabla login para "relacionar ambas tablas". Otras Bases de datos lo hacen automáticamente al relacionar las tablas, paradox no.

Personalmente no te recomiendo paradox, es un sistema muy antiguo, pero es tu elección, no la mía.

Para actualizar las tablas al entrar un usuario en el sistema, puedes tener una TQuery preparada con la instrucción sql de esta forma:

Código SQL [-]
 update entradas set entrada = :fecha where CodigoUsuario = :codigo
para ejecutarla le pasas los parámetros fecha y código.
Código Delphi [-]
query1.Parambyname('fecha').AsDatetime := now;
query1.Parambyname('codigo').AsInteger := < < CodigoUsuario al hacer el login > >
query1.ExecSql;

Cuando quieras hacer un informe de entradas y salidas, puedes usar algo así:
Código SQL [-]
select entrada, salida 
from entradas 
where entradas.codigoUsuario = 3
Así tienes un listado de las entradas y salidas del usuario 3.

Seguro que otra gente te dará otros puntos de vista.

Saludos y buena suerte con el sistema.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 01-12-2006 a las 21:46:13.
Responder Con Cita
  #3  
Antiguo 02-12-2006
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 18
BlackDaemon Va por buen camino
hola lepe

primero muchisimas gracias por responder y tu consejo que me servirán de mucho en este nuevo mundo de delphi
Si, ya leí que eso de las tablas paradox esta pasado de moda y "creo" ademas no soporta mucho SQL pero bueno si es que quiero hacer algo bién tengo que hacer caso a los con mas experiencia como uds.
Ahora quisiera mas consejos como los tuyos o si quieres aumentar algo mas te estaria muy agradecido, de que motor de base de datos usar, cuantas tablas crear que conección entre ellas deve haber y cosas así para que comiense de nuevo mi aplicación puesto que ya la tenia algo echa pero un 20 % creo, bueno espero mas comentarios y consejos y gracias de nuevo por adelantado
gracias y saludos

PD si quieren subo mi proyecto en zip para que lo vean y así puedan tener una idea mas clara y así quedaria aquí el proyecto o por que no comensar uno desde el principio
Responder Con Cita
  #4  
Antiguo 02-12-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
No sé si conoces "la cara oculta de delphi 4" (está desfasado, pero los principios de programación y los métodos que usa son actuales) una búsqueda en google te llevará sin duda al link de descarga.

Lo que más dolores de cabeza te dará es tener en red a paradox funcionando sin fallos, busca en el foro por NETFILEDIR cuando lo necesites.

Si bien es cierto que el sql de paradox no es "actual" (porque se dejó de actualizar) tiene muchísimas características y siempre es más potente que las equivalentes instrucciones en delphi, es una opinión personal. Por ende, hazte de un manual de sql de internet.

Usando otra tecnología, mira en este hilo y en este otro

Para las horas totales, las fechas se guardan como un número flotante:
- la parte entera son los días transcurridos desde el 01/01/1900 (fecha base del calendario del ordenador)
- la parte decimal corresponde a la hora.

Esto permite restar fechas tal que así:
Código Delphi [-]
var  salida, entrada : TDatetime;
     total, horas:word;
begin
total := salida - entrada

horas := hoursBetween(salida, entrada);

Aquí he usado dos técnicas distintas:
- En total tienes los milisegundos transcurridos entre las dos fechas, ahora solo es cuestión de ir dividiendo y restando hasta obtener un resultado del tipo : " 1 día 2 horas 3 minutos 44 segundos"

- En horas, directamente ya tienes 26 horas "y pico"

Depende de qué quieras usar.

Para no tener que recalcular cada dos por tres las horas trabajadas, podrías añadir un campo en la tabla Entradas (que nombre más malo para esa tabla, quizás cambiando el nombre a "Horario" quedara más entendible), en fin, en esa tabla añades un campo "Horas" de tipo Double, de tal forma que al introducir la fecha de salida, también calculas la diferencia entre ambas y lo guardas, para solicitar listados te podría ayudar mucho.

Edito: Siendo tu primer programa en Delphi y con pocos conocimientos como tú has dicho, para ser sincero y realista, podrías usar Paradox, te dará dolores de cabeza, pero no hace falta muchos conceptos para hacerlo funcionar, más que nada hace falta imaginación para resolver los problemas que te llegarán. Con Firebird u otro sistema, necesitarás entender los conceptos y algo más de pericia al volante. Existe mucha información sobre Interbase / Firebird, pero la mejor documentación, viene en inglés en www.ibphoenix.com Si dominas el inglés leído, no te lo pienses y cambia a Interbase / Firebird / Mysql / etc.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 02-12-2006 a las 13:08:21.
Responder Con Cita
  #5  
Antiguo 02-12-2006
Avatar de BlackDaemon
BlackDaemon BlackDaemon is offline
Miembro
 
Registrado: dic 2006
Ubicación: Bolivia - Santa Cruz
Posts: 206
Poder: 18
BlackDaemon Va por buen camino
Hola nuevamente Lepe te agradesco de nuevo por la respuesta clara y sin mas vueltas que dar ... mira yo yo tengo la biblia del delphi 4 en PDF y la verdad es que no le di una pasada ( error mio ) ahh y también tengo varios tutos de SQL que por cierto entiendo mas o menos todo los queryes que me ponen. Pero bueno ahora la leeré un poco mas que todo eso de las bases de datos me interesa mucho, ahora estoy en el trabajo, disculpen por no responder antes por que estaba haciendo otras cosas y ademas esperando mas respuestas para asi dar otra de mis preguntas jejeje... bueno la cosa es que hablando con el jefe le comente lo del problema de paradox y me dijo que no hay problema por que solo será para un PC y no se trabajará en red con ese sistema de asistencia de empleados o usuarios bueno como pero par ami no es ningún problema pasarme a otro motor de base de datos.. y no conosco FIREBIRD y tampoco INTERBASE pero si MYSQL, pero repito yo no me hago problema de aprender lo que sea si para eso estoy pero por el momento creo que esta bién el uso de tablas PARADOX

Bueno quiero mostrarles mi avance hasta este momento, no se si álguien se molestará en mirarlo pero bueno ya hice la intención y cuando lo complete el que quiera aprender me puede pedir el source ( me refiero a newbies como yo )

Bueno espero mas comentarios o consejos para hacer mas que todo las tablas por que eso de tomar la decición que motor voy a usar me da igual y todos se "deben" manejar de una igual forma o parecida bueno eso es todo y muchas gracias por toda la colavoración del foro


saludos gente


Fichero Adjunto ( control de asistencia )

http://www.mytempdir.com/1095772

PD mi trabajo de 5 dias con delphi
Responder Con Cita
  #6  
Antiguo 03-12-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Código Delphi [-]

procedure TFAgregar_Usuario.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  //Cerramos la Tabla al cerrar el form
  TUsuarios.Cancel;
  //liberamos el formulario de memoria
  //Action := caFree;
end;

¿Seguro que cierras la tabla? jejeje para mí que el Code Insight de delphi te ha jugado una mala pasada, en lugar de Close estas usando Cancel

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consejo para impresion lbidi Impresión 2 02-08-2006 03:58:22
Consejo aplicación Internet (Backups) Gabriel Firebird e Interbase 2 26-12-2005 15:36:59
Consejo para manejar tablas Paradox Coco_jac Varios 8 17-11-2005 17:27:17
Consejo para Acelerar Procesos manuelpr Varios 2 08-03-2005 09:02:22
Consejo para desarrollar en linux Casimiro Notevi Varios 2 05-01-2005 10:41:51


La franja horaria es GMT +2. Ahora son las 06:46:49.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi