Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-07-2003
Jose_Pérez Jose_Pérez is offline
Miembro
 
Registrado: may 2003
Posts: 156
Poder: 21
Jose_Pérez Va por buen camino
Conectar Crystal Report (TCrpe) con un Ttable o TQuery

Hola:

El componente TCrpe (para conectar Delphi con Crystal Report) tiene la propiedad Table[x], que a su vez contiene la variable de DataPointer (de tipo Pointer) para conectar a una fuente de datos TTable o TQuery, o similar.

Al intentar hacer la conección me da problemas. Por ejemplo:

Código:
Crpe.Tables[0].DataPointer:=@Table1;
¿Alguien podría mostrarme un ejemplo de como se hace esto?.

Saludos y gracias.
Responder Con Cita
  #2  
Antiguo 11-07-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Hola:

Aunque el componente TCrpe que tengo es de una versión anterior y no tiene ese propiedad que comentas (DataPointer), es posible que ahí debas pasar el Handle de la tabla o Query en cuestión, que actúa como un cursor del BDE, prueba esto:

Crpe.Tables[0].DataPointer := Table1.Handle;
ó
Crpe.Tables[0].DataPointer := Table1.DBHandle;
__________________
Guía de Estilo
Responder Con Cita
  #3  
Antiguo 14-07-2003
Jose_Pérez Jose_Pérez is offline
Miembro
 
Registrado: may 2003
Posts: 156
Poder: 21
Jose_Pérez Va por buen camino
Hola Andrés:

La versión del componente es la 7 y estoy utilizando Delphi 5.

Por cierto, tu solución no funciona. Gracias de todos modos.

Un abrazo.
Responder Con Cita
  #4  
Antiguo 14-07-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Hola:

La propiedad DataPointer no la conozco (tengo el componente TCrpe para Delphi 4), parece ser, por lo que comentas, que debe apuntar a un DataSet de tu aplicación para que Crystal Reports tome de ahí los datos. Si es así, es un avance importante en la filosofía de CR, al permitir tomar datos directamente desde Delphi. De todas formas, si la finalidad es esa, me extraña que se llamara DataPointer y no DataSource.

¿Es esto así? Si no es eso y lo que quieres es acceder a las tablas físicas, como venía haciendo Crystal Reports anteriormente (te hablo de la versión 6.0), la forma en que tengo esto implementado, para indicarle la ruta donde están las tablas es así:
Código:
procedure TDATAIMP.InicializaInformeCrystal (NomInforme, NomClave: String;
  Preview: Boolean);
var
  DirDatos : String;
begin
  With CReport1 do 
  begin
    ReportName := DirInformes + '\' + NomInforme;
    DirDatos := GetPathFromAlias(':DATOS_ESCUELA:');
    Connect.Password := NomClave;
    DiscardSavedData := TRUE;
    SendDiscardSavedData;
    If Preview then Output := toWindow
    Else Output := toPrinter;
    Tables.Retrieve;
    Tables[0].Path := DirDatos;
    Tables.Path := DirDatos;
    Tables.Propagate := TRUE;
    With ParamFields do 
    begin
      ShowDialog := FALSE;
      Retrieve;
    end;
    PrintOptions.Copies := 1;
  end;
end;
__________________
Guía de Estilo
Responder Con Cita
  #5  
Antiguo 14-07-2003
Jose_Pérez Jose_Pérez is offline
Miembro
 
Registrado: may 2003
Posts: 156
Poder: 21
Jose_Pérez Va por buen camino
De nuevo gracias Andrés.

Lo cierto es que habíamos comprado el Crystal Report hace tiempo y lo tenía un poco aparcado. Estoy empezando a meterme con él y aún tengo algunas dudillas, aunque a base de mirar tutoriales y buscar en internet parece que me va a entrando.

Mi intención no era otra que filtrar los datos, y por eso estaba intentando conectar el componente con el TQuery. Al final he decidido no complicarme la vida y voy a utilizar el lenguaje de fórmulas nativo del Crystal Report. No parece que sea muy complicado y, además, el propio Crystal trae una editor de fórmulas muy sencillo.

Un ejemplo para quien pueda interesas:

Código:
  With Crpe Do
          Begin
          Selection.Formula.Clear;
          Selection.Formula.Add('{Cliente.Codigo}=2');
          Selection.Replace:=True;
          Execute;
          End;

GetPathFromAlias[list]
Responder Con Cita
  #6  
Antiguo 14-07-2003
Jose_Pérez Jose_Pérez is offline
Miembro
 
Registrado: may 2003
Posts: 156
Poder: 21
Jose_Pérez Va por buen camino
...¡uy, he colgado el mensaje antes de tiempo!.

Andrés, me faltaba preguntarte de donde has sacado la función GetPathFromAlias. He consultado la ayuda en línea de Delphi, pero no aparece. ¡Cuantas veces he hechado de menos una función como esa!.

Gracias por todo.
Responder Con Cita
  #7  
Antiguo 14-07-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
Hola de nuevo:

Esa función, GetPathFromAlias, es un método del componente TCrpe.

Esa información la puedes obtener también mediante esta función que hace uso del objeto Session:
Código:
function GetAliasPath (Alias: string) : String;
var
  AList : TStringList;
begin
  AList := TStringList.Create;
  try
    try
      Session.GetAliasParams (Alias, AList);
      result := AList.Values['PATH'];
    except
      result := '';
      raise;
    end;
  finally
    AList.Free;
  end;
end;
__________________
Guía de Estilo
Responder Con Cita
  #8  
Antiguo 15-07-2003
Jose_Pérez Jose_Pérez is offline
Miembro
 
Registrado: may 2003
Posts: 156
Poder: 21
Jose_Pérez Va por buen camino
Ok. Gracias.
Responder Con Cita
  #9  
Antiguo 10-11-2005
Avatar de dmagui
dmagui dmagui is offline
Miembro
 
Registrado: may 2005
Posts: 168
Poder: 19
dmagui Va por buen camino
Es posible que esto sea una solucion a la peticion inicial, ofrecida por la ayuda de delphi, cortesia de un gran forista (Neftali)

Código Delphi [-]
 Crpe1.ReportName := 'c:\company.rpt'; 
 
CrpeDS1.DataSet := Table1; {the field types must be in the correct order}
 
Crpe1.Tables[0].DataPointer := CrpeDS1.DataPointer;
 
Crpe1.Show;
__________________
El espiritu humano no se acaba cuando es derrotado se termina cuando se rinde.
Responder Con Cita
  #10  
Antiguo 07-09-2006
Larra Larra is offline
Registrado
 
Registrado: ago 2006
Posts: 5
Poder: 0
Larra Va por buen camino
Hola:
he tenido el mismo problema con el crpeDS1, no me trabaja da un error de paso de parametros, la solucion la obtuvo un colega anteriormente aunque en su caso no le servia por usar otro componente que no es ADO.
en fin, solucion a pasar una tabla o query para el reporte, ver que tengan las mismas columnas y el mismo orden.

ADOQuery1.Open;
crpe1.Tables[0].DataPointer := @(ADOQuery1.recordset);
crpe1.Show;

espero que te ayude
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


La franja horaria es GMT +2. Ahora son las 16:49:06.


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