Programación General > Visual Basic 6.0 e inferiores
Consulta Con Checkbox
(1/1)
az8:
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:
Coloca la propiedad 'Value=1' para que el CheckBox te quede seleccionado.
az8:
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 ---SqlPagosHechos = "SELECT MesPagado from Pagos where IdAlumno= '" & LVAlumnos.SelectedItem.Text & "' " Call OnRs(rspago, SqlPagosHechos) mes = rspago.Fields("MesPagado") If mes = "Enero" Then chkEne.Value = 1 Else chkEne.Value = 0 If mes = "Agosto" Then chkAgo.Value = 1 Else chkAgo.Value = 0 If mes = "Septiembre" Then chkSep.Value = 1 Else chkSep.Value = 0
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:
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 --- Dim mes(0 To 11) As String Private Sub Form_Load() Call asignaMesesEnd Sub Private Sub asignaMeses() mes(0) = "Enero" mes(1) = "Febrero" ... ... mes(10) = "Noviembre" mes(11) = "Diciembre"End Sub
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
--- Fin de la cita ---
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....
Navegación
Ir a la versión completa