SQL - Consulta SQL en VB segun un campo Sí/No

 
Vista:

Consulta SQL en VB segun un campo Sí/No

Publicado por Carlos (5 intervenciones) el 03/07/2003 12:47:02
Hola,
tengo una tabla en access (Pedidos) con un campo Sí/No (Enviado).
En VB necesito realizar una consulta de esa tabla según ese campo.

Lo que hago es:
"SELECT * FROM Pedidos WHERE Enviado <> 0"
Ésta sólo me selecciona un sólo registro donde Enviado es Sí, y en la tabla hay muchos más.
¿Qué hago mal? ¿Cómo se debería hacer la consulta sino?

Gracias, un saludo.
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:Consulta SQL en VB segun un campo Sí/No

Publicado por Isaías Islas (5072 intervenciones) el 03/07/2003 20:33:52
Dice que lo hace desde VISUAL BASIC, ¿a que objeto de VB esta colocando el resultado de su SELECT?, ¿a un TEXTBOX, DATAGRID, etc?.
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: Me explico mejor

Publicado por Carlos (5 intervenciones) el 03/07/2003 21:23:24
De una base de datos creada como:
Set gBD = DBEngine.OpenDatabase("MaxBD.MDB")

Realizo este par de consultas...

Set rsConsulta = gBD.OpenRecordset _
("SELECT * FROM Pedidos WHERE Enviado <> 0", _
dbOpenDynaset)

Entonces, con esta consulto creo otra que:

Set rsConsulta2 = gBD.OpenRecordset _
("SELECT * FROM Clientes WHERE IdCliente = " & _
rsConsulta!IdCliente, dbOpenDynaset)

Así, en teoría, tengo en rsConsulta2 todos los campos de la tabla Clientes donde IdCliente es el mismo de rsConsulta, la cual tenía, en teoría los IdCliente de todos los pedidos enviados. No sé si se puede hacer todo esto en una sola consulta SQL...

Pero bueno, cuando recorro rsConsulta2 (Do Until rsConsulta2.EOF .... bla, bla...) para poner cada cliente en un nodo de un control treeview parece ser que solo hay uno porque sólo me crea un nodo en el control.

Hice un Debug. Print rsConsulta!IdCliente entre las dos sentencias y me saca 1 (que no sé si es que sólo hay uno o que es el IdCliente 1, que casualmente tiene el campo Enviado como verdadero).

Con otras condicones de selección he hecho cosas similares para insertar los resultados en el control treeview y me han funcionado, por eso creo que hago algo mal en la parte de SQL

No sé si me he explicado bien, pero este es el problemilla que tengo.
A ver si me pueden echar una mano con esto.

Un saludo y 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

RE: Me explico mejor

Publicado por Isaías Islas (5072 intervenciones) el 04/07/2003 18:37:08
Primera observación: ¿Que tiene este objeto rsConsulta!IdCliente?, acaso no sera un ID de UN cliente, es por eso que SOLAMENTE le trae un cliente.

Ahora bien, se puede hacer en un solo script, digame como se unen CLIENTES con PEDIDOS (Con que columna)
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: Me explico mejor

Publicado por Carlos (5 intervenciones) el 05/07/2003 02:42:03
Pues la verdad es que no sé..., la tabla PEDIDOS tiene, entre otros, el 'IdCliente' y un campo Sí/No 'Enviado'. La tabla PEDIDOS se une con la de CLIENTES por el campo IdCliente.

Cuando hago el primer SELECT:
Set rsConsulta = gBD.OpenRecordset _
("SELECT * FROM Pedidos WHERE Enviado <> 0")

¿En teoría rsConsulta tendría que contener todos los campos IdCliente donde 'Enviado' fuese sí? ¿verdad?

El error puede ser que rsConsulta!IdCliente sólo muestra el IdCliente de rsConsulta del primer registro...

Me haría un favor si pudiese unir esas dos sentencias en una... sabiendo que IdCliente es su nexo.

Un saludo y 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

RE: Me explico mejor

Publicado por Isaías Islas (5072 intervenciones) el 07/07/2003 19:13:04
Lo unico que tiene que hacer es un JOIN entre ambas tablas:

SELECT * FROM
CLIENTES INNER JOIN PEDIDOS
ON CLIENTES.idCilente = PEDIDOS.idCliente
WHERE PEDIDOS.Enviado <> 0
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

Ya funcionó. Gracias

Publicado por Carlos (5 intervenciones) el 07/07/2003 20:29:10
Parece que ya me funciona todo. Pero tendré que darle un repaso al SQL...

Un saludo y muchas 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