Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-03-2015
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 306
Poder: 14
giulichajari Va por buen camino
Plantilla de excel no guarda los datos

Hola amigos, tengo un form para hacer un presupuesto que tiene una grilla conectada a un ClientDataSet, como tabla temporal.

Luego un button "Imprimir" guarda los datos en la base de datos, pero a la vez toma un archivo base de excel, que es un archivo guardado en el directorio de la aplicacion con una plantilla (osea un formato previo) y yo sobreescribo las celdas correspondientes para que se complete la tabla de productos el cliente solicitado, etc.. y si se completan. Pero cuando salgo de excel y vuelvo a abrir el archivo de presupuesto (en el proceso hago una copia de la plantilla y la guardo en una carpeta presu) no se ven los datos, solo la plantilla.

La verdad no se que puede ser.

Codigo boton imprimir:

Código Delphi [-]
procedure TForm4.SpeedButton5Click(Sender: TObject);

var
Excel, Libro, Hojal: OleVariant;
Plantilla:string;
origen,s,destino,nombre,fechaf,fechai,fechac:string;
l,x:integer;
cantidad,preciououble;
idc,ide,ids,idprodu:Integer;
a:TServerMethods1Client;

begin
  a:=TServerMethods1Client.Create(ClientModule1.SQLConnection1.DBXConnection);
   if (Grillapresu.DataSource.DataSet.RecordCount>0) then
      begin

              if Form2.Edit1.Text<>'' then
                      idc:=ClientModule1.qscli.ParamByName('idcli').AsInteger
              else
              idc:=1;
               if cempleados.KeyValue=null then
                begin
                   ShowMessage('seleccione el empleado responsable.');
                end
               else
                begin
                   ide:=cempleados.KeyValue;
                 end;
               ids:=StrToInt(pre.ReadString('sucursal','id','1'));
               fechac:=FormatDateTime('yyyy/mm/dd',Now);
               fechai:=FormatDateTime('yyyy/mm/dd',Now);

               fechaf:=FormatDateTime('yyyy/mm/dd', IncDay(Now,15));

               a.nuevopresupuesto(idc,ide,ids,fechac,fechai,fechaf);
  l:=Grillapresu.DataSource.DataSet.RecordCount;




      with ClientModule1.cdspresu do

             begin
               First;
                while not Eof do
                    begin
                    cantidad:=ClientModule1.cdspresucantidad.AsFloat;
                    preciou:=ClientModule1.cdspresuprecio.AsFloat;
                    idprodu:=ClientModule1.cdspresuidproducto.AsInteger;
                    a.nuevodetallepresupuesto(idprodu,cantidad,preciou);

                    Next;
                    end;
               EmptyDataSet;
             end;

          // copiar plantilla
nombre:=FormatDateTime('yyyy-mm-dd,hh-mm-ss',Now) + 'presu.xlsx';
origen:=ExtractFilePath(Application.ExeName)+ 'presu.xlsx';
destino:=ExtractFilePath(Application.ExeName) +'pres\' + nombre;
CopyFile(Pchar(origen),Pchar(destino),True);
 //crear el objeto excel
Excel := CreateOleObject('Excel.Application');

  Plantilla:=destino;
  Excel.SheetsInNewWorkbook := 1;

  Libro := Excel.Workbooks.Open(Plantilla); // Plantilla es la ruta a un archivo excel que uso como plantilla
  Hojal := Libro.Worksheets[1];
  //posicionar datos
  Hojal.Cells[3,6] := '100';
  Hojal.Cells[4,4] := Edireccion.Text;
  Hojal.Cells[5,4] := Eciudad.Text;
  Hojal.Cells[6,4]:=Edit1.Text;
  if (Form2.Edit1.Text<>'') then
      begin
         Hojal.Cells[12,8]:=ClientModule1.qscli.ParamByName('idcli').AsInteger;
         Hojal.Cells[15,5]:=ClientModule1.qsclinombreyape.AsString;
      end;
  Hojal.Cells[10,8]:=Eemititdo.Text;
  Hojal.Cells[13,8]:='efectivo';
  Hojal.Cells[14,8]:=Evalido.Text;
  Excel.Visible := true;
   Hojal.SaveAs(nombre);

end
else
begin
ShowMessage('no hay productos');
end;

end;

En la primera parte guardo los datos en bd con el servidor DataSnap y en luego cargo la plantilla.
Responder Con Cita
  #2  
Antiguo 09-03-2015
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.418
Poder: 24
fjcg02 Va camino a la fama
Para salvar hay que utilizar

ExcelWorkbook1.SaveAs(ficheroGenerado,
-4143 , emptyParam , emptyParam, false, false,
1, emptyParam, false, emptyParam, emptyParam,
emptyParam, 0);


y no hoja1.saveas(nombre);

hay mucha información en la red al respecto para que puedas adaptar tu código.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #3  
Antiguo 10-03-2015
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 306
Poder: 14
giulichajari Va por buen camino
Cita:
Empezado por fjcg02 Ver Mensaje
Para salvar hay que utilizar

ExcelWorkbook1.SaveAs(ficheroGenerado,
-4143 , emptyParam , emptyParam, false, false,
1, emptyParam, false, emptyParam, emptyParam,
emptyParam, 0);


y no hoja1.saveas(nombre);

hay mucha información en la red al respecto para que puedas adaptar tu código.

Saludos
Bueno encontre esto:

https://msdn.microsoft.com/es-es/lib...ok.saveas.aspx

Pero lo que no logro encontrar es el codigo de mi excel: es para excel 2010, donde esta el 52. El resto de los parametros son opcionales.
Código Delphi [-]
 Libro.SaveAs(nombre , 35 ,EmptyParam,EmptyParam,false,false,
                   EmptyParam,EmptyParam,EmptyParam,0);
Responder Con Cita
  #4  
Antiguo 10-03-2015
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.418
Poder: 24
fjcg02 Va camino a la fama
Este codigo me funciona con XP y excell 2010 y con W7 y excel 2010

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #5  
Antiguo 10-03-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
giulichajari,

Cita:
Empezado por giulichajari
...Plantilla de Excel no guarda los datos...lo que no logro encontrar es el código de mi Excel: es para Excel 2010...


Revisa esta información
Espero sea útil

Nelson.
Responder Con Cita
  #6  
Antiguo 10-03-2015
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 306
Poder: 14
giulichajari Va por buen camino
Cita:
Empezado por fjcg02 Ver Mensaje
Este codigo me funciona con XP y excell 2010 y con W7 y excel 2010

Saludos
Me dice numero de parametros no valido.

Y Nelson en tu codigo
Código Delphi [-]
WrkS.SaveAs(FileExcel,xlOpenXMLWorkbook);

yo puse el nombre del libro:

Código Delphi [-]
Libro.SaveAs(nombre, xlOpenXLSXWorkbook);

Y dice Undeclared Identifier "xlOpenXLSXWorkbook";

Y he visto muchos ejemplos con el nombre del archivo nomas.
Responder Con Cita
  #7  
Antiguo 10-03-2015
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 306
Poder: 14
giulichajari Va por buen camino
Finalmente funciono con
Código Delphi [-]
Excel.Save

ja

Lo que si se ve la cabecera del presupuesto, ahora necesito recorrer el ClientDataSet para completar el detalle:

Código Delphi [-]
 with ClientModule1.cdspresu do
    begin
      x:=20;
      First;
      while not eof do
         begin

                Hojal.Cells[x,4]:=ClientModule1.cdspresucantidad.Value;
                Hojal.Cells[x,5]:=ClientModule1.cdspresunombre.Value;
                inc(x);

         end;

         Next;
    end;

Hice lo de arriba pero no funciona.. pero la cabecera si queda guardada. Muchas gracias
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
Guardar Datos en una plantilla de excel precargada Jorge Hernández .NET 4 24-05-2014 00:15:07
Exportar a plantilla excel-mxNativeExcel andresenlared Varios 0 09-07-2008 20:30:16
Exportar datos a una plantilla de excel Lizeth Impresión 3 08-09-2005 16:39:55
¿Plantilla Excel o como lo hago? RyAr Varios 2 27-07-2004 11:23:05
Abrir plantilla Excel y pasarle datos Jose Manuel Servers 2 01-06-2004 10:59:55


La franja horaria es GMT +2. Ahora son las 22:11:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi