PDA

Ver la Versión Completa : HAcer algo similar a la Combinacion de correspondencia de Word


oliverinf
26-04-2004, 13:22:22
hola, que tal? ,
Tengo que hacer unos reportes donde parte del reporte es fijo y otra parte dinánico (toma los datos del resultado de un consulta). Lo que yo quiero hacer es permitir al usuario modifique como el quiera la parte fija (texto) y la posición de los campos en el reporte.
Algo así como lo que hace word con la combinación de correspondencia "utiliza una plantilla o documento donde inserta campos de combinación los cuales se conectan a una tabla (o bd.). DOnde el usuario puede modificar dicha plantilla"

No se si soy claro con la explicación, pero desde ya muchas gracias.

marto
26-04-2004, 13:36:11
Wop!

Pues yo, tal y como tu dices, lo haría con word. Genera plantillas con marcadores donde pondrás la parte que lees de la BD. Los usuarios pueden modificar lo que tu llamas "parte fija" o antes de generar el informe tocando la plantilla de word o después, tocando el documento generado (yo te aconsejo lo segundo, ya que sinó te van a desmontar la plantilla).

Otra opción es distribuir el editor de informes. Esto se puede hacer con algunos sistemas como FastReport, pero desconozco en qué otros está disponible. En FR distribuyes el editor como un programa o como una opción dentro del tuyo y los informes como ficheros .fr. Es un sistema muy potente, pero requiere usuarios bastante avanzados.

Si lo que quieres es programarte el editor tú "a pelo", tómatelo con paciencia, porque la cosa no es en absoluto sencilla.

Nuria
26-04-2004, 13:47:30
Hola!

Si lo que quieres es programarte el editor tú "a pelo", tómatelo con paciencia, porque la cosa no es en absoluto sencilla.

Cierto pero no imposible. Puedes utilizar el componente TRxRichEdit (vienen con las Rx, que las puedes descargar de la pág. web del compañero Cadetill (http://www.clubdelphi.com/~cadetill/index.php) ) para generarte tu propio Editor de Texto. Todo depende de lo que quieras hacer, con Word como bien dice Marto te puedes apañar... ;) .

Saludos!

oliverinf
26-04-2004, 17:27:49
Gracias por responder a mi pregunta. Con respecto a las opciones que uds. me dicen ya las habia pensado (y aún no las he descartado), simplemente que estaba buscando alguna otra alternativa que sirviera para lo que necesito.
La primera opcion de utilizar word (se que la mas simple de implementar), pero no me convence ya que dependo de que este instalado dicho soft en la maquina (lo cual no me resulta muy amigable depender del mismo).
La segunda opcion es la que estuve pensando con mayor detenimiento (hacer un pequenño editor de textos).
En este ultimo caso me gustaría que el usuario pueda insertar los "campos de combinación" como el desea.
Seguiré pensando en esta última opcion, cualquier idea la agradeceré.

Pd.: me gustaria hacer algo como similar al Soft "Lex-Doctor". Donde toda la edicion de los reportes se hace en el soft mismo.

Nuria
26-04-2004, 17:42:55
En este ultimo caso me gustaría que el usuario pueda insertar los "campos de combinación" como el desea.

Por si te sirve, yo lo tengo implementado en mi editor. Lo que hago es una especie de plantilla de word. Depende de la plantilla que utilice el usuario le muestro unos campos u otros en un ComboBox, por lo que el mismo se va creando sus propias plantillas...

Luego cuando llama al texto simplemente sustituyo los campos por el valor que corresponde, según el query. Para identificar los campos que tengo que sustituir en el texto los he enmarcado con los siguientes símbolos '<< NombreCampo >>' .

Espero que te sirva.

Saludos! :)

oliverinf
26-04-2004, 21:15:46
[

Luego cuando llama al texto simplemente sustituyo los campos por el valor que corresponde, según el query. Para identificar los campos que tengo que sustituir en el texto los he enmarcado con los siguientes símbolos '<< NombreCampo >>' .

Te agradeceré si me explicas con mas detalle esta alternativa que a simple vista me parece muy viable.
Además, quisiera saber si usas algun editor de reportes com Quick Report o algun otro.
las plantillas las guardas con algun formato en especial o solo texto.

gracias.

Nuria
27-04-2004, 11:02:16
Hola!

Simplemente cuando selecciona un campo que quiere añadir a la plantilla hago lo siguiente:


// Campos--> TComboBox donde tengo los nombres de los campos .
// Editor ---> TRichEdit.
// Cuando selecciona un campo del comboBox...
Editor.SelText:= '<<' + Campos.Items.Strings[Campos.ItemIndex]+ '>>';


Así me creo la plantilla. Es de tipo texto pero la puedes guardar con la extensión que quieras. Luego para sustituir los campos hago lo siguiente:


// Valor ---> Array donde estan los valores de los campos...
// Sustituyo campos
for i:= 0 to Length(Campos) - 1 do begin
texto := '<<' + Campos[i] + '>>';
// busco la de la string a sustituir...
posi := Editor.FindText(texto,1,longi,[stSetSelection]);
while posi >= 0 do begin
MainForm.Editor.selStart := posi;
MainForm.Editor.SelLength := Length(texto) ;
// Sustituyo el texto....
MainForm.Editor.SelText := valor[i];
posi := Editor.FindText(Texto,posi,longi,[stSetSelection]);
end;
end;


quisiera saber si usas algun editor de reportes com Quick Report o algun otro.
De momento no. Aunque creo que al final tendré que utilizar alguno, ya que estoy teniendo algún problemilla a la hora de imprimir ciertas cosas...Hilo (http://www.clubdelphi.com/foros/showthread.php?t=9527)

Bueno espero haberme explicado bien. Cualquier duda ya sabes...

Saludos! ;)

oliverinf
27-04-2004, 13:51:43
Muchas gracias por tu explicacion Nuria. Veré si lo implemento. Es mas, trataré de hacer esto que me decis y generando algun reporte dinámicamente de acuerdo a la plantilla utlizada.

Saludos...