Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: karmany en 3 Octubre 2009, 20:04 pm



Título: Duda SQL - base de datos
Publicado por: karmany en 3 Octubre 2009, 20:04 pm
VB6
Tengo una base de datos con una sóla tabla: "Tabla1" y con un sólo campo: "Campo1" lo hago lo más sencillo para entender mi problema... (Control de datos Data)

1º) Quiero buscar todos los registros vacios de "Campo1" y perfectamente sale de este modo:
Código
  1. Data1.RecordSource = "SELECT * FROM Tabla1 WHERE Campo1 = NULL"

2º)Ahora pongo el criterio de que quiero que aparezcan todos los registros que comienzen por "A". También sale perfectamente de este modo:
Código
  1. Data1.RecordSource = "SELECT * FROM Tabla1 WHERE Campo1 LIKE '" & criterio & "'"

3º) Ahora viene mi DUDA... Quiero que cuando el criterio sea = "" me aparezcan todos los registros, es decir, TODOS incluídos los registros nulos. Sin embargo cuando el criterio sea <> "" pues que no aparezcan los registros nulos.
Una solución sencilla pero que no quiero hacer es la siguiente:
Código
  1. if criterio = "" then
  2.    "SELECT * FROM Tabla1 WHERE (Campo1 LIKE '" & criterio & "') OR (Campo1 = NULL)"
  3. Else
  4.    "SELECT * FROM Tabla1 WHERE Campo1 LIKE '" & criterio & "'"
  5. End If

Sin embargo, no lo quiero hacer así porque mi consulta es realmente bastante más amplia y tendría que poner muchísimas condiciones...

Mi pregunta es... ¿Se podría poner la condición criterio="" dentro de la consulta SQL?
Pongo un ejemplo, se podría intentar hacer algo así: porque no lo consigo y sería para mi perfecto:
Código
  1. "SELECT * FROM Tabla1 WHERE (Campo1 LIKE '" & criterio & "') OR ((Campo1 = NULL) AND ('criterio' = ""))"

A alguien se le ocurre la forma de hacerlo???? existe alguna forma de ver TODOS los registros, incluídos los nulos de otra forma diferente...
Cualquier sugerencia que se os ocurra por favor comentármela..

Un saludo y gracias.
karmany



Título: Re: Duda SQL - base de datos
Publicado por: cobein en 3 Octubre 2009, 20:11 pm
Si haces algo asi?

Código:
"SELECT * FROM Tabla1 WHERE (Campo1 LIKE '" & criterio & "')"  & iif(  criterio = "", "OR (Campo1 = NULL)",vbnullstring)


Título: Re: Duda SQL - base de datos
Publicado por: karmany en 3 Octubre 2009, 20:25 pm
cobein MUCHÍSIMAS GRACIAS...
Me has ahorrado muchísimo trabajo inútil. Te lo agradezco enormemente.

Un saludo