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 20-03-2013
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Exportar con TQRCommaSeparatedFilter

Estoy usando este código para exportar un QReport en fomato CSV:
Código:
TQRCommaSeparatedFilter *filtro = new TQRCommaSeparatedFilter(cInforme);
Informe->ExportToFilter(filtro);
delete filtro;
siendo cInforme un AnsiString con el nombre del fichero e Informe el QR.
El problema que tengo es que el fichero que saca no usa el punto y coma como separador de campos y me saca esto:
Cita:
"\"\0\"\"\0\"\"\0\"= RELACIÓN DE RECIBOS DOMICILIADOS - F. DE CARGO: 17/03/2013 =\"\0\"\"\0\"\"\n\"\"\0\"Referencia\"\0\"Titular\"\0\"\"\0\"Cuenta de cargo\"\0\"Cuenta de Cargo\"\n\
Sé que cada combinación "\0\ debería ser un punto y coma pero no encuentro la forma de asignar el separador en este filtro, y no quiero hacerlo desde el botón guardar del Preview del informe, o bien automatizarlo de forma que se guarde sin tener que visualizarlo.
Responder Con Cita
  #2  
Antiguo 20-03-2013
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 Angel.Matilla.

Cita:
El problema que tengo es que el fichero que saca no usa el punto y coma como separador de campos
Agrega un TQRCSVFilter y proba de este modo:
Código:
void __fastcall TForm1::ExportToCVS(const char *FileName)
{
 TQRCommaSeparatedFilter *CommaSF = new TQRCommaSeparatedFilter(FileName);
 __try {
   QRCSVFilter1->Separator = ';';
   QuickRep1->ExportToFilter(CommaSF);
 }
 __finally {
   delete CommaSF;
 }
}
Llamada:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  ExportToCVS("C:\\REPORTE.TXT");
}
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 20-03-2013 a las 18:49:34. Razón: agregar cita
Responder Con Cita
  #3  
Antiguo 21-03-2013
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Muchísimas gracias. Llevaba mucho tiempo tratando de encontrar una solución. Sólo he encontrado un problema y es que me llena el listado de comillas, así:
Cita:
"";"Referencia";"Titular";"";"Cuenta de Cargo";"Importe"
y cuando hace el salto de página añade una columna más; así:
Cita:
1ª página: "GESTIÓN DE AFILIADOS";"";"";"";"";"Pág.: 1"
2ª página: "";"GESTIÓN DE AFILIADOS";"";"";"";"";"Pág.: 2"
pero esto se puede resolver con StringReplace.
Responder Con Cita
  #4  
Antiguo 21-03-2013
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 Angel.Matilla.

Cita:
pero esto se puede resolver con StringReplace.
Pienso del mismo modo, no se me ocurre otra manera mas simple de salvar ese detalle:
Código:
void __fastcall TForm1::ExportToCVS(const char *FileName)
{
  TQRCommaSeparatedFilter *CommaSF = new TQRCommaSeparatedFilter(FileName);
  TStringList *SL = new TStringList;

  __try {
    QRCSVFilter1->Separator = ';';
    QuickRep1->ExportToFilter(CommaSF);
    SL->LoadFromFile(FileName);
    SL->Text = StringReplace(SL->Text, '"', "", TReplaceFlags() << rfReplaceAll);
    SL->SaveToFile(FileName);
  }
  __finally {
    delete SL;
    delete CommaSF;
  }
}
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 21-03-2013
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Gracias por tu ayuda. Permite que te haga otra pregunta.

La exportación, dado que la uso en varios sitios distintos de la aplicación, la tengo metida en una función. Me ha llamado la atención que no pueda crear un TQRCSFilter de forma dinámica. Da lo mismo que ponga
Código:
TQRCSVFilter *csv = new TQRCSVFilter
que
Código:
TQRCSVFilter *csv = new TQRCSVFilter()
siempre me da este error:
Cita:
[C++ Error] Funciones.cpp(457): E2285 Could not find a match for 'TQRCSVFilter::TQRCSVFilter()'
y no entiendo por qué.
Responder Con Cita
  #6  
Antiguo 21-03-2013
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 de nuevo.

Tenes que indicar el propietario (Owner) en la creación. Por lo que creo interpretar de tu mensaje, bién puede ser NULL.
Código:
void __fastcall ExportToCVS(TQuickRep *QR, const char *FileName)
{
  TQRCSVFilter *CVSF = new TQRCSVFilter(NULL);
  TQRCommaSeparatedFilter *CommaSF = new TQRCommaSeparatedFilter(FileName);
  TStringList *SL = new TStringList;

 __try {
   CVSF->Separator = ';';
   QR->ExportToFilter(CommaSF);
   SL->LoadFromFile(FileName);
   SL->Text = StringReplace(SL->Text,'"',"", TReplaceFlags()<<rfReplaceAll);
   SL->SaveToFile(FileName);
 }
 __finally {
   delete SL;
   delete CVSF;
   delete CommaSF;
 }
}
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 21-03-2013
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
¡Perfecto! No se me había ocurrido. Muchas gracias.

Última edición por Angel.Matilla fecha: 21-03-2013 a las 16:59:28.
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
Exportar con TQRCommaSeparatedFilter Angel.Matilla Impresión 0 01-03-2012 18:51:44
Exportar en una DLL en C++ Ege C++ Builder 1 05-04-2008 11:22:34
Exportar de .rpt a .pdf principiante22 Varios 4 14-03-2008 16:28:31
Exportar Alejandro73 Conexión con bases de datos 0 11-12-2007 16:20:21
Exportar a DBF o XLS mRoman Tablas planas 1 16-06-2005 18:10:25


La franja horaria es GMT +2. Ahora son las 04:02:55.


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