Ver Mensaje Individual
  #9 (permalink)  
Antiguo 11/06/2008, 00:42
Avatar de Txoco
Txoco
 
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 16 años
Puntos: 7
Respuesta: Sentencia Update con Boolean

Hola!

Me atrevo a deducir que los campos tipocomprobante, comprobante, sucursal, perfil, usuario, listado y auditoria son de tipo booleano (tipo "Si/No" en Access)... si ese es el caso, fíjate que les estás asignando 0 (cero) o 1, cuando siendo booleanos el dato que aceptan es únicamente True o False.

Prueba a utilizar esta concatenación en lugar de la tuya, a ver si te funciona:

Código:
SQL = "UPDATE perfiles SET codperfil= '" & TxtCodigo.Text & _
      "',nombre= '" & TxtNombre.Text & _
      "',tipocomprobante= " & Iif(ChkTC.Value=1, "True", "False") & _
      ",comprobante= " & Iif(ChkC.Value=1, "True", "False") & _
      " ,sucursal= " & Iif(ChkS.Value=1, "True", "False") & _
      " ,perfil=" & Iif(ChkP.Value=1, "True", "False") & _
      " ,usuario=" & Iif(ChkU.Value=1, "True", "False") & _
      " ,listado= " & Iif(ChKl.Value=1, "True", "False") & _
      " ,auditoria=" & Iif(chkA.Value=1, "True", "False") & _
      " WHERE codperfil= " & TxtCodigo.Text
(fíjate en que no se concatena directamente el valor del checkbox, que siempre es uno o cero).

La función IIf lo que hace es evaluar el primer parámetro, igual que un If normal, y devolver el segundo parámetro si la condición es cierta, o el segundo si es falsa; eso significa que "IIf(ChkA.Value=1, "True", "False")" devuelve la cadena "True" si ChkA.Value es 1 y la cadena "False" si ChkA.Value no es uno, porque recuerda que también puede admitir el valor 2.