• Domingo 22 de Diciembre de 2024, 03:59

Autor Tema:  Consulta Con Checkbox  (Leído 1493 veces)

az8

  • Miembro MUY activo
  • ***
  • Mensajes: 111
    • Ver Perfil
Consulta Con Checkbox
« en: Viernes 21 de Septiembre de 2007, 20:46 »
0
tengo un problema con una query y unos chekbox.. pues resulta ke mi query me arroja 2 resultados ... aunke me puede arrojar varios... de acuerdo aun parametro...
me arroja estos 2 reslutados

Septiembre
Agosto

lo ke kiero es ke al momento de ejecutar esa consulta desde visual.. tengo 12 checkbox uno para cada mes del año... y lo ke kiero es ke se habiliten y deshabiliten los checkbox correspondientes a los meses del resultado de mi query o sea sep y ago...

espero me ayuden..

Gracias
ate

az8

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Consulta Con Checkbox
« Respuesta #1 en: Viernes 21 de Septiembre de 2007, 20:52 »
0
Coloca la propiedad 'Value=1' para que el CheckBox te quede seleccionado.
El pasado son solo recuerdos, el futuro son solo sueños

az8

  • Miembro MUY activo
  • ***
  • Mensajes: 111
    • Ver Perfil
Re: Consulta Con Checkbox
« Respuesta #2 en: Sábado 22 de Septiembre de 2007, 02:01 »
0
eso ya lo hice y solo me toma y solo me toma el primer resultado de la consulta o sea ke si mi resultado me arroja
Septiembre
Agosto
solo me toma el primer valor o sea "Septiembre" y me activa septiembre
mi codigo es el siguiente

Código: Text
  1. SqlPagosHechos = "SELECT MesPagado from Pagos where IdAlumno= '" & LVAlumnos.SelectedItem.Text & "' "
  2.  Call OnRs(rspago, SqlPagosHechos)
  3.      
  4.     mes = rspago.Fields("MesPagado")
  5.        
  6.         If mes = "Enero" Then chkEne.Value = 1 Else chkEne.Value = 0    
  7.         If mes = "Agosto" Then chkAgo.Value = 1 Else chkAgo.Value = 0
  8.         If mes = "Septiembre" Then chkSep.Value = 1 Else chkSep.Value = 0
  9.  

al ejecutarse solo me activa el chk de septiembre y no me activa el de agosto .... eso es cuando tengo solo 2 registros como resultados pero puedo tener distintos registros obviamente.... esto es el codigo ke genero

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Consulta Con Checkbox
« Respuesta #3 en: Domingo 23 de Septiembre de 2007, 19:22 »
0
Vamoa suponer que la query se ejecuta correctamente es decir que tienes el collation en CI (case insensitive) y que por tanto no falla si tienes guardado 'septiembre'  en vez de 'Septiembre', etc...

Entonces dado que parece ser que tienes 12 controles referidos a meses, yo haría algo como un array de controles checkbox llamados cheMes, donde los índices irían desde 0 para enero hasta 11 para diciembre y meter en una matriz los nombres de los algo así....
Código: Text
  1.  
  2. Dim mes(0 To 11) As String
  3.  
  4. Private Sub Form_Load()
  5.     Call asignaMeses
  6. End Sub
  7.  
  8. Private Sub asignaMeses()
  9.     mes(0) = "Enero"
  10.     mes(1) = "Febrero"
  11.        ...
  12.        ...
  13.     mes(10) = "Noviembre"
  14.     mes(11) = "Diciembre"
  15. End Sub
  16.  
  17.  
  18.  

Entonces puesto que es de esperar que cada consulta chequee los 12 meses (supongo que por abreviar has puesto el ejemplo con 2 meses), entonces haría un bucle que recorriea todas las posibilidades:

Citar
For i = 0 To 11
        cheMes(i).Value = (ucase(rspago.Fields("MesPagado")) = ucase( mes(i))) and 1
Next

Esto implica que no tienes que tener 12 controles con nombre propio, si en un momento dado tienes que setearlos todos a false, con un bucle del tipo 'for i= 0 to 11 : mes(i).value=0 : next' lo puedes hacer frente al caso que pones que tendrías 12 líneas de código redundante.

Aparte del array de controles y de las constantes del nombre de los meses, la expresión:  'rspago.Fields("MesPagado")' es lel result set que devuelve tu consulta, que se compara con la expresión 'mes(i)' , las funciones 'ucase' convierten a matúsculas ambas expresiones sólo en la comparación (lo lógico es que en la asignación de nombre del mes ya lo quedaras en mayúsculas, así se ahorra tiempo de convertir a mayúsuculas el mes), esto evita la sorpresa de que en la bd se haya metido 'enero', 'Enero', 'ENERO', o cualquier otra posibilidad... aún podrías poner un trim(texto) para dado los casos de haber introducido ' enero  ', es decir espacios en la cadena.

Como la evaluación de la expresión da un true-false si el resultado de la consulta es igual que el texto contenido en el indice de la matriz, y puesto que el checkbox recibe sólo valores '0' ó '1' , con 'and 1' convertimos desde true-false a 1-0 .

Saludos....
«Ma non troppo»
----> ModoVacaciones = False<----