PDA

Ver la Versión Completa : Imprimir reportes sin base de datos


cristofer_ec
08-12-2011, 15:31:39
Saludos estimados amigos, trabajo en Delphi 2006, y deseo realizar la impresion de una informacion qe se encuentra en variables de memoria, arrays, ahora mi solicitud es como puedo realizar esa impresion de las variables de memoria, los array y que me genere un grafico estadistico, ya que con el rave reports estaba leyendo es para realizar impresiones con bases de datos y por el momento no utilizo base de datos.

Muchas Gracias de antemano

ecfisa
08-12-2011, 16:20:40
Hola.

Una solución es usar ClientDataSets en memoria. Hay una explicación sencilla en este enlace (http://www.clubdelphi.com/foros/showthread.php?t=69061).

Luego en el rave podés conectar los componentes con el/los DataSources relacionados a el/los ClientDataSet como si estuvieran conectados a una bd.

Saludos.

Sinaloense
08-12-2011, 20:09:44
Con rave reports puedes generar reportes sin la necesidad de estar conectados a una base de datos, solo pones en la forma un componente RvSystem y en el evento OnPrint pones la lógica donde formas el reporte.

En este link esta un ejemplo:

http://edn.embarcadero.com/article/30329

cristofer_ec
09-12-2011, 04:40:41
Muchas gracias ecfisa y sinaloense, pues os comento los dos metodos funcionan de a la perfeccion les agradesco mucho su gentil ayuda!!!!

cristofer_ec
09-12-2011, 20:13:37
Una pregunta pues ya pude imprimir con el TRvSystem pero ahora tengo un problema de margenes, pues uso lo siguiente:

procedure TfrmVoting.RvSystem1Print(Sender: TObject);
var
dt:TDateTime;
begin
with Sender as TBaseReport do
begin
SetFont('Arial',15);
GotoXY(1,1);
Print('PRUEBA DE IMPRESION');
GotoXY(1,2);
Print('FECHA Y HORA DE IMPRESION:');
GotoXY(1,3);
Print(DateTimeToStr(dt));
end;
end;


y tengo lo siguiente:


PRUEBA DE IMPRESION


FECHA Y HORA DE IMPRESION


12/09/2011 14:06



Como hago para agrupar o reducir tanto lso margenes como el espaciado????????????

Saludos, Gracias

ecfisa
09-12-2011, 20:59:05
Hola cristofer_ec.

Por favor cuando incluyas código Delphi utiliza los TAG's (etiquetas) para que tenga mayor legibilidad:

http://img403.imageshack.us/img403/3461/75416396.jpg

Saludos y gracias por tu colaboración. :)

Sinaloense
09-12-2011, 20:59:50
Para establecer los margenes, en el envento OnNewsPage puedes poner el siguente código:


with (Sender as TBaseReport) do begin
MarginTop := 1;
MarginBottom := 2;
MarginLeft := 1;
MarginRight := 1;
end


Las unidasdes son pulgadas o centimtros, depende de como tengas configurado.

Para agrupar eso ya es cuestión de lógica, tienes que hacer ciclos anidados, donde en cada ciclo exterior pongas el grupo y en el interior el detalle, por ejemplo:



for i := 0 to 10 do begin

printab('Grupo ' + intostr(i));
newline;

for j := 0 to 5 do begin
printab('Detalle ' + intostr(j));
newline;

if linesleft = 1 then
newpage;
end

end



El último if es para que saltes de página, linesleft te dice cuantas líneas le quedan a la hoja, si le queda solo una entonces va a saltar de página.

cristofer_ec
09-12-2011, 21:06:42
pues disculpa recien me entero de las etiquetas, para la proxima lo tendre en cuenta, pues gracias por el dato...

ecfisa
09-12-2011, 21:30:26
pues disculpa recien me entero de las etiquetas, para la proxima lo tendre en cuenta, pues gracias por el dato...
No te preocupes cristofer, al ser nuevo en los foros, es totalmente entendible que no lo supieras. :)

Cualquier duda que tengas recuerda que el grupo de moderadores y miembros más antiguos, están a tu disposición para ayudarte.

Saludos.

cristofer_ec
12-12-2011, 02:22:12
Gracias !!!! y gracias tambien a ti amigo sinaloense pues execelente ayuda eh!!!!!