Ver Mensaje Individual
  #4  
Antiguo 30-07-2008
alfredo torres alfredo torres is offline
Registrado
 
Registrado: abr 2008
Posts: 4
Reputación: 0
alfredo torres Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
¿quieres pasarlo de Delphi a Excel? ¿como lo haces que es lento? ¿podemos ver algo de código?

Sí es desde el mismo SQL Server a Excel, solo bastaría con copiar y pegar
gracias por responder lo quiero pasar de delphi a excel pero me imagino que como lo estoy grabando de celda por celda eso es lo que hace que sea lento
te muestro como lo estoy grabando


-----con esto llamo al query

with QryMainRep do
begin
DatabaseName := FDataWare.DB.DatabaseName;
Close;
SQL.Clear;
sql.Add(sAQry[q]);
Params.ParamByName('pAnio').Value :=iAnio ;
Params.ParamByName('pMes').Value := iMes;
open;



if RecordCount > 0 then
while not eof do
begin

-----------empiezo a grabar todo lo de la Zona Distrito Federal

sUbicacion := TRIM(fieldbyName('S_Ubicacion').AsString);

If sUbicacion = '1-DF' Then

begin
WorkSheet.Cells.Item[iRowIni, 1]:= fieldbyName('S_Cia').AsString;
WorkSheet.Cells.Item[iRowIni, 2]:= fieldbyName('S_ClaveCliente').AsString;
WorkSheet.Cells.Item[iRowIni, 3]:= fieldbyName('S_Cliente').AsString;
WorkSheet.Cells.Item[iRowIni, 4]:= fieldbyName('S_ClaveTitulo').AsString;
WorkSheet.Cells.Item[iRowIni, 5]:= fieldbyName('S_Titulo').AsString;
WorkSheet.Cells.Item[iRowIni, 6]:= fieldbyName('DescAutor').AsString;
WorkSheet.Cells.Item[iRowIni, 7]:= fieldbyName('S_ClaveEstado').AsString;
WorkSheet.Cells.Item[iRowIni, 8]:= fieldbyName('S_Estado').AsString;
WorkSheet.Cells.Item[iRowIni, 9]:= fieldbyName('S_ClavePais').AsString;
WorkSheet.Cells.Item[iRowIni, 10]:= fieldbyName('S_Pais').AsString;
WorkSheet.Cells.Item[iRowIni, 11]:= fieldbyName('S_GrupoEstadistico').AsString;
WorkSheet.Cells.Item[iRowIni, 12]:= fieldbyName('S_DesGrupoEstadistico').AsString;
WorkSheet.Cells.Item[iRowIni, 13]:= fieldbyName('S_ClaveFamilia').AsString;
WorkSheet.Cells.Item[iRowIni, 14]:= fieldbyName('S_Familia').AsString;
WorkSheet.Cells.Item[iRowIni, 15]:= fieldbyName('Tituloautor').AsString;
WorkSheet.Cells.Item[iRowIni, 16]:= fieldbyName('ImpAAnt').AsFloat;
WorkSheet.Cells.Item[iRowIni, 17]:= fieldbyName('ImpBrutoAAnt').AsFloat;
WorkSheet.Cells.Item[iRowIni, 18]:= fieldbyName('UniAAnt').AsInteger;
WorkSheet.Cells.Item[iRowIni, 19]:= fieldbyName('ImpMAnt').AsFloat;
WorkSheet.Cells.Item[iRowIni, 20]:= fieldbyName('ImpBrutoMAnt').AsFloat;
WorkSheet.Cells.Item[iRowIni, 21]:= fieldbyName('UniMAnt').AsInteger;
WorkSheet.Cells.Item[iRowIni, 22]:= fieldbyName('ImpAAct').AsFloat;
WorkSheet.Cells.Item[iRowIni, 23]:= fieldbyName('ImpBrutoAAct').AsFloat;
WorkSheet.Cells.Item[iRowIni, 24]:= fieldbyName('UniAAct').AsInteger;
WorkSheet.Cells.Item[iRowIni, 25]:= fieldbyName('ImpMAct').AsFloat;
WorkSheet.Cells.Item[iRowIni, 26]:= fieldbyName('ImpBrutoMAct').AsFloat;
WorkSheet.Cells.Item[iRowIni, 27]:= fieldbyName('UniMAct').AsInteger;
WorkSheet.Cells.Item[iRowIni, 28]:= fieldbyName('CstoUni').AsFloat;
WorkSheet.Cells.Item[iRowIni, 29]:= fieldbyName('MS').AsInteger;
WorkSheet.Cells.Item[iRowIni, 30]:= fieldbyName('AO').AsInteger;
end;




Claro todo se empieza a grabar en la hoja de excel pero es muy tardado para el usuario

de echo ya se pare las tablas por zonas para no tener una tabla tan grande , pero aun asi la tabla mas grande que tengo es de 50000 registros aproximadamente

la idea que tienes se copiar la tabla es buena solo que tendtria que meterlo a un store procedure para que cuando el usuario lo mande sea por medio de un boton , pero no se me ocurre como hacerlo.
Responder Con Cita