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)
-   -   Ayuda con una tabla y sus consultas (https://www.clubdelphi.com/foros/showthread.php?t=3580)

CI>140 11-09-2003 23:04:51

Ayuda con una tabla y sus consultas
 
Es que deplano no me doy idea para esto

Mi duda es la siguiemnte y espero me puedan ayudar

cuento con una base que tiene 14 campos que son:
Clave, Partida,Concepto,Enero,Febrero,Marzo...,Diciembre

tuvo que ser asi por ciertos problemas de diseño ahora necesito realizar la busqueda con respecto a los parametros Clave, Partida y alguno de los meses.

ejemplo

Clave Partida Concepto Enero Febrero ... Diciembre
1234 0001 XXX $0 $10 $5
1234 0002 yyy $5 $15 $0
1234 0003 zzz $0 $3 $7
2345 0001 XXX $0 $10 $5
2345 0002 yyy $5 $15 $0
2345 0003 zzz $0 $3 $7

Tengo un combobox que me muestra las claves que las toma por medio de un Table y los filtro con un bucle para que no se repita 3 veces el 1234 y 3 veces el 2345, de ahi en el evento Exit de ese combobox hace que se cambie otro combobox y muestre las partidas contenidas en ese evento, ahora por medio de un TDATETIME jalo el mes y de ahi no se como hacerle para que se dirija al campo deseado.

ejemplo Combobox1 = 1234 automaticamente el Combobox2 obtiene 0001,0002 y 0003 selecciono el 0002 y de ahi con el TDATETIME = Febrero deberia devolverme el valor de ese campo que es $15 hacia una variable o label, se aceptan sugerencias, si con Table, Query o como, no se que utilizar y menos de que manera

tengo una base llamada presupuesto.db y esta hecha asi

Clave String 12
Partida String 4
Concepto String 30
Enero Money
Febrero Money
Marzo Money
...
...
Diciembre Money


ahora cuento con unos datos ya almacenados asi



Clave Partida Concepto Enero Febrero ... Diciembre
1234 0001 XXX $0 $10 $5
1234 0002 yyy $5 $15 $0
1234 0003 zzz $0 $3 $7
2345 0001 XXX $0 $10 $5
2345 0002 yyy $5 $15 $0
2345 0003 zzz $0 $3 $7


ahora por medio de un Table1 y DataSource1 hago que se llene un combobox1 con las claves, con ese ejemplo el combo solo tiene dos claves, la 1234 y la 2345 porque ocupo un buccle para que no cargue los repetidos, ahora de igual manera lo hace para las partidas qe estas aparecen en un combobox2 una vez que yo cambio el combobox1, cuando escojo ejemplo la clave 2345 el combobox2 se llena con 0001, 0002 y 0003, ahora necesito que cuando yo escoja 2345 (combobox1) y 0002 (del combobox2) mas por medio de TDATETIME pueda saber el mes actual y se busque en la base el campo y me arroje el contenido, espero poder darmre a entender y que me ayuden, msn ajurado@hotmail.com

champy 12-09-2003 00:21:31

Te haces entender perfectamente, lo único que no entiendo del todo es el tema del TDateTime, TDateTime es un tipo de dato no un componente, ¿Qué quiere decir?, ¿Elijes tu el mes en algún sitio o quieres cojer el mes actual?... supondre que lo que quieres es el mes actual y te pondre un ejemplo

Creo que lo más sencillo que puedes usar es un TQuery, le das la propiedad DataBaseName si conectas por medio de un TDatabase o el Alias y escribes la SQL de busqueda que necesites, tengo la sensación y corrijeme si me equivoco de que no tienes mucha idea de SQL, te recomiendo que te documentes, en fin, seria algo asi...

Procedure LOQUESEA;
Var
Mes : Integer;
MesStr : String;
Begin


//Primero sacamos el mes actual en un entero
Mes := StrToInt ( FormatDateTime('mm', now) );

Ese numero de mes... ¿a que campo de la tabla corresponde?
Case mes of
1: MesStr := 'enero';
2: MesStr := 'febrero';
3: MesStr := 'marzo';
4: MesStr := 'abril';
5: MesStr := 'mayo';
6: MesStr := 'junio';
7: MesStr := 'julio';
8: MesStr := 'agosto';
9: MesStr := 'septiembre';
10: MesStr := 'octubre';
11: MesStr := 'noviembre';
12: MesStr := 'diciembre';
end;


Se supone que la clave primaria la tenemos guardada en los Strings Clave y Partida

Escribimos la sentencia SQL
TQuery.Sql.Text := "select "+MesStr+" from presupuesto where clave = "+Clave+" and Partida = "+Partida;

Abrimos la SQL y ponemos el valor donde sea que lo queremos

TQuery.Open;
TLabel.Caption := TQuery.FieldByName(MesStr).AsString;
TQuery.Close;


Es asi de sencillo y así de complicado, espero que te sirva de ayuda y si te queda alguna duda no tengas reparos en preguntar

Salu2 a To2


La franja horaria es GMT +2. Ahora son las 15:19:27.

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