Ver Mensaje Individual
  #15  
Antiguo 03-03-2020
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por igamerpc Ver Mensaje
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
    { Private declarations }
    FCountRec: Integer;
    procedure InsertarRegistro(aTable: string; const codigo: Integer;
      const nombre: string; var aCont: Integer);
  public
    { Public declarations }
  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;  // Se inicializa el contador en cero
  while not FDQuery1.Eof do
  begin
    InsertarRegistro('TABLA2',
                      FDQuery1.FieldByName('CODIGO').AsInteger,
                      FDQuery1.FieldByName('NOMBRE').AsString,
                      FCountRec {<- se incrementa si todo ok } );
    FDQuery1.Next;
  end;
  ShowMessageFmt('Se insertaron %d registros',[FCountRec]); // Mostrar registros ingresados
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita