FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
||||
|
||||
Hola Chele!
Prueba con : Application.ProcessMessages; Mira este hilo ProcessMessages Suerte! Saludos . |
#3
|
|||
|
|||
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 |
#4
|
||||
|
||||
Cita:
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
|||
|
|||
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. |
#6
|
||||
|
||||
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:
|
#7
|
|||
|
|||
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; |
#8
|
|||
|
|||
Nadie sabe que podria ser ???
|
#9
|
||||
|
||||
Creo que la falta de respuestas se debe a varios factores:
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
|
|