Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Combinar tablas para un Reporte (https://www.clubdelphi.com/foros/showthread.php?t=9214)

silviodp 17-04-2004 03:26:20

Combinar tablas para un Reporte
 
Hola, tengo una tabla TblMueble la cual tiene un campo Rubro en el que guardo los valores del campo Código de la tabla TblRubro, esta relación la hago mediante un DBLookupComboBox, osea que en el DBLookCombo muestro la descripcion del Rubro pero en la Tabla TblMueble guardo el Código.
El problema está cuando hago el reporte de la tabla TblMueble ya que como es obvio me muestra en el campo Rubro sólo números (Código), y yo lo que quiero es que en el reporte me muestre la descripción de dicho Rubro para que el mismo sea más claro, y para esto debería combinar las Tablas de tal forma que haga esto.
Alguien me podría dar una idea o si saben como se logra esto, es decir combinar las tablas.
Gracias, saludos.

Silvio.-

jachguate 17-04-2004 09:55:15

Hola Silviodp. No indicas el motor de datos con el que trabajas... aunque supongo que esto debiera correr en cualquiera.

Lo que tenes que hacer es un join (o encuentro) de las tablas.

Algo como
Código:

  Select mueble.codigo, mueble.nombre, rubro.descripcion desc_rubro
    from mueble, rubro
  where rubro.codigo = mueble.rubro;

Te recomiendo que busques manuales/tutoriales y un buen libro de SQL. ;)

Hasta luego.

;)

Gydba 17-04-2004 15:14:16

No es que lo quiera corregir a jachguate, pero me parece mas legible algo del estilo:
Código:

SELECT
  MBL.Campo_Cualquiera,
  MBL.CodRubro,
  RBR.Descripcion
FROM TblMueble MBL
  LEFT JOIN TblRubro RBR ON RBR.Codigo = MBL.CodRubro

También creo que la pregunta está un poco incompleta.

jachguate 18-04-2004 14:31:54

bueno... el que la consulta sea válida o no, dependerá del motor de base de datos, ya que esta sintaxis para los joins hay algunos que no se atreven a implementarla... (o se han atrevido ya en versiones muy recientes, por ejemplo Oracle).

Hasta luego.

;)

__cadetill 18-04-2004 15:45:20

Sólo aclarar que lo que ha puesto Juan Antonio y Gydba no es exactamente lo mismo. Para que fuera exactamente lo mismo, en lugar de un LEFT JOIN se tendría que haber puesto un INNER JOIN

jachguate 18-04-2004 15:55:14

:o :o cierto... cierto... no me habia dado cuenta, asumí que se trataba de un inner join. :p

Gydba 19-04-2004 13:38:44

Si, estoy de acuerdo con catedill que no son lo mismo.

Por otro lado me llamó la atención eso de: "esta sintaxis para los joins hay algunos que no se atreven a implementarla" de jachguate, comprendo bien que algunos motores tengan ciertas limitaciones pero que algunos no se atrevan a implementarlo me lleva a preguntar ¿Por qué? ¿Qué riesgos tiene el utilizar joins para este tipo de consultas?

jachguate 19-04-2004 16:11:04

Cita:

Empezado por Gydba
Por otro lado me llamó la atención eso de: "esta sintaxis para los joins hay algunos que no se atreven a implementarla" de jachguate

Es una expresión sarcástica que hace referecia a las limitaciones de algunos motores, y no a algun riesgo en su uso o implementación. :p

Hasta luego.

;)

Gydba 19-04-2004 17:42:01

:), como diría Homero ando un poco "lelo" el día de hoy.

silviodp 20-04-2004 05:33:52

Combinar tablas para un Reporte
 
Sí entiendo lo que tengo que hacer, pero ese código tengo que escribirlo dentro de la propiedad SQL de la Query?, y luego ejecutarlo desde mi programa?
Gracias.

Silvio.-

jachguate 20-04-2004 06:30:34

Hola Silvio. Te recomiendo leer un libro sobre delphi (la mayoría incluyen un capítulo o dos para diseño de reportes). Podes iniciar con La Cara oculta de delphi, que podes descargar desde la web de su autor http://www.marteens.com.

A grandes razgos, en un Tquery meté la sentencia, agregas los campos. Crea un Nuevo QuickReport, asocialo al query mediante su propiedad dataset. Luego pones una banda de título, una de header y una de detalle (simplemente haciendo doble clic sobre la parte blanca del reporte, añadí estas bandas). En la banda detalle, añadí tantos TqrDBText como sea necesario, y asocia cada uno al DataSet (query) y al campo que queres que imprima.

Si abris el query en tiempo de diseño, podes previsualizar el reporte usando el menú contextual de quick report.

Hasta luego.

;)

silviodp 20-04-2004 20:41:52

Combinar tablas para un Reporte
 
Está bien en realidad esa no era mi pregunta, es decir como se crea un QReport, eso creo que lo sé hacer, el problema era la combinación de tablas. Más precisamente era si una vez que escribí las sentencias SQL donde las ejecuto, o sea tengo que ponerlas en la propidad SQL del Query????????
A veces las preguntas no son completas pero tampoco a veces lo son las respuestas!!!
Gracias, saludos.-

Silvio.-

__cadetill 20-04-2004 20:51:25

Cita:

Empezado por silviodp
...o sea tengo que ponerlas en la propidad SQL del Query????????

Ya sea en diseño o en ejecución, la respuesta es sí

Cita:

Empezado por silviodp
A veces las preguntas no son completas pero tampoco a veces lo son las respuestas!!!

La respuestas (al menos la mayoría de las que yo doy) suelen ser orientativas, es decir, te encaminamos a la solución pero sin dártela toda. Eso no tendría gracia y no se aprendería nada

jachguate 20-04-2004 21:23:46

Cita:

Empezado por silviodp
A veces las preguntas no son completas pero tampoco a veces lo son las respuestas!!!

Hola Silvio.

Sin ánimo de entrar en polémica... pero hay cosas que son bastante obvias (como el que una sentencia SQL debe ir en la propiedad SQL). Luego de tu segunda pregunta, yo supuse que no sabias nada y, en buen plan, traté de orientarte un poco mas. Si ya lo tenias mas claro, quizas te hubiera costado el mismo esfuerzo que hacer esa pregunta aqui, pegar el código en la propiedad SQL y ver que sucedia... no te parece?

Creo que el objetivo final de los foros, o al menos el mio en particular, es lograr que la gente investigue un poco mas por su cuenta, se atreva a probar, y ya que las cosas no le salen, que venga aqui a plantear sus dudas..... de esa forma todos nos ayudamos un poco. Pero si no es asi, muchas veces da la impresión que se trabaja por los demás... y la primera opción es preguntar en el club (muchas veces incluso sin utilizar la busqueda en los históricos), cuando debiera ser despues de haber investigado.

Cada caso es distinto... pero estamos hablando de actitud. No echo todo este rollo aqui por vos... pero aprovecho la oportunidad para que quienes lo vean se cuestionen un poco y juzguen si tengo o no tengo razón.

Hasta luego.

;)

roman 20-04-2004 22:03:31

Cita:

Empezado por silviodp
A veces las preguntas no son completas pero tampoco a veces lo son las respuestas!!!

Ya algo te han dicho y yo agrego: éste no es un servicio técnico por el que tú pagas y nosotros respondemos. Por lo mismo, quienes deseamos preguntar algo estamos obligados, como mínimo, a ser claros en nuestras preguntas pero nadie está obligado a darnos una respuesta completa.

// Saludos

marcoszorrilla 20-04-2004 22:06:56

Me voy a permitir introducir una fábula de Samaniego.

Simplemente es a modo de ejemplo, que nadie se dé por aludido, es a modo de reflexión.

Cita:

Dióle cebada al mulo el buen cibulo y una coz como un templo lárgole el mulo, las almas innobles por el bien que reciben devuelven coces
Cuando un forista se lee una pregunta a veces incompleta, otras vaga, cuando no incoherente, paratáctica o incluso "sopaletrosa", y además se toma la molestia de contestar, aún si su respuesta fuere errada, cuando menos se merece el agradecimiento por los servicios altruistas prestados no solo a quien pregunta sino al resto de foristas que pudieren estar siguiendo el hilo.

Un Saludo a todos.

silviodp 21-04-2004 13:39:08

Combinar tablas para un Reporte
 
Creo que a muchos no les ha gustado mi respuesta anterior, por eso pido disculpas. Pero creo que siempre agradecí la ayudan que me dan en el foro, aunque sinceramente muchas veces no era lo que yo necesitaba.
Lo que quiero que me entiendan es que nadie pregunta porque sabe, si pregunto algo es porque realmente no lo sé, y lo necesito, tampoco nunca quise que nadie trabaje por mí o para mí.
Nuevamente pido disculpas, y gracias.

Silvio.-


La franja horaria es GMT +2. Ahora son las 04:42:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi