Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   EdatabaseError FIELD NOT FOUND en consulta JOIN (https://www.clubdelphi.com/foros/showthread.php?t=14826)

syntetiko 01-10-2004 11:43:12

EdatabaseError FIELD NOT FOUND en consulta JOIN
 
Hola a todos!

Os comento un problema que realmente me trae de cabeza, tiene toda la pinta de ser una tontería pero la verdad es que no doy con la solución.

tengo dos tablas:

tbPedidos tbUsuarios
======= ========

idPedido
idUsuario -----> idUsuario
idNombre


y una query:

SELECT * FROM pedidos INNER JOIN usuarios ON pedidos.idusuario=usuarios.idusuario WHERE usuarios.nombre="pepe"


y me pasa algo muy curioso, si en el "field editor" del TADOQuery agrego todos los campos del query con "add all fields" al ejecutar la consulta me devuelve un error del tipo: 'EdatabaseError field "idusuario" not found', sin embargo si NO agrego los campos en el field editor del TADOQyery la consulta funciona perfectamente. Necesito agregar esos campos en el field editor ya que en el grid tengo que mostrar el nombre del usuario y no su id, por lo que necesito crear un campo lookupfield en el TADOQuery

¿Qué estoy haciendo mal?, os agracedería cualquier ayuda. Gracias


un cordial saludo.

defcon1_es 01-10-2004 12:36:49

Hola,
no uso los componentes ADO, pero lo que quería comentarte es que yo, a título personal soy enemigo acérrimo de los campos lookup, y veo innecesario crear un campo lookup en una Query... ¿por que no te lo traes en la SELECT, puesto que tienes un JOIN a esa misma tabla?.

De todas formas, prueba a usar el Grid con la propiedad UseTFields a False y configuras los campos del grid en diseño...

Salu2.

marto 01-10-2004 12:54:30

Wop!


Cita:

Empezado por defcon1_es
Hola,
soy enemigo acérrimo de los campos lookup, y veo innecesario crear un campo lookup en una Query... ¿por que no te lo traes en la SELECT, puesto que tienes un JOIN a esa misma tabla?.

No voy a discutir ( o sí ;)) si es bueno o no crear campos lookup, pero lo que es cierto es que sirven para algo más que calcular el valor del campo en la propia consulta. Por ejemplo, si pones un lookup en un dbgrid, el propio control te muestra un combo cuando editas el campo con a lista de valores del dataset de búsqueda;)

Gydba 01-10-2004 13:24:16

Hola,

Yo tampoco uso esos componente, pero probaría con algo como:
Código SQL [-]
SELECT * FROM pedidos P
   JOIN usuarios U ON P.idusuario = U.idusuario
WHERE 
   U.nombre = :prmNombre

Lo que no indicás son los tipos de datos de dichos campos, por lo cual la validez de la relación no te la puedo garantizar.

En cuanto a los campos lookup puedo decir que no soy enemigo, pero para seleccionar un registro prefiero utilizar una ventana completamente aparte con mejores características que aventajan sobre los lookups.

syntetiko 02-10-2004 00:29:59

Realizando la consulta mediante parámetros me da el mismo error.

Gracias por tu ayuda.

syntetiko 02-10-2004 00:35:31

Cita:

Empezado por defcon1_es
Hola,
no uso los componentes ADO, pero lo que quería comentarte es que yo, a título personal soy enemigo acérrimo de los campos lookup, y veo innecesario crear un campo lookup en una Query... ¿por que no te lo traes en la SELECT, puesto que tienes un JOIN a esa misma tabla?.

Eso no se me había ocurrido. Lo que he hecho es traerme los campos que quiero mostrar en el DBGrid mediante la propiedad SQL de TADOQUery y después ejecutar la consulta personalizada en función de los datos introducidos por el usuario. Y así sí funciona!!! :)

SELECT pedidos.idpedido,pedidos.precio,usuarios.nombre FROM pedidos,usuarios WHERE pedidos.idusuario=usuarios.idusuario

Muchas gracias por tu ayuda.


La franja horaria es GMT +2. Ahora son las 16:48: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