![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
De todas formas, gracias por tu ayuda Charly.
Este es el código de mis amarguras. Algunos trozos de código no figura, por que esas partes funcionan bien, y no tienen nada que ver con el resto. Lo he quitado para no alargarme, y no liar. En el form desde el que se abre el que tiene este código, y antes de abrirlo, se ha insertado un nuevo registro, usando append, en FrmFxMain.TbEcono. Ese registro es el que me da problemas cuando hago post. //procedure que se activa al pulsar el botón "Aceptar" procedure TFrmEfePago.BitBtn1Click(Sender: TObject); var cEmpresa, cRecibo, cAuxRecibo : string; var lEmpresa, lSigue : boolean; var nAux : Currency; var cCodigo : integer; var dbPos, dbPos2, dbPos3 : TBookMark; begin //=====1 COMPROBAMOS SI SE HA SELECCIONADO ALGÚN REGISTRO PARA PAGAR. // si no hay ninguno seleccionado al pulsar aceptar, salimos sin hacer nada //=====2 COMPROBAMOS SI SE HA SELECCIONADO ALGUNA FORMA DE PAGO //=====3 SI LA FORMA DE PAGO ES COMPENSACIÓN, //nos aseguramos que haya dinero suficiente en el pasivo //si no hay suficiente dinero en pasivo, lo avisamos y salimos del procedure //=====4 SI HAY FORMA DE PAGO SELECCIONADA, Y REGISTROS MARCADOS PARA SER PAGADOS //========AVERIGUAMOS LA EMPRESA QUE LO VA A FACTURAR //según el código anterior vemos que empresa lo factura TRY //ponemos una marca en el registro actual de la tabla TbEcono, que es el del //registro antiguo que ahora estamos pagando dbPos2 := TbEcono.GetBookmark; TbEcono.DisableControls; // esta tabla, es la que tiene los posibles registros que puedo pagar TbEcono.First; While Not TbEcono.EOF Do Begin //si el campo ASIENTO es igual a 1, es un pago que se ha seleccionado para ser pagado if TbEconoASIENTO.Value = 1 then begin //si lEmpresa está como true IF lEmpresa THEN BEGIN //la empresa que lo paga es la que está en EMPASO cEmpresa := TbEmpresasEMPASO.Value; END ELSE BEGIN //la empresa que lo paga es la que está en CODIGO cEmpresa := TbEmpresasCODIGO.Value; END; break; end; TbEcono.Next; End; FINALLY TbEcono.GotoBookmark(dbPos2); TbEcono.FreeBookmark(dbPos2); TbEcono.EnableControls; END; //=====5 CALCULAMOS EL NÚMERO DE RECIBO DE LA TRANSACCIÓN TbEmpresasAux.Locate('codigo',(cEmpresa), [locaseInsensitive]); TbForPago.Locate('codigo',(FrmFxMain.TbEconoFORPAGO.AsVariant), [locaseInsensitive]); {Calcular el número de recibo que vamos a asignar a TbEconoRECIBO} if TbForPagoNONUMERAR.Value ='T' then begin cRecibo := 'No Emitido'; end else begin cRecibo := TbEmpresasAuxNUMRECIBO.Value; showmessage ('Recibo anterior' + cRecibo ); cAuxRecibo := '0000000' + inttostr(strtoint(Copy(cRecibo, 4, 7)) + 1); cAuxRecibo := Copy(cAuxRecibo, length(cAuxRecibo)-6, 7 ); TbEmpresasAux.Edit; TbEmpresasAuxNUMRECIBO.Value := Copy(cRecibo, 1, 3) + cAuxRecibo; showmessage ('recibo próximo' + TbEmpresasAuxNUMRECIBO.AsString ); TbEmpresasAux.Post; TbEmpresasAux.Refresh; end; //guardamos los datos introducidos al abrir este Form para que se nos genere el //valor del campo CODIGO, y poder trabajar con él después FrmFxMain.TbEcono.Post; dbPos3 := FrmFxMain.TbEcono.getbookmark; FrmFxMain.TbEcono.Refresh; FrmFxMain.TbEcono.GotoBookmark(dbPos3); //me va siempre al último registro, no al registro en el que estaba //después tomamos el valor que para este registro tenemos en la tabla econo cCodigo := FrmFxMain.TbEconoCODIGO.Value; FrmFxMain.TbEcono.Edit; //guardamos los cambios de los datos que hemos añadido en la tabla TbEcono, de fxMain FrmFxMain.TbEconoASIENTO.Value := cCodigo; FrmFxMain.TbEconoRECIBO.Value := cRecibo; FrmFxMain.TbEcono.Post; FrmFxMain.TbEcono.Refresh; //=====6 SI LA F.P. ERA 90, RESTO AL PASIVO LO QUE SE HA ABONADO //====7 GUARDO EL NÚMERO DE RECIBO, Y ASIENTO ADECUADO TbEcono TRY TbEcono.DisableControls; TbEcono.First; While not TbEcono.EOF do begin if TbEconoASIENTO.Value = 1 then begin //edito el registro antiguo que estamos pagando TbEcono.Edit; //guardo en la tablaEcono, en el campo ASIENTO, el mismo que tenga //el registro que está abonando TbEconoASIENTO.Value := cCodigo; TbEconoRECIBO.Value := cRecibo; TbEcono.Post; TbEcono.Refresh; end; TbEcono.Next; end; FINALLY TbEcono.EnableControls; FrmFxMain.TbEcono.Refresh; END; end;
__________________
Sonrie al mundo, y el mundo te sonreirá :) Última edición por Giniromero fecha: 10-07-2003 a las 15:05:48. |
![]() |
|
|
![]() |
|