Visual Basic - Problema en Consulta con varias tablas?????

Life is soft - evento anual de software empresarial
 
Vista:

Problema en Consulta con varias tablas?????

Publicado por raquel (40 intervenciones) el 02/08/2005 08:55:38
Hola a todos
y gracias de antemano

Tengo un problema con una consulta en la que intervienen varias tablas. Dicha consulta la ejecuto desde el entorno de Visual Basic (si la ejecuto desde el motor de base de datos no hay ningun problema).

consulta2 = "SELECT * FROM tb_pedido as p,tb_linped as lp WHERE p.num_cliente=lp.num_cliente and p.num_pedido=lp.num_pedido"

objRecordset2.Open consulta2, objConnection2, adOpenDynamic, adLockBatchOptimistic

El problema es cuando intervienen varias tablas.
Al ejecutar la consulta me devuelve que el numero de registros es -1.
Cuando ejecutado desde el motor de DB si me detecta los registros que son.

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:Problema en Consulta con varias tablas?????

Publicado por smokalot (12 intervenciones) el 02/08/2005 09:12:45
Hola rakel!

A ver cuando intervienen varias tablas en una consulta tienes que utilizar la orden JOIN, Inner left o right. Que es lo que realmente te realiza el vinculo entre ambas tablas, xo claro no es asi de facil xD tb tienes que vincular campos de las dos tablas entre ellas. Me explico.

SELECT * FROM tb_pedido as p INNER JOIN tb_linped as lp ON
p.num_cliente=lp.num_cliente AND p.num_pedido=lp.num_pedido

Pruebalo asi y ya me diras ;)

enga 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:Problema en Consulta con varias tablas?????

Publicado por raquel (40 intervenciones) el 02/08/2005 10:21:33


Hola de nuevo

Lo acabo de probar como me has dicho pero sigo teniendo el mismo problema

La consulta funciona perfectamente en el motor de la base de datos
El problema es que NO FUNCIONA cuando realizo la misma consulta desde VBasic.
Si lo pruebas veras que te da problemas.

Si encuentras una solucion te lo agradeceria porque yo no la encuentro

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

RE:Problema en Consulta con varias tablas?????

Publicado por smokalot (2 intervenciones) el 02/08/2005 13:12:32
Hola d nuevo!

Tonces tu problema esta en la conexion o en los parametros que tu le dices xa abrirte el recordset.

Ambos tipos de variable database kmo recordset son tipos que tienes que añadir x medio de componentes (creo recordar). Sino tb tienes la opcion de utilizar l objeto mas que conocido ADODB <- esta guay xa atacar a bbdd (SqlServer , MySql, Access....) i ademas es mas facil de utilizar.

dim dbdoc as database
dim rc_nombre as recordset

Set DBDOC = OpenDatabase("SIMDOC.MDB")
set Rc_Nombre = DBDOC.OpenRecordset( tu_Sql )

Claro que te funcionaba bien las 2 consultas lo uniko k la "," ke pones tu entre las dos tablas en tu consulta significa lo mismo que el INNER JOIN i tus WHERE son mis ON XD xo buenu digams que tu forma es mas "punky" xo no x eso deja de funcionar ;)

enga ns vems, 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:Problema en Consulta con varias tablas?????

Publicado por Helping (5 intervenciones) el 02/08/2005 18:45:40
Hola Raquel,
Primero que todo entiendo perfectamente tu query, ya que es Sql standar, lo de los inner join es sólo para algunos motores.

Yo diría que el problema es el tipoi de cursor que estas usando:

Ej:
objRs.Open consulta2 , objConnection2, adOpenKeyset, adLockPessimistic, adCmdText

Saludos.
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:Problema en Consulta con varias tablas?????

Publicado por Esteban (1144 intervenciones) el 02/08/2005 22:18:38
Hola Raquel.

Te comento que no veo problema en tu consulta, solo que te falta un detalle, y es justo antes de esta línea:
objRecordset2.Open consulta2, objConnection2, adOpenDynamic, adLockBatchOptimistic

Antes de eso debes declarar el cursor como de cliente para que te indique cuántos registros tienes:
objRecordset2.CursorLocatin = adUseClient 'Su valor constante es 3

Para, smokalot , deberías leer mejor las preguntas, pues en todo el momento ella preguntó por una instrucción típica de ADO.

Para Helping, tu famoso cmdText y esas cosas no aplican en este caso, son propias de los Comandos de ADO (ADODB.Command)

Solo cuando se ha experimentado se conoce la respuesta, mientras tanto cuando uno no sabe algo es todavía un aprendiz.

En VB6 tengo desde que apareció de trabajarlo pero en VB.NET apenas soy aprendiz, por eso no se ofendan con la línea anterior.
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:Problema en Consulta con varias tablas?????

Publicado por smokalot (12 intervenciones) el 03/08/2005 12:13:24
nunca se dja d ser aprendiz ;)
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:Problema en Consulta con varias tablas?????

Publicado por Luis (79 intervenciones) el 03/08/2005 16:00:51
Para el señor experto en VB
Smokalot tiene toda la razón, nunca se deja de aprender.

"Dime de que predicas y te diré de qué padeces"

Saludos,

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:Problema en Consulta con varias tablas?????

Publicado por Anonimo (100 intervenciones) el 03/08/2005 16:04:34
Ocurre que Esteban siempre se cree un ser superior...
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

Si uno se equivoca debe aceptar el error

Publicado por Esteban (1144 intervenciones) el 04/08/2005 01:26:43
No me creo superior a nadie, y alcrítica fue más bien para que se centraran en el tema y vieran su muy, muy, pero muy pequeña equivocación, si uno de verdad es aprendiz, entonces se debe aprender lo básico para la vida, lo cual es aceptar las críticas, hoy fui yo, mañana será un jefe que dañará sus programas y luego les echará las culpas porque ustedes no hicieron un buen trabajo, créanme que eso es lo peor.

Si sé cómo corregir las cosas, pues es por mentecatos como esos (los jefes ignorantes), no porque yo sea un genio.

Genios son los niños de 14 a 17 años que ya andan programando, yo a esas edades apenas había decidido qué estudiar, todavía a los 19 no sabía lo que era programar una computadora, pero lo que he logrado llegar a ser ha sido con esfuerzo, por eso siempre caigo mal, porque yo insto a que se esfuercen, que estudien y aprendan.
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

Si uno se equivoca debe aceptar el error

Publicado por Esteban (1144 intervenciones) el 04/08/2005 01:28:10
No me creo superior a nadie, y al menos yo si acepto mis errores, tal como el que cometí al emitir mi comentario. Pido mis disculpas del caso si los he ofendido.

Sin embargo, vean que también ustedes no dieron la respuesta como debía ser, yo podré superarlos en años de experiencia, pero solo en eso, al final, aún ahora, he aprendido nuevos trucos en este foro, incluso cosas que no me imaginaba que se podían hacer.

Es cierto, siempre seguimos siendo estudiantes, sin excepción.

Pero también, si yo no estoy con buenas bases para .NET, pues mejor no emito comentario alguno, porque podría confundir más que ayudar.

Yo no tengo la capacidad de explicar bien las cosas, aunque las conozca en detalle, otros conocen en detalle las cosas y las saben explicar, pero cuando uno no conce el detalle no puede explicarlas.

La crítica no fue destructiva, pero por lo visto el informático siempre será distinguido como el "niño agredido", el cual por mínimo que sea un comentario lo toman como una agravio como si se "mentara la madre", mi crítica fue más bien para que se centraran en el tema y vieran su muy, muy, pero muy pequeña equivocación, si uno de verdad es aprendiz, entonces se debe aprender lo básico para la vida, lo cual es aceptar las críticas, hoy fui yo, mañana será un jefe que dañará sus programas y luego les echará las culpas porque ustedes no hicieron un buen trabajo, créanme que eso es lo peor.

Si sé cómo corregir las cosas, pues es por mentecatos como esos (los jefes ignorantes), no porque yo sea un genio.

Genios son los niños de 14 a 17 años que ya andan programando, yo a esas edades apenas había decidido qué estudiar, todavía a los 19 no sabía lo que era programar una computadora, pero lo que he logrado llegar a ser ha sido con esfuerzo, por eso siempre caigo mal, porque yo insto a que se esfuercen, que estudien y aprendan.
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:Si uno se equivoca debe aceptar el error

Publicado por Anonimo (100 intervenciones) el 04/08/2005 02:21:17
Suficiente de discurso, ve a seguir con tu ejemplar vida y a corregir a tus mentecatos jefes.
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