Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-02-2006
CamiloU CamiloU is offline
Miembro
 
Registrado: dic 2005
Ubicación: Sincelejo - COlombia
Posts: 59
Poder: 19
CamiloU Va por buen camino
Creacion y Acceso a Bases de Datos

Buenos Días.
Espero me puedan colaborar con las siguientes dudas.
Tengo un proyecto que debe manejar tablas de nomina por meses, es decir, Nomina_012006 para Enero, Nomina_022006 para Febrero y asi sucesivamente. Cual es el procedimiento para crearlas desde delphi, de tal forma que al realizar un DecodeDate la tabla asuma los valores de mes y año para la asignacion de su nombre, sabiendo que siempre van a iniciar con Nomina_?

La misma duda tengo para accesarla. Como puedo accesarla si se que se llaman Nomina_* y el resto del nombre varia de acuerdo al mes y año de creación?

Muchas gracias por la colaboracion.
Responder Con Cita
  #2  
Antiguo 01-02-2006
Avatar de Jonnathan
Jonnathan Jonnathan is offline
Miembro
 
Registrado: may 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 64
Poder: 19
Jonnathan Va por buen camino
Buen dia Camilo. ¿No era mas práctico incluir todos los datos en una tabla NOMINA que tuviese los campos "AÑO" y "MES"?.
Pero si estas obligado a trabajar asi... arma las consultas con una función que le pases la fecha y te devuelva la consulta SQL que debe llevar el TQuery:

Código Delphi [-]
function BuscarNomina(Fecha: TDateTime) ;
Var
    Dia, Mes, Anho: integer;
    sAnho, sMes: String;
begin
     DecodeDate(Fecha, Anho, Mes, Dia);
     sMes := IntToStr(Mes);
     if  Length(sMes)=1 then
          sMes := '0' + sMes;
     sAnho := IntToStr(Anho);
     Result := 'SELECT * FROM NOMINA_' + sMes + sAnho;
end;
...
//Lo usarias mas o menos asi:
QueryNomina.SQL.Text = BuscarNomina(Fecha);
QueryNomina.Open();

Para crearlas sustituye la clausula "SELECT" por "CREATE TABLE" y le especificas los campos, es lo mismo, igual se basa en armar la consulta.

Pero insisto: Deberias crear solo una tabla con un campo MES y un campo AÑO. Para diferenciar los registros de nómina que te devuelva por meses y año solo hara falta un poco SQL (poquisimo, ¿Tres Lineas?) en las consultas. Saludos.
__________________
"En el siglo de la estupidez todas las casas comienzan por la fachada" (Fuckowsky)
Planeta Insólito, La Pluma Inspirada

Última edición por Jonnathan fecha: 01-02-2006 a las 19:04:22.
Responder Con Cita
  #3  
Antiguo 01-02-2006
CamiloU CamiloU is offline
Miembro
 
Registrado: dic 2005
Ubicación: Sincelejo - COlombia
Posts: 59
Poder: 19
CamiloU Va por buen camino
Muchas Gracias por la Colaboracion. Respecto a la opcion que propones con una sola tabla, me preocupa que se vuelva inmanejable porque hablamos de novedades de nomina de aproximadamente 10.000 funcionarios. Cada mes generaria en novedades alrededor de 90.000 registros, lo que me daria alrededor de 1.000.000 al año. Soy novato en el manejo de delphi y me preocupa esa cantidad de registros en una sola tabla, en caso de manejarse en forma anual. Imaginate el crecimiento si se hiciera en una sola tabla.

No tengo mucha experiencia en sql y, aunque entendi lo que escribiste, no se en que lado colocarlo. Me podrias dar alguna indicacion basandote en la idea que soy bien novato en delphi.

Gracias.
Responder Con Cita
  #4  
Antiguo 02-02-2006
Avatar de Jonnathan
Jonnathan Jonnathan is offline
Miembro
 
Registrado: may 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 64
Poder: 19
Jonnathan Va por buen camino
Entiendo tu preocupacion Camilo, pero no se si eso que propones sea la solucion mas optima. Con un buen motor de bases de datos y los indices creados correctamente no te deberias preocupar si la base de datos tiene millones de registros. La verdad no se que impacto pueda tener en el rendimiento crear las tablas a medida que vaya pasando el tiempo, seria bueno ver que opinan los demas foristas con respecto a implementar un sistema asi .
__________________
"En el siglo de la estupidez todas las casas comienzan por la fachada" (Fuckowsky)
Planeta Insólito, La Pluma Inspirada
Responder Con Cita
  #5  
Antiguo 02-02-2006
cuburu cuburu is offline
Miembro
 
Registrado: mar 2005
Posts: 63
Poder: 20
cuburu Va por buen camino
Hola.

Estoy de acuerdo con johnatan. No creo que sea una buena idea ir creando las tablas a través de los meses. Es mejor conseguirte un buen manejador de BD como DB2 ú Oracle que se las gastan solos para eso. Además a medida que pase el tiempo quizas tendrías problemas a futuro debido a que tienes información "replicada", viendolo desde cierto enfoque, en la BD.
Responder Con Cita
  #6  
Antiguo 02-02-2006
CamiloU CamiloU is offline
Miembro
 
Registrado: dic 2005
Ubicación: Sincelejo - COlombia
Posts: 59
Poder: 19
CamiloU Va por buen camino
Muchas Gracias por la recomendacion. Me queda una duda. Cual es el motor ideal para una tabla con crecimiento de 1 millon de registro por año. Cabe anotar que al iniciar el proyecto, ya existen tablas "sueltas" que suman aproximadamente 6 millones de registros y deben ser tomadas tambien. Ese tamaño (7 millones de registros) no es muy pesado para una sola tabla?
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
¿Cómo diseñar las bases de datos visualmente?. taita Firebird e Interbase 12 07-09-2006 12:02:31
trabajar con dos conexiones de bases de datos pyanqn Conexión con bases de datos 0 21-12-2005 23:34:41
creacion de usuarios de bases de datos desde delphi el_barto Conexión con bases de datos 3 07-06-2005 20:24:28
Creacion de Bases de datos silviodp Conexión con bases de datos 5 26-11-2004 15:27:42
problemas con el acceso a la bases de datos inexperto MySQL 1 25-10-2004 21:40:34


La franja horaria es GMT +2. Ahora son las 07:30:54.


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