Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-07-2004
chele chele is offline
Miembro
 
Registrado: feb 2004
Posts: 83
Poder: 21
chele Va por buen camino
Problema recursos ???

Tengo un codigo de generacion de facturas muy grande donde me da errores extraños.

Lo curioso es que si lo voy parando y le voy dando cada vez que hace una factura a F8 entonces no da ningun error y funciona perfectamente .... por eso se me ocurrio que puede ser por que el sistema se queda sin recursos y necesita "esperar" o algo similar cada X facturas.

Hay alguna forma de parar la ejecuccion del programa durante 2 segundos o similar y que despues siga ejecutandose normalmente ???

El problema me lo da con un :

qryProva.UpdateObject := datamodule2.updFacturasCias;

Pero como digo no lo da siempre si no a veces.

Gracias anticipadas.
Responder Con Cita
  #2  
Antiguo 14-07-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 22
Nuria Va por buen camino
Hola Chele!

Prueba con : Application.ProcessMessages;

Mira este hilo ProcessMessages

Suerte!

Saludos .
Responder Con Cita
  #3  
Antiguo 14-07-2004
chele chele is offline
Miembro
 
Registrado: feb 2004
Posts: 83
Poder: 21
chele Va por buen camino
Pues no era eso ... me sigue dando el error.

el codigo es este :

qryProva := TIBQuery.create(qryProva);
qryProva.database := datamodule2.database;
qryProva.transaction := datamodule2.transaction;
qryProva.UpdateObject := datamodule2.updFacturasCias;
qryProva.Sql.text := 'Select * from facturascias';
qryProva.Open;
qryProva.Append;

Y el error lo da en qryProva.UpdateObject := datamodule2.updFacturasCias;

Pero no lo da siempre ... ¿alguna idea de por que peude ser?.

El error es generico del ejecutable
Responder Con Cita
  #4  
Antiguo 14-07-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por chele
...me sigue dando el error...
¿Cuál es "el error"?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 14-07-2004
chele chele is offline
Miembro
 
Registrado: feb 2004
Posts: 83
Poder: 21
chele Va por buen camino
El error es :

Project Interiura.exd raised exception class EAccessViolation whit message "Violacion de acceso a la direccion 004ADAB7 en el modulo 'Interiura.exe'. Leer de direccion 0000001B' PRocess stopped. Use step or run to continue

Pero es un bucle y entra muchas veces, por eso no entiendo pro que da este error.

Sorry por no decir el error desde el principio, se me paso

Última edición por chele fecha: 14-07-2004 a las 16:16:20.
Responder Con Cita
  #6  
Antiguo 14-07-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues convendría que pusieras el código que se encuentra dentro de ese bucle, probablemente no liberas algún objeto y lo creas de nuevo en cada entrada?

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #7  
Antiguo 14-07-2004
chele chele is offline
Miembro
 
Registrado: feb 2004
Posts: 83
Poder: 21
chele Va por buen camino
Gracias por ayudar, aqui os pongo el codigo a ver si veis el error ...

Código:
 procedure TfrmGenFac1.BitBtn1Click(Sender: TObject);
var
f : textfile;
fiva : textfile;
cadenaSQL, vdata2, prova, vsAux, vLinia: string;
qry, qry2, qryProva: TIBQuery;
comptador, vcuentacontable, vfecha, vhora, vRazon, vRazon2: string;
vIVA, vBASE, vImpext, vraux : real;
vFPDeposito : boolean;
numApunt, numApuntDiari : integer;

begin
try
AssignFile(f,Edit3.text);
Rewrite(f);
AssignFile(fiva,Edit4.text);
Rewrite(fiva);

except
showmessage('Archivo incorrecto o ruta no válida');
exit;
end;



if RadioButton1.Checked then
begin
cadenaSQL := 'select H.codcia, C.NIF, H.codhoncia, H.codexp, H.tothonor, C.TipoIVA, C.Idioma, C.cuentacontable, C.formapago, C.nombre from honorcias H inner join Compania C '
+ 'on H.codcia = C.codcompania where'
+ ' H.codcia = "' + edit1.text
+ '" and cast(fcierre as date) >= ' + quotedStr(FormatDateTime('mm/dd/yyyy',DFInicial.date))
+ ' and cast(fcierre as date) <= ' + quotedStr(FormatDateTime('mm/dd/yyyy',DFFinal.date))
+ ' and Facturados = "N"';
end;


if RadioButton2.Checked then
begin
cadenaSQL := 'select H.codcia, C.NIF, H.codhoncia, H.codexp, H.tothonor, C.TipoIVA, C.Idioma, C.cuentacontable, C.formapago, C.nombre from honorcias H inner join Compania C '
+ 'on H.codcia = C.codcompania where'
+ ' cast(fcierre as date) >= ' + quotedStr(FormatDateTime('mm/dd/yyyy',DFInicial.date))
+ ' and cast(fcierre as date) <= ' + quotedStr(FormatDateTime('mm/dd/yyyy',DFFinal.date))
+ ' and Facturados = "N"';
end;

try

datamodule2.tblParamFac.open();

qry := TIBQuery.Create(qry);
qry.database := datamodule2.database;
qry.transaction := datamodule2.transaction;
Qry.SQL.Text := cadenaSQL;
qry.open();
qry.FetchAll;

if qry.RecordCount = 0 then
begin
Showmessage('No hay Registros a Facturar en el intervalo seleccionado.');
freeandnil(qry);
// raise exception.create('No hay Registros a Facturar en el intervalo seleccionado.');
end
else
begin
qry.first;
while not qry.EOF do { Cycle until EOF is True }
begin

vCuentaCOntable := qry.fields[7].value;

if qry.fields[8].AsString = 'Compañía' then // FormaPago
vimpext := 0
else
vimpext := CalculGastosExternos(qry.fields[3].value);

vRazon := qry.fields[9].value;

if not varisnull(qry.fields[5].value) then
vIVA := unitproc.Round_nDec(qry.fields[4].value * qry.fields[5].value / 100,2)
else vIVA := 0;

vBASE := qry.fields[4].value + vIVA;

vfecha := FormatDateTime('dd/mm/yyyy',now);
vhora := timetostr(time);

TRY



qryProva := TIBQuery.create(qryProva);
qryProva.database := datamodule2.database;
qryProva.transaction := datamodule2.transaction;
qryProva.UpdateObject := datamodule2.updFacturasCias;
qryProva.Sql.text := 'Select * from facturascias';
qryProva.Open;
qryProva.Append;

qryProva.FieldByName('codfac').asstring := inttostr(unitproc.ComptadorFacCias);
qryProva.FieldByName('codcia').Value := qry.fields[0].value;
qryProva.FieldByName('nif').Value := qry.fields[1].value;
qryProva.FieldByName('codhonor').Value := qry.fields[2].value;
qryProva.FieldByName('femision').asstring := FormatDateTime('dd/mm/yyyy',DFEmision.date);
qryProva.FieldByName('codexp').asstring := qry.fields[3].asstring;
qryProva.FieldByName('importe').asstring := qry.fields[4].asstring;
if not varisnull(qry.fields[5].value) then qryProva.FieldByName('porciva').asstring := qry.fields[5].value
else qryProva.FieldByName('porciva').asstring := '0';
qryProva.FieldByName('gastosext').asstring := floattostr(vIMPEXT);
qryProva.FieldByName('iva').asstring := floattostr(vIVA);
qryProva.FieldByName('base').asstring:= floattostr(vBASE);
qryProva.FieldByName('totfac').asstring:= floattostr(vBASE + vIMPEXT);
qryProva.FieldByName('Idioma').asstring := qry.fields[6].value;
qryProva.FieldByName('CtaGastos').Value := datamodule2.tblParamFacCTAINGRESOS.value;
qryProva.FieldByName('CtaIva').Value := datamodule2.tblParamFacCTAIVACIAS.value;
qryProva.FieldByName('CtaDeudora').Value := datamodule2.tblParamFacCTADEUDORES.value;
qryProva.FieldByName('Iban').Value := datamodule2.tblParamFacIBAN.value;
qryProva.FieldByName('Bic').Value := datamodule2.tblParamFacBIC.value;
qryProva.FieldByName('Cta').Value := datamodule2.tblParamFacCuenTA1.value + '-' + datamodule2.tblParamFacCuenTA2.value + '-'
+ datamodule2.tblParamFacCuenTA3.value + '-' + datamodule2.tblParamFacCuenTA4.value;
qryProva.FieldByName('Banco2').Value := datamodule2.tblParamFacBANCO.value;
qryProva.FieldByName('DiasVenc').asstring := datamodule2.tblParamFacDIASVENC.asstring;
qryProva.FieldByName('hum').AsString := timetostr(time);
qryProva.FieldByName('fum').asstring := datetostr(date);
qryProva.FieldByName('uum').asstring := vusuari;

lblMarquee.caption := 'Factura nº ' + qryProva.FieldByName('codfac').asstring;
lblMarquee.Repaint;

qryProva.Post;




// AQUI VA UN CODIGO MUUUY LARGO DE ESCRIBIR EN UN TXT QUE SE ENVIA AL BANCO.



finally
freeandnil(qryProva);
end;

// MARCAR FACTURAT
try

cadenaSQL := 'update honorcias set Facturados = "S", fvto = "' + FormatDateTime('mm/dd/yyyy',DFEmision.date) + '", '
+ 'ffact = "' + FormatDateTime('mm/dd/yyyy',DFEmision.date) + '"'
+ 'where codhoncia = ' + qry.fields[2].value;
qry2 := TIBQuery.Create(qry2);
qry2.database := datamodule2.database;
qry2.transaction := datamodule2.transaction;
Qry2.SQL.Text := cadenaSQL;

Qry2.Prepare;
Qry2.execsql;
Qry2.unPrepare;

qry2.Transaction.CommitRetaining;

finally
freeandnil(qry2);
end;

qry.Next; { EOF False on success; EOF True when Next fails on last record }

end;
end;

finally
freeandnil(qry);
CloseFile(f);
CloseFile(fiva);
end;

FacturasGastosExternos;

end;
Responder Con Cita
  #8  
Antiguo 15-07-2004
chele chele is offline
Miembro
 
Registrado: feb 2004
Posts: 83
Poder: 21
chele Va por buen camino
Nadie sabe que podria ser ???
Responder Con Cita
  #9  
Antiguo 15-07-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Creo que la falta de respuestas se debe a varios factores:
  • Has publicado una cantidad grande de código
  • Aunque has usado la etiqueta CODE, el fuente no está indentado, con lo que su lectura se hace imposible
  • Seria mucho mejor si lo publicas con la etiqueta DELPHI (que resalta la sintaxis)
  • Si ya sabes donde ocurre el problema, podes intentar quitar partes no relevantes de la función, si no tenes idea, dejala completa, pero indentada, para que quien tenga la intención de ayudarte, la tenga mas facil.
  • Es recomendable no publicar líneas de código de mas de 80 caracteres... que ya ves que no caben en ningún monitor. Incluso yo, que uso 1280x1024 tendria que ir (por mucho) a la derecha.
  • Con los 67 mensajes que llevas, es de esperar que ya supieras todo esto...

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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


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


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