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
Código Delphi
[-]
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;
ControlPartidas.ActivePage.Caption:=DBEditPartida.Text;
DBEditNombrePartida1.Text:=DBEditPartida.Text;
UModuloDatos.TPARTIDAS_FACTURANOMBRE_PARTIDA.AsString:=DBEditPartida.Text;
UModuloDatos.Partidas_Factura.DataSet.FieldByName
('HORAINSERCION').AsDateTime:=HoraInsercion;
factura:=DBEditCodigo.Text;
codigof:=factura+'01';
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;
UModuloDatos.TPARTIDAS_FACTURAFACTURA.AsString:=FacturaInsert;
FrmFacturas.DBEditCodigo.Text:=FacturaInsert;
LineasFactura_EnBlanco;
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;
DBGPartida.Enabled:=True;
DBGPartida.Color:=clWindow;
end;
UModuloDatos.Facturas.DataSet.EnableControls;
end;