Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-04-2012
LuisMiguel LuisMiguel is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 33
Poder: 0
LuisMiguel Va por buen camino
Duda con QuickRep en c++ builder 6

Saludos a todos

Necesito mostrar en un QRDBImage1 que se encuentra dentro de un QuickRep las imágenes que tengo almacenada en mi BD, asocié el QRDBImage1 a mi ADOQuery en el Dataset y en el campo DataField seleccioné el campo que tiene la dirección de la imagen.
No se si el problema de lo que estoy haciendo es que solo en el campo imagen de la BD tengo almacenado la dirección donde tengo guardada la imagen y el QRDBImage1 no me reconoce esto, esta es la forma como almaceno la dirección de la imagen en el campo imagen: Imagen/prueba.jpg

Gracias por la ayuda que pudieran brindarme.
Responder Con Cita
  #2  
Antiguo 04-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola LuisMiguel.

Supongo que obtenes el mensaje: Bitmap Image is not valid. Este tema se trató con referencia a Delphi [ aquí ], quizá puedas sacar alguna idea.

En tu lugar pondría un TQRSubDetail con su propiedad DataSet apuntando al DataSet en questión, dentro de él un TQRImage en lugar del TQRDBImage y luego en el evento AfterScroll del TDataSet:
Código:
void __fastcall TForm1::DataSetAfterScroll(TDataSet *DataSet)
{
 QRImage1->Picture = NULL;
  if (FileExists(DataSetRUTA->AsString))
    QRImage1->Picture->LoadFromFile(DataSetRUTA->AsString);
}
Donde DataSetRUTA es el nombre del campo persistente que almacena la ruta y nombre de imágen.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 04-04-2012
LuisMiguel LuisMiguel is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 33
Poder: 0
LuisMiguel Va por buen camino
Gracias ecfisa

La idea que usted me da esta buena, solo un pequeño detalle y es que no encuentro ese evento AfterScroll del TDataSet,cuando lo ejecuto me da el siguiente error.

[C++ Error] Unit1.cpp(18): E2316 '_fastcall TForm1:: DataSetAfterScroll(TDataSet *)' is not a member of 'TForm1'
Responder Con Cita
  #4  
Antiguo 04-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Luis Miguel.

'DataSet' es un nombre que usé por convención, ya que TDataSet es la clase base de todos los componentes que pueden representar datos de una tabla.

Tenes que usar el evento AfterScroll del DataSet que referencia la tabla donde está el campo con la ruta+nombre_imágen. Por tu primer mensaje creo entender que es un ADOQuery. (desconozco el nombre que le hayas dado)

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 05-04-2012
LuisMiguel LuisMiguel is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 33
Poder: 0
LuisMiguel Va por buen camino
Saludos ecfisa
Su ejemplo me funciono a la perfeccion, solo tengo un pequeño problemita y es que de la forma que lo hice me muestra la misma imagen para todos los datos que muestro en el QuickRep.
Me explico mejor:
Esta es la forma como obtengo las datos de mi tabla

Código:
ADOQueryCalculos->SQL->Clear();
           ADOQueryCalculos->SQL->Add("SELECT * from Resultado");
           ADOQueryCalculos->Open();
           String  DataSetRUTA=ADOQueryCalculos->FieldByName("Imagen")->AsString;
Si pusiera en el DataSetAfterScroll el código para mostrar la imagen no me reconocería el DataSetRUTA,por eso lo puse seguidamente del codigo anterior:
Código:
QRImage1->Picture = NULL;
          if (FileExists(DataSetRUTA->AsString))
          QRImage1->Picture->LoadFromFile(DataSetRUTA->AsString);
Como ve de esta forma en DataSetRUTA solo se almacenaria el primer valor de la Imagen y me mostraría los restantes datos con esa misma imagen.
Finalmente lo que quisiera lograr es mostrar en el QuickRep las imagenes de esta forma:
Nombre PA SA Imagen // campos mostrados en el QuickRep
DA MA NA Imagen1
--- --- -- Imagen2
--- --- -- Imagen3
Saludos y muchas gracias por la ayuda.
Responder Con Cita
  #6  
Antiguo 05-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Creo que no me he explicado con claridad, voy a intentarlo paso a paso.
  • Crea un campo persistente en el TADOQuery que por defecto se llamará el nombre de tu quey ADOQueryCalculos + el nombre de campo que tenga tu tabla; suponiendo que el nombre de campo sea RUTA el nombre sería: ADOQueryCalculosRUTA.
  • En el TQuickRep poné un componente TQRSubDetail, no un TQRBand con su propiedad BandType = rbSubDetail ya que no es lo mismo. En la propiedad DataSet del TQRSubDetail poné ADOQueryCalculos y agregá un TQRImage dentro de esta banda.
  • Luego en el evento AfterScroll (ADOQueryCalculosAfterScroll) agregá:
    Código:
    void __fastcall TForm1::ADOQueryCalculosAfterScroll(TDataSet *DataSet) {
      QRImage1->Picture->LoadFromFile(ADOQueryCalculosRUTA->Value);
    }
  • Por último y para probarlo agrega un TButton y este código para el evento OnClick:
    Código:
    void __fastcall TForm1::Button1Click(TObject *Sender) {
      QuickRep1->Preview();
    }

De ese modo tiene que funcionarte sin problemas.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 05-04-2012
dmartinezn dmartinezn is offline
Miembro
 
Registrado: ene 2012
Ubicación: Cuba - Venezuela
Posts: 38
Poder: 0
dmartinezn Va por buen camino
Podria explicar como crear un campo persistente en el TADOQuery, eso es una duda que tambien me ha surgido y que no habia visto!
Saludos.
Responder Con Cita
  #8  
Antiguo 05-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por dmartinezn Ver Mensaje
Podria explicar como crear un campo persistente en el TADOQuery, eso es una duda que tambien me ha surgido y que no habia visto!
Saludos.
Si como no. De modo visual es muy sencillo, doble click sobre el componente TADOQuery -> se abre el editor de campos -> click botón derecho sobre el editor de campos -> Aparecerán estas opciones:
  • Add fields : Abre una ventana para seleccionar los campos disponibles para agregar.
  • New field: Se utiliza para crear un nuevo campo, como por ejemplo un campo calculado.
  • Add all fields: Agrega todos los campos disponibles.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Duda sobre FPGA Y C++ builder omarodalis C++ Builder 2 14-12-2011 23:14:00
Duda C++ Builder 6.0 Zyzz C++ Builder 5 28-11-2011 20:17:52
duda juego c++ builder 2007 torrescrack9 C++ Builder 5 07-03-2009 23:51:37
duda con Shapes y mouse move en C++ Builder paton C++ Builder 2 18-11-2008 11:27:12
QuickRep romansiux Varios 3 16-05-2005 02:21:52


La franja horaria es GMT +2. Ahora son las 11:20:54.


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
Copyright 1996-2007 Club Delphi