Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Problemas con XP (https://www.clubdelphi.com/foros/showthread.php?t=51597)

paulina_puentes 20-12-2007 15:15:32

Problemas con XP
 
Hola necesito una Ayudita, resulta que tengo un sistema desarrollado en delphi 5 enterprise, y funciona bien en windows 2000 pero con los pc que tienen XP la coneccion es muy lenta, este programa es multi usuario, y no se como poder hacer, que opere de forma mas rapida en XP.-

Me podrian Ayudar por favor!!!


gracias

dec 20-12-2007 15:37:27

Hola,

¿Pero de veras crees que con la información que proporcionas es posible ayudarte? Para mí que no, pero, en fin...

paulina_puentes 20-12-2007 15:41:50

Y que crees tu que necesitas saber para poder ayudarme???

Gabo 20-12-2007 15:47:08

Cita:

Empezado por paulina_puentes (Mensaje 253718)
Y que crees tu que necesitas saber para poder ayudarme???

Aquí se contesta esa pregunta...

paulina_puentes 20-12-2007 16:02:40

a ver bueno la verdad no se bien como detallar esto pero hare lo posible, el sistema consta de varios programas todos unidos a un nucleo, contabilidad, remuneraciones, maquinaria, bodega, etc, todos son independientes cada uno con su icono de inicio, la coneccion a los datos es atraves de sql 7 localmente en mipc trabajo con el sql 2000 y con windows xp, el programa para correr, no se demora tanto en cuanto a lo que es ventana principal, ingreso de clave y la aparicion de la ventana principal, pero para llamar aplicaciones desde los menus se demora bastante, esto lo hace cuando va capturar datos a sql con el siguiente codigo que estoy llamando a una ventana en especial que es la que mas demora en abrir

Código Delphi [-]
 
procedure TFDM1.empresa;
begin
try
with FDM1.tempresa do
  begin
   indexname:='PK_empresa';
   editkey;
   Fieldbyname('codigo_empresa').AsInteger:=cod_emp;
   gotokey;
 end;
except
  showmessage('Error al leer empresa');
 end;
end;

procedure TFDM1.DataModuleCreate(Sender: TObject);
var
  i:integer;
begin
   cod_prg:='Pctb_docgen.exe';
   cod_emp:=1;
   cod_usu:='root';
   ano_ing:=2002;
   mes_ing:=2;
//*******
//*******
  for i:= 0 to ParamCount do
   begin
    if i=0 then
     begin
       cod_prg:=ExtractFileName(LowerCase(ParamStr(i)));
       fec_prg:=datetostr(FileDateToDateTime(FileAge(ParamStr(i))));
     end
     else
      if i=1 then
       cod_emp:=strtoint(ParamStr(i))
      else
      if i=2 then
       cod_usu:=trim(ParamStr(i))
      else
     if i=3 then
       ano_ing:=strtoint(ParamStr(i))
    else
    if i=4 then
      mes_ing:=strtoint(ParamStr(i))
   else
    if i=5 then
      nuevo:=trim(ParamStr(i))
   else
    if i=6 then
      graba:=trim(ParamStr(i))
   else
    if i=7 then
      elimin:=trim(ParamStr(i))
   else
    if i=8 then
      imprim:=trim(ParamStr(i))
   else
    if i=9 then
      excel:=trim(ParamStr(i))
   else
    if i=10 then
      nivel:=strtoid(ParamStr(i));
   end;
//*********
 FDM1.database1.Connected:=true;
 FDM1.database2.Connected:=true;
 FDM1.database3.Connected:=true;
 FDM1.tempresa.active:=true;
 empresa;
//************
 FDM1.testado.active:=true;
 FDM1.Testado.indexname:='PK_estado';
 ex_estado:=FDM1.Testado.findkey([cod_emp,ano_ing,mes_ing]);
 if not(ex_estado) then
 begin
   showmessage('No existe Estado para año '+inttostr(ano_ing) + ' mes ' + inttostr(mes_ing));
   exit;
 end;
//**********
 FDM1.tclacta.Filter:='anopro_clacta='+inttostr(ano_ing);
 FDM1.tclacta.Filtered:=true;
 FDM1.tcuenta.active:=true;
 FDM1.tdocgen.Filter:='tipiet_docgen = '+''''+Uctb_tipiet.docum+'''';
 FDM1.tdocgen.Filtered:=true;
 FDM1.tdocgen.active:=true;
 FDM1.tdocdet.active:=true;
 FDM1.tdocgen1.active:=true;
 FDM1.tcencos.active:=true;
 FDM1.ttipmov.active:=true;
 FDM1.TConobj.active:=true;
 FDM1.tclacta.active:=true;
 FDM1.tconcep.active:=true;
 FDM1.tproyec.active:=true;
 FDM1.tsujeba.active:=true;
 FDM1.testado.active:=true;
 FDM1.ttipdoc.active:=true;
 FDM1.Trectcp.active:=true;
 FDM1.Tparanu.active:=true;
 FDM1.Tparser.active:=true;
 FDM1.Trecccp.active:=true;
 FDM1.Trectcp.active:=true;
 FDM1.Tbloqueo.active:=true;
 FDM1.Tmnedia.active:=true;
 FDM1.Tnumtra.active:=true;
end;

Gracias, espero esto puede servir en algo!

egostar 20-12-2007 17:07:23

Cita:

Empezado por paulina_puentes (Mensaje 253729)

Código Delphi [-]
procedure TFDM1.DataModuleCreate(Sender: TObject);
var
i:integer;
begin
//**********
FDM1.tclacta.Filter:='anopro_clacta='+inttostr(ano_ing);
FDM1.tclacta.Filtered:=true;
FDM1.tcuenta.active:=true;
FDM1.tdocgen.Filter:='tipiet_docgen = '+''''+Uctb_tipiet.docum+'''';
FDM1.tdocgen.Filtered:=true;
FDM1.tdocgen.active:=true;
FDM1.tdocdet.active:=true;
FDM1.tdocgen1.active:=true;
FDM1.tcencos.active:=true;
FDM1.ttipmov.active:=true;
FDM1.TConobj.active:=true;
FDM1.tclacta.active:=true;
FDM1.tconcep.active:=true;
FDM1.tproyec.active:=true;
FDM1.tsujeba.active:=true;
FDM1.testado.active:=true;
FDM1.ttipdoc.active:=true;
FDM1.Trectcp.active:=true;
FDM1.Tparanu.active:=true;
FDM1.Tparser.active:=true;
FDM1.Trecccp.active:=true;
FDM1.Trectcp.active:=true;
FDM1.Tbloqueo.active:=true;
FDM1.Tmnedia.active:=true;
FDM1.Tnumtra.active:=true;
end;

Tengo una duda, ¿es necesario que abras todas tus tablas desde el principio?

Desconozco la estructura de tu sistema, pero pienso que podrías abrir las tablas solo cuando las necesitas acceder y no de la forma como lo estas haciendo.

Salud OS

duilioisola 20-12-2007 18:49:04

Dado que estás abriendo una base de datos, prueba lo siguiente:

Botón derecho sobre "Mi PC"
Propiedades
Solapa "Restaurar Sistema"
Desactiva la Restaruación.

Nos ha sucedido que esta opción crea una copia de la base cada vez que se accede a ella y por lo tanto hace muy lento el arranque del programa.

- Una solución es desactivar esta opción.
- Otra es meter la base de datos en una de las carpetas que no se verifican por la restauración automática. (Creo que Mis Documentos es una)
- Otra opción era cambiarle la extención al archivo de la base de datos.

duilioisola 20-12-2007 18:57:11

También puedes tratar de ver cual es la parte donde se toma más tiempo.

- Una forma de hacerlo es con el debuger de Delphi, poniendo un breakpoint y luego con F8 paso a paso ver cual/es línea/s tardan más.
- Otra forma es poniendo mensajes (si no tienes el Delphi en el XP)
Código Delphi [-]
...
FDM1.database1.Connected:=true;
ShowMessage('Paso 1');
FDM1.database2.Connected:=true;
ShowMessage('Paso 2');
FDM1.database3.Connected:=true;
ShowMessage('Paso 3');
FDM1.tempresa.active:=true;
ShowMessage('Paso 4');
empresa;
ShowMessage('Paso 5');
//************
FDM1.testado.active:=true;
ShowMessage('Paso 6');
FDM1.Testado.indexname:='PK_estado';
ShowMessage('Paso 7');
ex_estado:=FDM1.Testado.findkey([cod_emp,ano_ing,mes_ing]);
ShowMessage('Paso 8');
if not(ex_estado) then
begin
showmessage('No existe Estado para año '+inttostr(ano_ing) + ' mes ' + inttostr(mes_ing));
exit;
end;
//**********
ShowMessage('Paso 9');
FDM1.tclacta.Filter:='anopro_clacta='+inttostr(ano_ing);
FDM1.tclacta.Filtered:=true;
ShowMessage('Paso 10');
FDM1.tcuenta.active:=true;
ShowMessage('Paso 10');
FDM1.tdocgen.Filter:='tipiet_docgen = '+''''+Uctb_tipiet.docum+'''';
FDM1.tdocgen.Filtered:=true;
FDM1.tdocgen.active:=true;
ShowMessage('Paso 11');
FDM1.tdocdet.active:=true;
ShowMessage('Paso 12');
FDM1.tdocgen1.active:=true;
ShowMessage('Paso 13');
FDM1.tcencos.active:=true;
ShowMessage('Paso 14');
FDM1.ttipmov.active:=true;
ShowMessage('Paso 15');
FDM1.TConobj.active:=true;
ShowMessage('Paso 16');
FDM1.tclacta.active:=true;
ShowMessage('Paso 17');
FDM1.tconcep.active:=true;
ShowMessage('Paso 18');
FDM1.tproyec.active:=true;
ShowMessage('Paso 19');
FDM1.tsujeba.active:=true;
ShowMessage('Paso 20');
FDM1.testado.active:=true;
ShowMessage('Paso 21');
FDM1.ttipdoc.active:=true;
ShowMessage('Paso 22');
FDM1.Trectcp.active:=true;
ShowMessage('Paso 23');
FDM1.Tparanu.active:=true;
ShowMessage('Paso 24');
FDM1.Tparser.active:=true;
ShowMessage('Paso 25');
FDM1.Trecccp.active:=true;
ShowMessage('Paso 26');
FDM1.Trectcp.active:=true;
ShowMessage('Paso 27');
FDM1.Tbloqueo.active:=true;
ShowMessage('Paso 28');
FDM1.Tmnedia.active:=true;
ShowMessage('Paso 29');
FDM1.Tnumtra.active:=true;
ShowMessage('Paso 30');
end

Si por ejemplo entre el mensaje "Paso 4" y "Paso 5" ha tardado mucho, el problema estará en el procedimeinto "empresa".

Gabo 21-12-2007 10:15:44

Cita:

Empezado por duilioisola (Mensaje 253767)
Dado que estás abriendo una base de datos, prueba lo siguiente:

Botón derecho sobre "Mi PC"
Propiedades
Solapa "Restaurar Sistema"
Desactiva la Restaruación.

Nos ha sucedido que esta opción crea una copia de la base cada vez que se accede a ella y por lo tanto hace muy lento el arranque del programa.

- Una solución es desactivar esta opción.
- Otra es meter la base de datos en una de las carpetas que no se verifican por la restauración automática. (Creo que Mis Documentos es una)
- Otra opción era cambiarle la extención al archivo de la base de datos.

Tengo entendido que este problema afecta a los .gdb de Interbase, no a las bases de datos de sql server...

Neftali [Germán.Estévez] 21-12-2007 10:59:57

Cita:

Empezado por duilioisola (Mensaje 253767)
Dado que estás abriendo una base de datos, prueba lo siguiente...

No hace falta probar eso; Eso es aplicable a las BAse de Datos con extensón GDB de Interbase. Ese problema no afecta a las conexiones a SQL Server.

AÑADO: Veo que Gabo fue más rápido...

Neftali [Germán.Estévez] 21-12-2007 11:04:13

Deberías descartar si es problema de las conexiones con tu programa o con todos.
Hacer un pequeño programa que realice algunas conexiones y probarlo en el XP ey en el 2000. Con eso sabrás si es cosa del programa o del ordenador. Puede ser temas de conexión a red o configuración de lar tarjetas. De ahí que sea importante saber si tu programa es el único que va lento o son todos.

Si estás accediendo vía ADO revisa que tengas actualizadas las MDAC. Y también que tengas actualizado el cliente de SQL Server.

paulina_puentes 23-02-2009 16:42:51

Gracias a todos los que respondieron, el problema ya esta solucionado.

Solo hice lo que me recomendó egostar, que fue abrir las tablas a su debido momento

gracias a todos !!!

rcarrillom 23-02-2009 19:48:49

Tarde pero seguro :D

paulina_puentes 23-02-2009 20:27:37

Cita:

Empezado por rcarrillom (Mensaje 339084)
Tarde pero seguro :D

jajajaja sip :) es que he tenido varias cosas que hacer, ni me metí a internet :D


La franja horaria es GMT +2. Ahora son las 23:55:15.

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