Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Creacion y Acceso a Bases de Datos (https://www.clubdelphi.com/foros/showthread.php?t=29785)

CamiloU 01-02-2006 16:04:01

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.

Jonnathan 01-02-2006 18:58:01

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.

CamiloU 01-02-2006 20:01:07

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.

Jonnathan 02-02-2006 03:01:41

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;) .

cuburu 02-02-2006 03:29:24

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.

CamiloU 02-02-2006 03:56:33

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?


La franja horaria es GMT +2. Ahora son las 08:16:07.

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