Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Consulta Multitabla

Estas en el tema de Consulta Multitabla en el foro de PostgreSQL en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 19/11/2006, 17:55
 
Fecha de Ingreso: noviembre-2006
Mensajes: 13
Antigüedad: 18 años
Puntos: 0
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
  #2 (permalink)  
Antiguo 19/11/2006, 21:31
foo
 
Fecha de Ingreso: febrero-2006
Mensajes: 278
Antigüedad: 18 años, 9 meses
Puntos: 0
en:
NuevoItem.SubItems(2) = rst.("p.descripcion")

solo pon "descripcion"
  #3 (permalink)  
Antiguo 19/11/2006, 22:41
 
Fecha de Ingreso: noviembre-2006
Mensajes: 13
Antigüedad: 18 años
Puntos: 0
Pregunta

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.
  #4 (permalink)  
Antiguo 20/11/2006, 07:45
foo
 
Fecha de Ingreso: febrero-2006
Mensajes: 278
Antigüedad: 18 años, 9 meses
Puntos: 0
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,...
  #5 (permalink)  
Antiguo 20/11/2006, 08:21
 
Fecha de Ingreso: noviembre-2006
Mensajes: 13
Antigüedad: 18 años
Puntos: 0
De acuerdo

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!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:38.