Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-03-2008
csja csja is offline
Registrado
 
Registrado: nov 2007
Posts: 4
Poder: 0
csja Va por buen camino
Unhappy Parametros en consulta SQL

Buenas a todos los foreros, mi problema es el siguiente:

Tengo una tabla llamada clientes en una base de datos. Bien, de esta tabla me gustaría hacer una consulta que me devolviera una serie de datos. Mi tabla tiene unos campos llamados Musica1, Musica2, etc... y Bebida1, Bebida2, etc... En un formulario tengo unos checkbox que marco y desmarco para pasarle los parametros a la consulta y un botón que es el encargado de ejecutar la consulta y un report que muestre los resultados de la consulta. La consulta que yo hago es la siguiente para que os vayais orientando:

SELECT SEXO, NOMBRE, APELLIDO1, APELLIDO2, FECHANAC, EDAD, DIRECCION, PROVINCIA, TELEFONO, EMAIL, DEDICAS, MUSICA1, MUSICA2, MUSICA3, MUSICA4, MUSICA5, MUSICA6, MUSICA7, BEBIDA1, BEBIDA2, BEBIDA3, BEBIDA4, BEBIDA5, BEBIDA6, BEBIDA7, BEBIDA8, INFORMADO
FROM CLIENTES
WHERE (SEXO="HOMBRE")
AND (BEBIDA1=:RON)
AND (BEBIDA2=:WHISKY)
AND (BEBIDA3=:GINEBRA)
AND (MUSICA1=:POPESPANOL)
AND (MUSICA3=:POP8090)
AND (MUSICA4=:POPINTERNACIONAL)
AND (MUSICA5=:SALSA);

y los if con los checkbox del formulario son así:

if CheckBox1.Checked then
DataModule3.QueHombres.Parameters[0].Value := 'Ron'
else
DataModule3.QueHombres.Parameters[0].Value := 0;

El caso es que en mysql poner un valor cero es como tener un valor vacio y mysql no le da importancia a ese valor o no lo interpreta, de tal manera que si yo pongo

SELECT SEXO, NOMBRE, APELLIDO1, APELLIDO2, FECHANAC, EDAD, DIRECCION, PROVINCIA, TELEFONO, EMAIL, DEDICAS, MUSICA1, MUSICA2, MUSICA3, MUSICA4, MUSICA5, MUSICA6, MUSICA7, BEBIDA1, BEBIDA2, BEBIDA3, BEBIDA4, BEBIDA5, BEBIDA6, BEBIDA7, BEBIDA8, INFORMADO
FROM CLIENTES
WHERE (SEXO="HOMBRE")
AND (BEBIDA1="RON")
AND (BEBIDA2=0)
AND (BEBIDA3=0)
AND (MUSICA1=0)
AND (MUSICA3=0)
AND (MUSICA4=0)
AND (MUSICA5=0);

desde phpmydamin me devuelve todos los hombres de que beben ron pero desde delphi no me devuelve nada.

Alguien sabe el caracter vacío en delphi o si hay que ponerle alguna propiedad a los parametros para que me saque la misma consulta que desde el phpmyadmin????
Responder Con Cita
  #2  
Antiguo 23-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Asi el campo esta vacio:
Código Delphi [-]
SELECT * FROM CLIENTES
WHERE (SEXO="HOMBRE")
AND (BEBIDA1=' ')
AND (BEBIDA2=' ')
AND (BEBIDA3=' ')
AND (MUSICA1=' ')
AND (MUSICA3=' ')
AND (MUSICA4=' ')
AND (MUSICA5=' ');
Pero sigo sin saber que es lo que preguntas?
Que tiene que ver con los parametros?.
Saludos
Responder Con Cita
  #3  
Antiguo 23-03-2008
csja csja is offline
Registrado
 
Registrado: nov 2007
Posts: 4
Poder: 0
csja Va por buen camino
Edito mi respuesta [Caral], sigo con el mismo problema. Nose si me equivocaré en la consulta que creo que va a ser eso, haber.
Yo tengo un cliente que bebe ron y whisky y otro que solamente bebe ron ok? Si yo quiero consultar el que bebe ron y whisky me devuelve un registro, hasta ahi correcto, pero si consulto el que bebe ron, me devuelve un cliente también cuando me debería de devolver 2, por eso decía antes lo del caracter 0, que desde phpmyadmin hago la consulta y me devuelve los 2 pero desde delphi no me devuelve los 2, me entiendes ahora??

Ejemplo:

Consulta desde phpmyadmin en sql:

SELECT *
FROM CLIENTES
WHERE SEXO = "HOMBRE"
AND BEBIDA1 = "RON"
AND BEBIDA2 =0

Devuelve 2 registros mientras que la misma consulta desde delphi devuelve 1, ahí está mi problema :S


Un saludo y gracias :$

Última edición por csja fecha: 23-03-2008 a las 22:16:50.
Responder Con Cita
  #4  
Antiguo 23-03-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Lo correcto es lo que hace Delphi, puesto que tu consulta le está pidiendo clientes que beben "Ron" y "Whisky", no los que beben una de las dos cosas en ese caso tendrías que utilizar Or en vez de And.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 23-03-2008
csja csja is offline
Registrado
 
Registrado: nov 2007
Posts: 4
Poder: 0
csja Va por buen camino
Red face

Le acabo de cambiar todos los AND por OR y aunque no le pase ningún parametro a la consulta siempre me devuelve todos los registros que sean Hombres que hay en la tabla :S Me puedes echar una mano con la consultita?? :$:$

Gracias!
Responder Con Cita
  #6  
Antiguo 23-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Tabla1 Cliente:
CodigoCliente
NombreCliente
Etc.
Tabla2 Consumo
CodigoCliente
Bebida
Musica

Haces una referencia de las dos tablas.
En la de clientes solo tienes los clientes.
En la de consumo tienes los datos de consumo por codigo de cliente.
cliente 1
bebidas
ron
wisky
brandi
musica
rok
blues
merenge
salsa

Con solo hacer una referencia al codigo del cliente te dara todos los datos, asi te evitaras repetir tantas veces bebida y musica, recuerda, tal vez el cliente le antojen mas tipo de musica o bebida.
Saludos
Responder Con Cita
  #7  
Antiguo 23-03-2008
csja csja is offline
Registrado
 
Registrado: nov 2007
Posts: 4
Poder: 0
csja Va por buen camino
Vale [Caral] hago otra tabla con el id del cliente la bebida y la musica y referencio las 2 tablas por el id del cliente, pero como bien has dicho, cada cliente le puede gustar mas de una bebida o mas de un tipo de musica, como se almacenaria en la tabla si solo tiene un campo de musica y de bebida por el id del cliente?? Esa parte no la entiendo :$

Perdona por mi torpeza, pero si me lo explicaras mejor te lo agradeceria

Gracias anticipadas
Responder Con Cita
  #8  
Antiguo 23-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola

CodCliente......bebida......musica
.......1.................ron...........rok
.......2................wisky.........rok
.......1................wisky.........blues
.......3.................ron...........salsa
.......2................vodka.........
.......1................brandi.........
.......1.................................merenge

El cliente se repite, la bebida y la musica no.
Cada vez que busques al cliente, este mostrara las bebidas y musica que este tenga sin importar los espacios en blanco.
Saludos
Responder Con Cita
  #9  
Antiguo 23-03-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Una forma de hacer la consulta:
Código SQL [-]
SELECT Clientes.NombreCliente, consumo.CodCliente, consumo.Bebida, consumo.Musica
FROM Clientes INNER JOIN consumo ON Clientes.CodCliente = consumo.CodCliente
WHERE (((consumo.CodCliente)=1));
Con esta consulta te desvolverá el cliente 1 y todas la bebidas y musica de este.
Lo acabo de probar para estar seguro, funciona perfectamente.
Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
consulta con parametros fecha didier MySQL 2 02-08-2006 15:58:25
Parametros integer en consulta php jgutti PHP 2 14-06-2006 21:16:20
Parametros en Consulta SQL joi Varios 2 31-10-2005 19:36:49
Consulta en SQL con muchos parámetros Aprendiendo SQL 5 05-04-2005 22:30:13
consulta con parametros en blanco merlin SQL 2 02-12-2003 16:13:20


La franja horaria es GMT +2. Ahora son las 13:09:48.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi