FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Buscar con 3 parametros
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 |
#2
|
||||
|
||||
... Por medio de un TDATETIME jaleo el mes
jaleo el que tienes montado Creo entender que tienes el nº del mes no? podrias crearte una tablita y almacenar los meses, de tal forma que si despues en una cadena sql pones algo parecido a esto: meses[1]:= 'Enero'; meses[2]:= 'Febrero'; .... i:= (numero del mes en cuestion); sql.text := 'Select '+ meses[i] + ' from mitabla where Clave = ' +quotedstr(combobox1.text)+ ' and Partida = '+ quotedstr(combobox2.text)+ ' ;' desde luego no lo he probado, pero creo que cuadrando bien los espacios, podría funcionar. Espero haberte ayudado, o por lo menos darte una pequeña idea de como hacerlo. Saludos. |
#3
|
|||
|
|||
Algun comentario mas
Cita:
Código:
select disctint clave from tabla O si lo prefieres puedes hacer mes := FormatDateTime('mmmm', Fecha); Espero te sirva |
#4
|
|||
|
|||
Gracias por la ayuda pero alparecer no me he explicado bien
espero que me puedan entender ahora 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 |
#5
|
|||
|
|||
No, si te hemos entendido perfectamente, el que creo que no nos has entendido has sido tu , quizas no nos hemos explicado bien
A ver, el tema de cargar el primer TComboBox (combobox1) no hace falta que hagas el bucle que tu dices, no es eficiente (quizas con pocos registros ira rapido, pero cuando la tabla crezca.....). Lo que puedes hacer es lo que te comentaba de la consulta SQL. Esa consulta SOLO devolvera (si esta bien hecha ) las claves distintas de tu tabla. Algo parecido podrias mirar de hacer con el segundo TComboBox (combobox2). El tema de saber el mes en curso (o en tu caso el nombre del campo al que quieres acceder), si es sobre la fecha actual, sería como te puse en el ejemplo anterior, o sea, algo así Código:
NombreCampo := FormatDateTime('mmmm', Date); Código:
NombreCampo := FormatDateTime('m', Date); Una vez sabes el nombre del campo, con una simple consulta SQL puedes obtener el valor deseado Código:
sql := 'select ' + NombreCampo; sql := sql + ' from presupuesto '; sql := sql + ' where clave = ' + QuotedStr(Combobox1.Text); sql := sql + ' and Partida = ' + QuotedStr(Combobox2.Text); |
|
|
|