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 11-09-2003
CI>140 CI>140 is offline
Miembro
 
Registrado: ago 2003
Ubicación: Boca del Rio Veracruz
Posts: 17
Poder: 0
CI>140 Va por buen camino
Unhappy 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
Responder Con Cita
  #2  
Antiguo 11-09-2003
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
... 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.
Responder Con Cita
  #3  
Antiguo 11-09-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Algun comentario mas

Cita:
Posteado originalmente por CI>140
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
esto lo puedes solucionar de la siguiente manera (sin tener que hacer bucles)

Código:
select disctint clave from tabla
Lo del campo del mes, tambien puedes saber su nombre si en lugar de tenerun TDatetimePicker o el componente que quieras con una fecha, tienes un combo con todos los meses del año y dejas que el usuario seleccione un mes
O si lo prefieres puedes hacer

mes := FormatDateTime('mmmm', Fecha);

Espero te sirva
Responder Con Cita
  #4  
Antiguo 11-09-2003
CI>140 CI>140 is offline
Miembro
 
Registrado: ago 2003
Ubicación: Boca del Rio Veracruz
Posts: 17
Poder: 0
CI>140 Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 12-09-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
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);
De todas maneras, te aconsejo que nombres de campos estilo "Enero", "Febrero",.... no los utilices, mejor utiliza una nomenclatura numerica "1", "2",..... ya que luego si te encuentras en tu caso (el querer acceder a un mes u otro dependiendo de una variable), es mejor el caso numerico para saber el mes sin problemas

Código:
NombreCampo := FormatDateTime('m', Date);
Y te evitas problemas de idioma, mayusculas o minusculas,....

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);
Bueno, si hay algo que no termines de entender, pos aqui estamos
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


La franja horaria es GMT +2. Ahora son las 22:57:47.


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