Hola.
Cita:
Empezado por igamerpc
Ya me di cuenta. Lo comprobe pero no funciono. Es raro lo de sumar con la llamada de procedure. Ya encontrare algun dia una solucion de eso.
|
No tanto, la idea es tener un acumulador que se pone a cero al iniciar el ingreso en lote y se incrementa en cada ingreso, al finalizar con los ingresos se muestra el valor del contador.
El acumulador/contador lo podes declarar como: Variable privada al formulario, global a la unidad o pasar una variable por referencia al procedimiento Insertar_Registro_Tabla_1.
Ejemplo simplificado de un caso mixto (variable privada al form y parámetro por referencia):
Código Delphi
[-]
...
type
TForm1 = class(TForm)
FDConnection1: TFDConnection;
FDQuery1: TFDQuery;
FDQuery2: TFDQuery;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
btnInsert: TButton;
procedure btnInsertClick(Sender: TObject);
private
FCountRec: Integer;
procedure InsertarRegistro(aTable: string; const codigo: Integer;
const nombre: string; var aCont: Integer);
public
end;
var
Form1: TForm1;
implementation {$R *.dfm}
procedure TForm1.InsertarRegistro(aTable: string; const codigo: Integer;
const nombre: string; var aCont: Integer);
begin
FDQuery2.Close;
FDQuery2.SQL.Text := 'INSERT INTO ' + aTable +
'(CODIGO, NOMBRE) VALUES(:COD, :NOM)';
FDQuery2.ParamByName('COD').AsInteger := codigo;
FDQuery2.ParamByName('NOM').AsString := nombre;
try
FDQuery2.ExecSQL;
Inc(aCont);
except on E: Exception do
Application.ShowException(E);
end;
end;
procedure TForm1.btnInsertClick(Sender: TObject);
begin
FCountRec := 0; while not FDQuery1.Eof do
begin
InsertarRegistro('TABLA2',
FDQuery1.FieldByName('CODIGO').AsInteger,
FDQuery1.FieldByName('NOMBRE').AsString,
FCountRec );
FDQuery1.Next;
end;
ShowMessageFmt('Se insertaron %d registros',[FCountRec]); end;
Saludos