Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Problema con consulta sql y access en asp.net y vb.net

199 views
Skip to first unread message

Ivan

unread,
Oct 1, 2006, 8:50:01 PM10/1/06
to
perdonen pero reposteo la consulta pq no puedo acceder a la anterior ni por
el enlace q me llega al email y buscandola aca el foro no la encuentra, parece
como si la hubiesen borrado.

Hola, perdonen que moleste con esto pero no se donde preguntar, me parecio
el foro mas adecuado.
Mi consulta(se las paso asi para que se ve mejor):

"SELECT * FROM [TEMAS] WHERE ([VER] = Ver) " 'Ver=Boolean(true)
+ "And ([CATEGORIA] = pCategoria) " (<--=Text "problematica", talvez)
+ "AND ([TITULO] LIKE pBuscar) " (<---=Text "busqueda")
+ "ORDER BY [FECHA] DESC"

el problema es que no se que es lo que pasa, cuando se agrega la parte
"problematica" a la consulta de sql, esta consulta no devuelve nada, pero si
le saco la parte "busqueda" anda.
la cadena sql se va creando segun opciones del usuario y esta la opcion de
buscar entre los titulos de la tabla(funciona bien) pero lo que quiero es
filtrar la tabla por tipo de producto 1º (pCategoria) y a eso filtrar por la
busqueda del usuario(pBuscar) TODO usando parametros.

+ "And ([CATEGORIA] LIKE pCategoria) " probe con "=" en vez de "LIKE" (no
anda), empeze a separar todo con parentesis (tampoco), de la forma en que me
funciono es ej: "[CATEGORIA] = 'mesa' " pero quisiera poder hacerlo por
parametros("tambpoco armado la cadena con variables) que ademas no entiendo
porque no anda.

CATEGORIA=es el tipo de producto por ejemplo: 'silla'
pCategoria,pBuscar(los 2 son campos de texto),Ver(boolean) y todos son
parametros.


NOTAS:
-La base es en access 2003 uso asp.net 2.0 codigo en VB
-Sin usar parametros todo anda, pero no entiendo pq asi no, tampoco
anteponiendo
un "@" al nombre de los parametros (creo q eso es solo para sqlserver no?)
-No se si sera q habra un numero maximo para la clausula WHERE osea un
limite de
argumentos a comparar o sera la gran longitud q toma la cadena sql
-uso un oledbconnection
paso laa consulta por un oldbcommand "cmd.commandtext"
y agrego los parametros asi:
cmd.parameters.add("pBuscar", oledbtype.Wchar)
cmd.parameters("pBuscar").value= "cad a buscar"
-Tambien me dado cuenta q ahora si destildo Ver de un registro de la DB(osea
lo pongo en false)
en la appweb cuando la cargo me lo sigue mostrando(antes no pasaba) asi q
ahi tambien
hay problemas.

Y si hay algun buen manual de sql q trate parametros y quieran pasarmelos
gracias
tambien yo tengo uno viejito y al parecer esta todo bien peroo no anda.
Bueno espero sus ayudas, y gracias desde ya.

Lord Voldemort

unread,
Oct 2, 2006, 3:36:11 PM10/2/06
to
Puedes empezar corroborando que tu sentencia SQL final esta correcta,
como??? has un debug..

strConsulta = "SELECT * FROM [TEMAS] WHERE ([VER] = Ver) " & etc etc..

luego Debug.WritleLine(srtConsulta) entonces veras en la ventana de salida
como te quedo la sentencia.
solo revisar esta parte SELECT * FROM [TEMAS] WHERE ([VER] = Ver) .. esta
mal, porque Ver lo estas metiendo asi como lo ves dice Ver no dice ni true
ni false porque esta dentro las comillas.., entonces dices que es una
variable booleana, yo te aconsejo que la uses como string, hazlo asi asi..

dim strVer as string
codigo...
codigo..
if quierover = si then
strVer = "True"
else
strVer ="False
end if

luego..
strConsulta = "SELECT * FROM [TEMAS] WHERE ([VER] = " & Ver & ")" '<===
cheka bien las comilas

ahora esta parte..
+ "And ([CATEGORIA] = pCategoria) " <==aqui misma situacion anterior...
estas metiendo pCategoria asi como lo lees pCategoria, no le estas pasando
ningun valor..porque esta dentro de las comillas tienes que ponerlo
+ "And ([CATEGORIA] = " & pCategoria & ") " <== miras los " & ....


aqui estas haciendo lo mismo...


> + "AND ([TITULO] LIKE pBuscar) "

creo que deberia ser...
> + "AND ([TITULO] LIKE (" & pBuscar & ")) " <=== ojo aqui al like le puse
> parentecis para que quede mas o menos asi ya una ves procesada la
> sentencia.... "AND ([TITULO] LIKE (TextoBuscar)) porque el like es una
> una funcion que necesita parentesis (eso creo)


creo que el order by no tienes problemas... jejeje


> + "ORDER BY [FECHA] DESC"

Bueno has el debug de la sentencia completa para ver si esta
correctamente... lee atento los errores que envia el vb que te dicen en que
esta fallando cuando armas una sentencia sql aguila con los mensajes


saludos..


--
Que todo este bonito...

Lord Voldemort
Choluteca, Honduras
Visual Studio 2005 Standard

"Ivan" <ped...@yahoo.com.ar> wrote in message
news:6FB2867B-EC9B-4EC8...@microsoft.com...

Ivan

unread,
Oct 2, 2006, 4:50:02 PM10/2/06
to
Gracias por contestar,
todo q dices esta muy bien, pero lo quiero hacer es la consulta por
"parametros", fijate q lo detalle en el mensaje y pongo como se le agregan
los paramatros a la consulta y los valores a los mismos, quiero solucionarla
por parametros x por las ventajas q ofrecen estos.
Lo de verificar la consulta select final siempre lo hacia con un msgbox
antes de ejecutarla y almenos a mi me parece q esta bien, pero pasa q cuando
le agrego la parte de CATEGORIA no devuelve nada, pero si no anda bien, asi q
nose si es q habra un limite de argumento en la sentencia WHERE o q es lo q
pasa, pq lo q deberia hacer es 1ª seleccionar los reg q tengas Ver= TRUE
2ºCATEGORIA="Mesa" p.ej 3ºBUsCAR="lo q se haya buscado" y cuando se combinan
estas tres no devuelve nada, no es q da un error.
Seguire esperando a verr si a alguien se devela este misterio.
Si tienes un buen manual o sitio donde ver consultas sql por parametros t lo
agradeceria mucho, pq hasta ahora los q he visto, entiendo q esta bien lo q
estoy haciendo (aunq siempre las consultas de ej por parametros q dan son mas
secillas q la mia). SALUDOS

Lord Voldemort

unread,
Oct 2, 2006, 6:09:36 PM10/2/06
to
pues el where no se que tanto aguantara.. hace unos 4 o 5 años arme un where
en runtime y contenia + de 60 condiciones y no fallo.. y con access..jeje
bueno se que no es lo optimo pero en ese entonces para mi no importaba
jeje..

para qe tengas una idea de las consultas por parametro inserta un code
snippet busca
Data - Features de ADO.net algo asi..
como insertar un code snippet.. ponte en cualquier parte de tu codigo y dale
click derecho dice insert code snippet..

este es un SP....que recibe un parametro..

Dim cmd As New SqlCommand()

cmd.Connection = conn

cmd.CommandType = CommandType.StoredProcedure

cmd.CommandText = "CustOrderHist"

' Create a SqlParameter for each parameter in the stored procedure.

Dim customerIDParam As New SqlParameter("@customerID", "ALFKI")

cmd.Parameters.Add(customerIDParam)


Quisas no te devuelva nada porque tienes que usar algo asi mira
para traer los registros que contenga Pa
Nombre Like(%pa%)

traera nombres Papa, Pablo, Pablito, Metapa, Locapa..
no se es % o * para access..

tener un manual.. no tengo .. y creo que el buen manual se adquiere con los
dias mientras vas aprendiendo..
yo he usado las dos formas consultas con parametros y sql dinamico o armado
como le quieras llamar.. y las dos son buenas con el problema del sql
dinamico existen agujeros que tienes que tapar como el sql inyectado...
busca en wipedia sobre eso..

Saludos


--
Que todo este bonito...

Lord Voldemort
Choluteca, Honduras
Visual Studio 2005 Standard

"Ivan" <ped...@yahoo.com.ar> wrote in message

news:0CD6B0B8-33D9-4BDA...@microsoft.com...

0 new messages