Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PostgreSQL (http://www.forosdelweb.com/f99/)
-   -   Consulta Multitabla (http://www.forosdelweb.com/f99/consulta-multitabla-444525/)

horyfox 19/11/2006 17:55

Consulta Multitabla
 
HOLA AMIGOS Mi problema es el siguiente: al realizar la siguiente consulta:
sql = "select p.*, t.* from producto p, tipoproducto t where p.idtipoproducto=t.idtipoproducto and p.descripcion like '" & frmcontrolstoc.txtproducto.Text & "%' and p.estado='" & "SI" & "' and p.idtipoproducto=" & frmcontrolstoc.DCproducto.BoundText & " ORDER BY p.descripcion"

La consulta es ejecutada por el motor sin problemas, y me devuelve un resultado correcto en cuanto a la cantidad de registros.
El problema surge cuando los registros del recordset intento leerlos
ej:
NuevoItem.SubItems(2) = rst.("p.descripcion")

EL ERROR ME SURGE SIEMPRE QUE USE P. OSEA COMO QUE NO PUEDO USAR EL ALIAS QUE LE ASIGNE A LA TABLA en este caso p de la tabla producto.
Si alguien me puede sacar la duda, sobre que sintaxis usar o cual es mi error. Muchas gracias desde ya

foo 19/11/2006 21:31

en:
NuevoItem.SubItems(2) = rst.("p.descripcion")

solo pon "descripcion"

horyfox 19/11/2006 22:41

Muchas gracias foo por tu voluntad de sacarme la duda, pero no me soluciona el problema estas en lo cierto de que poniendo:

NuevoItem.SubItems(2) = rst.Fields("descripcion")

No me larga un problema pero el tema la duda viene de como hacer para sitar un campo usando el alias de una tabla. en el mismo ejemplo si ves el codigo tambien sito los campos de la tabla tipoproducto donde tambien tengo que el nombre de cada tipo es con el campo descripcion por lo que me quedaria:

NuevoItem.SubItems(2) = rst.Fields("p.descripcion")
NuevoItem.SubItems(4) = rst.Fields("t.descripcion")

donde en uno sito al registro de una tabla y en el otro al de la otra tabla.
Podria ser una solucion asignar nombres diferentes a cada campo, pero el tema viene de que estoy migrando desde access y ahi esto no era un problema y tengo que en muchas consultas multitabla uso el alias para las tablas y funciona a la perfeccion.

si dejo(tu sugerencia):

NuevoItem.SubItems(2) = rst.Fields("descripcion")
NuevoItem.SubItems(4) = rst.Fields("descripcion")

en ambos campos me deposita la descripcion del producto y no de lo que necesito. Otra solucion seria poner el indice adecuado dejando:

NuevoItem.SubItems(2) = rst.Fields(2)
NuevoItem.SubItems(4) = rst.Fields(5)

esto hace lo que necesito pero el tema viene de que si tomo esta politica para resolver este problema tendria que modificar una gran parte de las consultas que tengo en mi programa que esta funcionando a la perfeccion en access. Por lo que necesito sitar al campo en cuestion haciendo uso del alias.

Quisiera saber si esto es posible, desde ya muchas gracias por la buena onda.

foo 20/11/2006 07:45

hasta donde se, los alias del tipo (p.descripcion) en las consultas sql solo sirven durante la ejecucion de esta.

lo que tendrias que hacer, es asignar a los campos un nombre mas adecuado

select ..., p.descripcion, t.descripcion as descriptionTipo,...

horyfox 20/11/2006 08:21

Muchas gracias foo. Lo tenía como alternativa posible, por lo visto tendré que recurrir a ella.
Trataba de buscar lo mencionado debido a que si lo conseguia no tenia que modificar una gran parte de las consultas del programa.
Muchas gracias por la buena onda!!


La zona horaria es GMT -6. Ahora son las 07:53.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.