Checkbox no me funciona

19/04/2010 - 14:35 por sebastico | Informe spam
Amigos

Me he estado quebrando la cabeza para programar para una bd en Access 2003,
una búsqueda mediante checkboxes, sin embargo, no he tenido éxito. Me han
facilitado un código que, sin embargo, no me funciona como les indico más
adelante.

Tengo un formulario y en el Header form están los unbound checkboxes y un
botón para activar la búsqueda. La sección Detail tiene las cajas de texto
que muestra los registros encontrados en la búsqueda al marcar uno o varios
checkboxes.

Este es el código

Option Compare Database
Option Explicit

Private Sub bFiltrar_Click()
Dim strTmp As String
Dim lngLen As Long
Dim strWhere As Integer

strTmp = ""
If Me.chkBD.Value Then
strTmp = "'BDs',"
End If

If Me.chkBE.Value Then
strTmp = strTmp & "'BES',"
End If

If Me.chkCON.Value Then
strTmp = strTmp & "'CONS',"
End If

lngLen = Len(strTmp) - 1
If lngLen > 0 Then
strWhere = "TemsID IN (" & Left$(strTmp, lngLen) & ") AND "
End If
End Sub

La variable strWhere es la que no he podido declarar, he usado string, long,
integer, Boolean, byte y no me funciona.

“TemsID, se refiere a un campo numérico

Además estas son las referencias que tengo en Access y desconozco si falta
alguna
Visual Basic For Applications
Microsoft Access 11.0 Object Library
OLE Automation
Microsoft DAO 3.6 Object Library
Microsoft ActiveX Data Objects 2.5 Library

Me pueden ayudar con este problema o bien indicarme si lo que necesito hacer
(buscar mediante checkboxes) no se puede hacer en la forma que necesito.

Muchas gracias

Preguntas similare

Leer las respuestas

#1 Ignacio
19/04/2010 - 14:56 | Informe spam
¡Hola, Sebastico!

strWhere debe ser declarado com string.
Además al construirlo falta algo después de "AND" o sobra éste.
Por otra parte is TemsID se refiere a un campo numérico no entiendo
cómo puede adoptar los valores BDs, BES y/o CONS.

Espero que te sirva de ayuda.

Un saludo,
Ignacio.
Respuesta Responder a este mensaje
#2 Juan M. Afan de Ribera
20/04/2010 - 11:13 | Informe spam
paso a paso por instrucciones -F8La variable debes declararla como String.
Eso para empezar y ya no lo cambies. El hecho de que te funcione o no te
funcione es simplemente y como ya te habiamos dicho porque no estabas
formando adecuadamente la cadena del strWhere.

Deberías de conocer un poco las herramientas para depurar el código. Son muy
útiles. Están en el menu de la ventana de Visual Basic, depuracion (paso a
paso por instrucciones -tecla F8-, que ejecutará el código línea a línea,
combinandolo con puntos de interrupción - alternar puntos de interrupción -
tecla F9, que parará la ejecución del código en la línea donde lo pongas).
También, después de cada línea een la que se esté asignando cadenas o valores
a la variable strWhere, puedes poner una línea de código:

Debug.Print strWhere

que lo que hará será escribir en la ventana de Inmediato (activar en Visual
Basic menu, ver, ventana inmediato) el valor que tenga en ese momento la
variable strWhere. Hazlo así y verás como puedes ir entendiendo el código que
has escrito y qué es lo que hace, ya sea que lo haga bien o que lo haga de
manera diferente a como esperabas.

Por otro lado, no te limites a escribir el código que has retocado. Eso solo
provoca perdida de tiempo en el que te lee. Debes indicar los cambios que has
ido haciendo al código, donde te señala error, qué error te aparece, etc etc.
Cuanta más información y mas detalles sobre loq ue pasa o no pasa, será más
fácil para el que te responde. Si no, la impresión que tenemos desde aquí es
de una persona que pone aquí un código y más o menos dice: "venga, arreglame
esto que no funciona... voy a hacerme un cafelito y cuando vuelvo lo quiero
todo listo!" y evidentemente ese no es el espiritu de estos foros. También
supongo que esa no es tu intención, no?

Saludos desde Barcelona,
Juan M. Afán de Ribera
http://accessvbafaq.mvps.org


"sebastico" wrote:

Gracias por la respuesta y siento el tener que haber preguntado variaqs veces
por un tema similar.

Las respuestas que me han dado no han solucionado mi problema, quizá por mi
falta de conocimiento en vba.Es pro eso que siempre incluyo el código para
explicarme mejor.

He declarado la variable también con tu dices pero tampoco funciona. También
la he declarado como integer, long, etc. y corre. Sibn embargo cuando la
declaro como String no da error, pero, tampoco corre.

Realmente no se que hacer

Muchas gracias por tu ayuda y la de los colaboradores de este foro


"Juan M. Afan de Ribera" wrote:

> Hola Sebastico,
>
> antes que nada querria indicarte que no es buena costumbre abrir mas de un
> hilo de preguntas con el mismo tema, porque sino, los que contestan o incluso
> tu mismo no sabran donde estan las respuestas, las preguntas o los detalles
> de las posibles soluciones.
>
> Yo mismo (y tambien) te comente en un hilo anterior que debias poner
> adecuadamente las comillas simples y las comillas dobles, porque sino, la
> cadena para filtrar no funcionara adecuadamente. Te comente tambien que habia
> un campo llamado [Year] que tenia el mismo nombre que una funcion de Visual
> Basic llamada Year(), etc.
>
> Segun tu codigo, la variable strWhere ha de ser declarada como String, pues
> contiene una cadena de caracteres. No entiendo bien que quieres decir con que
> no has podido declararla. Ya sabes, para declarar una variable se hace asi:
>
> Dim strWhere As String
>
> por ejemplo.
>
> En cualquier caso, contesta desde este mismo hilo a las respuestas que te
> han ido dando y muestra los progresos que has podido ir haciendo y las dudas
> que te surjan sobre esas sugerencias que te han dado. Esa seguramente sera la
> manera en que podras solucionar tu tema.
>
> Saludos desde Barcelona,
> Juan M. Afán de Ribera
> http://accessvbafaq.mvps.org
>
>
> "sebastico" wrote:
>
> > Amigos
> >
> > Me he estado quebrando la cabeza para programar para una bd en Access 2003,
> > una búsqueda mediante checkboxes, sin embargo, no he tenido éxito. Me han
> > facilitado un código que, sin embargo, no me funciona como les indico más
> > adelante.
> >
> > Tengo un formulario y en el Header form están los unbound checkboxes y un
> > botón para activar la búsqueda. La sección Detail tiene las cajas de texto
> > que muestra los registros encontrados en la búsqueda al marcar uno o varios
> > checkboxes.
> >
> > Este es el código
> >
> > Option Compare Database
> > Option Explicit
> >
> > Private Sub bFiltrar_Click()
> > Dim strTmp As String
> > Dim lngLen As Long
> > Dim strWhere As Integer
> >
> > strTmp = ""
> > If Me.chkBD.Value Then
> > strTmp = "'BDs',"
> > End If
> >
> > If Me.chkBE.Value Then
> > strTmp = strTmp & "'BES',"
> > End If
> >
> > If Me.chkCON.Value Then
> > strTmp = strTmp & "'CONS',"
> > End If
> >
> > lngLen = Len(strTmp) - 1
> > If lngLen > 0 Then
> > strWhere = "TemsID IN (" & Left$(strTmp, lngLen) & ") AND "
> > End If
> > End Sub
> >
> > La variable strWhere es la que no he podido declarar, he usado string, long,
> > integer, Boolean, byte y no me funciona.
> >
> > “TemsID, se refiere a un campo numérico
> >
> > Además estas son las referencias que tengo en Access y desconozco si falta
> > alguna
> > Visual Basic For Applications
> > Microsoft Access 11.0 Object Library
> > OLE Automation
> > Microsoft DAO 3.6 Object Library
> > Microsoft ActiveX Data Objects 2.5 Library
> >
> > Me pueden ayudar con este problema o bien indicarme si lo que necesito hacer
> > (buscar mediante checkboxes) no se puede hacer en la forma que necesito.
> >
> > Muchas gracias
> >
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida