Visual Basic - Pasar sentencia SQL a un ADODC

Life is soft - evento anual de software empresarial
 
Vista:

Pasar sentencia SQL a un ADODC

Publicado por james (1 intervención) el 19/03/2007 22:55:33
hOLA AMIGOS , TENGO EL SIGUIENTE INCOVENIENTE :
programo en Visual basic 6.0 con Access XP

eN MI FORMULARIO TENGO UN CONTROL adodc el cual EN LA PROPIEDAD RECORDSOURCE PUSE LO SIGUIENTE :

SELECT * FROM VENTAS WHERE CODIGO='ZAPATOS'

HASTA AHI FUNCIONA BIEN, PERO EL CODIGO PUEDE SER ZAPATOS, ALIMENTOS,VESTIDOS Y ESTOS SON MOSTRADOS EN UNA CAJA DE TEXTO (text1.text)

entonces para k mi control adodc me muestre solo los registros correspondientes aL CODIGO ESCOGDO he la propiedad del datasource puse:

SELECT * FROM VENTAS WHERE CODIGO='" & Text1.text &"'
(Comillas simples, doble comilla )

y al ejecutar el programa no me sale NADA ni me vota error , que podria estar haciendo mal ayudenme por favor . gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pasar sentencia SQL a un ADODC

Publicado por deniro (1 intervención) el 20/03/2007 00:17:38
Where codigo=Dobles simple & text1.text & simple doble sino hazlo con like a ver que pasa. A veces no me ha funcionado con = y si con like
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar sentencia SQL a un ADODC

Publicado por Benjo (679 intervenciones) el 20/03/2007 01:54:19
James

En tu senetencia estás utilizando bien las primeras comillas, es decir, comillas simples y luego dobles para concatenar, pero en las comillas finales, sólo ponés comillas dobles y luego una simple. Faltaría un juego de dobles.
Sería así

sqlstr= "SELECT * FROM VENTAS WHERE CODIGO='" & Text1.text & "'"
Primero (Comillas simples + doble comilla )
Al final (comillas dobles + comilla simple + comillas dobles)

En caso que quieras hacer una selección abierta y no limitarla taxativamenbte a lo que ingreses en el textBox, podrías usar como te suguiere Deniro, el operador LIKE.

Pero ahí tendrías que definir si el texto escrito por el suaurio en el TextBox, debe estar al principio del campo, al final del campo o en cualquier parte del campo

Esta expresión hace coincidir el texto ingresado con cualquier parte del campo CODIGO

sqlstr= "SELECT * FROM VENTAS WHERE CODIGO LIKE '%" & Text1.text & "%'"

Esta expresión hace coincidir el principio del campo CODIGO con el texto ingresado

sqlstr= "SELECT * FROM VENTAS WHERE CODIGO LIKE '" & Text1.text & "%'"

Esta expresión hace coincidir el final del campo CODIGO con el texto ingresado

sqlstr= "SELECT * FROM VENTAS WHERE CODIGO LIKE '%" & Text1.text & "'"

también podés usar comodines para reemplazar parte del texto como

Carácter especial a[*]a a*a aaa
Múltiples caracteres ab* abcdefg, abc cab, aab
Un único carácter a?a aaa, a3a, aBa aBBBa
Un único número a#a a0a, a1a, a2a aaa, a10a
Intervalo de caracteres [a-z] f, p, j 2, &
Fuera de un intervalo [!a-z] 9, &, % b, a
Distinto de número [!0-9] A, a, &, ~ 0, 1, 9
Combinado a[!b-m]# An9, az0, a99 abc, aj0

Copyright (c) 1996 Microsoft Corporation

Si usas DAO en vez de el signo % , debés usar el signo (asterisco) *
En ADO se utiliza el signo (porcentaje) %

Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar sentencia SQL a un ADODC

Publicado por James (149 intervenciones) el 20/03/2007 14:43:46
Hola amigos agradesco el interes en poder ayudarme pero las altrernativas que me han dado no han podido ayudarme. Para explicarme mejor:

El código que pretendo poner es en el RECORDSOURCE de la ventana de Propiedades del ADODC (DONDE EXISTEN DOS PESTAÑAS QUE DICE ALFABETICA O POR CATEGORIAS).

Asi es que aqui no va la parte de :

sqlstr= " ..."
la declaracion de la cadena sqlstr

simplemente va el codigo .
si le pongo

select * from ventas where codigo='zapatos'

asi tal como esta , funciona bien. Pero como dije este codigo lo da un textbox

select * from ventas where codigo=' " & text1.text & " '

no me vota error ni me vota nada, es como si no recibiera el contenido del text1.text.

Por favor algo que este haciendo mal
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar sentencia SQL a un ADODC

Publicado por James (149 intervenciones) el 20/03/2007 15:01:32
mmm... algo interesante he realizado alguna pruebas como poniendo lo siguiente en el campo CODIGO DE MI TABLA VENTAS:
" & TEXT1.TEXT & "

y en el recordsource de mi control ado (en la ventana de propiedes)
puse:

select * from ventas where codigo= ' " & TEXT1.TEXT & " '

ejecute el programa y me sale todos los registros que contiene el codigo
" & TEXT1.TEXT & "

osea es como que todo lo que se pone entre las comillas simple lo lee como una cadena y lo busca en la base de datos. Es por eso que en un principio cuando no existia ese codigo en mi base de datos(" & TEXT1.TEXT & "), no me salia nada por que no existia y por tal motivo tampoco estaba votandome error .Posiblemente exista otra nomenclatura para pasar valores...

Alguna sugerencia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar sentencia SQL a un ADODC

Publicado por Benjo (679 intervenciones) el 20/03/2007 23:21:51
Estabas tratando de incorporar en tiempo de diseño, una referencia a un objeto que se inicializa en modo de ejecución.
Al ponerle doble comilla , le estas indicando al motor de la base de datos que busque todo lo que está dentro de las comillas.
Esa cadena la para que sea dinamica, la tenés que establecer en tiempo de ejecución, en la propiedad RecordSource del Objeto ADODC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar sentencia SQL a un ADODC

Publicado por James (149 intervenciones) el 21/03/2007 16:47:40
Gracias por la ayuda, por favor podriaas poner algun ejemplo o algo de codigo para entenderte mejor.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar