Modificaciones en el módulo UPC,
Como podéis ver hemos puesto un nuevo botón sobre un nuevo NewPanelDb, el datasource=DsPrincipal y el InverseAction=true. Este botón lo que hace es crear un nuevo registro con los datos de la Persona de contacto activa en ese momento, creando así el nuevo registro de manera automatizada.
El código añadido
Código Delphi
[-]
procedure TFPC.FormActivate(Sender: TObject);
begin
. . .
PanelAux.ColorNotActive:=COLORPANELACT;
PanelAux.ActiveColor:=COLORPANELNOACT;
end;
procedure TFPC.SpeedButtonBC4Click(Sender: TObject);
begin
try DSContactos.DataSet.Insert;
DSContactos.DataSet.FieldByName('MODULO').Value:=DsPrincipal.DataSet.FieldByName('MODULO').value;
DSContactos.DataSet.FieldByName('CODIGO').Value:=DsPrincipal.DataSet.FieldByName('CODIGO').value;
DSContactos.DataSet.FieldByName('NOMBRE').Value:=DsPrincipal.DataSet.FieldByName('NOMBRE').value;
DSContactos.DataSet.FieldByName('MOVIL').Value:=DsPrincipal.DataSet.FieldByName('MOVIL').value;
DSContactos.DataSet.FieldByName('MAIL').Value:=DsPrincipal.DataSet.FieldByName('EMAIL').value;
DSContactos.DataSet.Post;
IBT.CommitRetaining; ShowMessage('Se ha creado un nuevo contacto con los datos de la persona de contacto actual');
except
on E: Exception do
begin
MessageBeep(1000);
ShowMessage('Se ha producido un error y el proceso no se ha podido terminar Unidad:[ UPC ] Modulo:[ Grabar nuevo contacto]' + Chr(13) + Chr(13)
+ 'Clase de error: ' + E.ClassName + Chr(13) + Chr(13)
+ 'Mensaje del error:' + E.Message+Chr(13) + Chr(13)
+ ' '+Chr(13) + Chr(13)
+ 'El proceso ha quedado interrumpido');
if DSContactos.DataSet.State in [dsEdit, dsInsert] then DSPrincipal.DataSet.Cancel;
IBT.RollbackRetaining; end;
end;
end;
También se detecto un error en el código de proveedores, os pongo el procedure con la corrección
Código Delphi
[-]procedure TFProveedor.CambiarPagina(index: Integer; Sender: TObject);
var VarBActivar:Boolean;
VarISegundoPageControlIndex:Integer;
VarSModulo, VarSCodigo:string;
begin
. . .
case Tipo of
. . .
4:begin
ActQuery(DM.IBQPersonasContacto,'SELECT * FROM PC WHERE (PC.MODULO = '+QuotedStr(VarSModulo)+') AND (PC.CODIGO = '+QuotedStr(VarSCodigo)+')');
if not DM.IBQPersonasContacto.IsEmpty then
begin
DBNavigator1.DataSource:=DM.DSIBQPersonasContacto;
end else DM.IBQPersonasContacto.Active:=False;
VarISegundoPageControlIndex:=1;
end;
. . .
end;
end;