PDA

Ver la Versión Completa : Al insertar un registro me salta a otro anterior


judoboy
30-01-2006, 19:34:15
Me explico mejor.
Tengo una aplicación diseñada con Delphi 6 y utilizo interbase 6 ( a la espera de migrar a firebird).
El problema me viene a la hora de hacer facturas. Para ello utilizo 3 tablas. Factura, Partidas_factura y lineas_partida. Cuando voy a crear una factura nueva a veces a la hora de insertar la primera partida el registro me cambia y se me situa en una factura anterior por lo que me es imposible hacer esa factura.

Os pongo el código para que me digais que hago mal

procedure TFrmFacturas.BtnAnyadirPartidaClick(Sender: TObject);
var codigof,factura:string;
HoraInsercion:TTime;
prueba,FacturaInsert:string;
begin

FacturaInsert:=FrmFacturas.DBEditCodigo.Text;

if DBEditPartida.Text=''then
begin
ShowMessage(' Introduce un nombre de partida');
DBEditPartida.SetFocus;
Exit;
end
else
begin

HoraInsercion:=now;
UModuloDatos.Facturas.DataSet.Post;
UModuloDatos.Facturas.DataSet.DisableControls;

UModuloDatos.PARTIDAS_FACTURA.DataSet.Append;{inserta al final de la tabla}

ControlPartidas.ActivePage.Caption:=DBEditPartida.Text;
DBEditNombrePartida1.Text:=DBEditPartida.Text;
UModuloDatos.TPARTIDAS_FACTURANOMBRE_PARTIDA.AsString:=DBEditPartida.Text;
UModuloDatos.Partidas_Factura.DataSet.FieldByName
('HORAINSERCION').AsDateTime:=HoraInsercion;


//inicializo prueba
factura:=DBEditCodigo.Text;
codigof:=factura+'01';
// fin prueba

{generamos el código de la partida}
if (UModuloDatos.Partidas_Factura.DataSet.RecordCount=0) then
begin
factura:=DBEditCodigo.Text;
codigof:=factura+'01';
DBEditCodigoPartida.Text:=codigof;

end
else
begin

NumeroPartida;
if DBGNumeroPartida.Fields[0].AsString=''then
NumeroPartida
else
codigof:=DBGNumeroPartida.Fields[0].Value+3;


DBEditCodigoPartida.Text:=codigof;


end;
UModuloDatos.TPARTIDAS_FACTURACODIGO_PARTIDA.AsString:=codigof;
UModuloDatos.TPartidas_FacturaORDEN.AsString:=codigof;//Este campo lo podemos modificar para ordenar
//las partidas
// UModuloDatos.TPARTIDAS_FACTURAFACTURA.AsString:=DBEditCodigo.Text;
{Añadidas estas dos líneas y quitada la anterior para que no salte de factura
al insertar una partida pero NO FUNCIONA }
UModuloDatos.TPARTIDAS_FACTURAFACTURA.AsString:=FacturaInsert;
FrmFacturas.DBEditCodigo.Text:=FacturaInsert;



LineasFactura_EnBlanco;
{habilito los controles de concepto}
BtnAnyadirLinea.Enabled:=True;
BtnEliminarLinea.Enabled:=True;
EditConcepto.Enabled:=True;
EditDescripcionConcepto.Enabled:=True;
BtnConcepto.Enabled:=True;
EditCantidad.Enabled:=True;
EditPrecio.Enabled:=True;
EditConcepto.Color:=ClWindow;
EditDEscripcionConcepto.Color:=ClWindow;
EditCantidad.Color:=ClWindow;
EditPrecio.Color:=ClWindow;

EditConcepto.SetFocus;
{Quitar el control 23/02/04}
// UModuloDatos.Facturas.DataSet.EnableControls;

{habilito el DBGPartida}

DBGPartida.Enabled:=True;
DBGPartida.Color:=clWindow;

end;
UModuloDatos.Facturas.DataSet.EnableControls;{Añadido 23/02/04}

end;

{******************************************************************************}

judoboy
31-01-2006, 16:22:26
Necesitais algo más de información??.
Es que no se porque puede pasar.
Cuando meto una partida de la factura me salta a otra factura anterior.

kalimero
31-01-2006, 16:44:19
Hola.
En primer lugar, comentar que es dificil seguir la traza a un código tan desordenado como este. Después ¿Donde haces el POST para:

UModuloDatos.PARTIDAS_FACTURA.DataSet.Append;


Saludos