Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-03-2020
igamerpc igamerpc is offline
Miembro
 
Registrado: feb 2020
Posts: 53
Poder: 5
igamerpc Va por buen camino
Eso es verdad. Muchas gracias todo de eso. Lo intento otra forma para conseguir.
Responder Con Cita
  #2  
Antiguo 03-03-2020
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 14
engranaje Va por buen camino
Es posible que falte información para darte una solución, como la versión de delphi con la que estas trabajando, pero te recomiendo que mires la propiedad RowsAffected. deduzco que MOD.MyCommand1 es un tMyCommand y debería disponer esta property.

Propongo que pruebes a modificar tu código de la siguiente manera y compruebes el comportamiento de estas modificaciones.

Código Delphi [-]

procedure TForm1.Button2Click(Sender: TObject);
var   
   archivo: String;
   cod1  : Cardinal;   
   nom: string;
  iTotalRegistrosAfectados:integer;
begin 
 iTotalRegistrosAfectados :=0; 
 While Not MOD.Tabla2.Eof do
 Begin         
    cod1:=MOD.Tabla2.fieldbyName('CODIGO').Value;
    nom:=MOD.Tabla2.fieldbyName('NOMBRE').Value;         
    iTotalRegistrosAfectados := iTotalRegistrosAfectados + Insertar_Registro_Tabla_1('archivo', cod1, nom, Sender);
    CFG.MOD.Tabla2.Next;    
 end; 
 memo1.lines.add('Número de registros insertados: '+ IntToStr(iTotalRegistrosAfectados )); 
end;

function TForm1.Insertar_Registro_Tabla_1(NTabla:String; cod1:cardinal; nom:string; Sender: TObject):integer;
 var 
   iRegistrosAfectados:integer;
 begin
    iRegistrosAfectados := 0;  

    If MOD.Conexion.Connected =False Then        
       MOD.Conexion.Connected:=True;      

    MOD.Tabla1.TableName:=NTabla;     
    MOD.Tabla1.Active:=True;      
    MOD.MyCommand1.SQL.Clear;     
    MOD.MyCommand1.sql.Add('INSERT INTO '+NTabla+'(CODIGO,NOMBRE) VALUES(:Codigo,:Nombre)');     
    MOD.MyCommand1.ParamByName('CODIGO').Value:=cod1;     
    MOD.MyCommand1.ParamByName('NOMBRE').Value:=nom;     
    Try     
       MOD.MyCommand1.Execute;     
       iRegistrosAfectados := MOD.MyCommand1.RowsAffected;
    Except     
    End;    
    
    MOD.Tabla1.Refresh;    
    result := iRegistrosAfectados ; 
end;

Última edición por engranaje fecha: 03-03-2020 a las 16:21:17.
Responder Con Cita
  #3  
Antiguo 03-03-2020
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 14
engranaje Va por buen camino
En mi mensaje anterior cometí el error de no comprobar la vista previa y el código delphi no contenría los saltos de línea. El resultado fué que las líneas fueron tan largas que no tenía visible en el navegador el "botón" para editar, así que intenté solucionarlo en este segundo mensaje. Pero al darme cuenta de que la solución era tan sencilla como ampliar la ventana del navegador (bastante, eso es cierto), he podido editarlo.

Este mensaje ahora carece de sentido y solicito si es posible que sea borrado por algún administrador.

Gracias y disculpas.

Última edición por engranaje fecha: 03-03-2020 a las 16:26:24.
Responder Con Cita
  #4  
Antiguo 03-03-2020
igamerpc igamerpc is offline
Miembro
 
Registrado: feb 2020
Posts: 53
Poder: 5
igamerpc Va por buen camino
Cita:
Empezado por engranaje Ver Mensaje
En mi mensaje anterior cometí el error de no comprobar la vista previa y el código delphi no contenría los saltos de línea. El resultado fué que las líneas fueron tan largas que no tenía visible en el navegador el "botón" para editar, así que intenté solucionarlo en este segundo mensaje. Pero al darme cuenta de que la solución era tan sencilla como ampliar la ventana del navegador (bastante, eso es cierto), he podido editarlo.

Este mensaje ahora carece de sentido y solicito si es posible que sea borrado por algún administrador.

Gracias y disculpas.

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.



Y de nada.
Responder Con Cita
  #5  
Antiguo 03-03-2020
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 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
  #6  
Antiguo 04-03-2020
igamerpc igamerpc is offline
Miembro
 
Registrado: feb 2020
Posts: 53
Poder: 5
igamerpc Va por buen camino
Me funciono numero registro añadidos. Muchas gracias por la solucion, ecfisa. Esta forma igual la tuya pero algunos pequeños cambios. Y me funciono bien.
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
  archivo: String;
  cod1  : Cardinal;
  nom: string;
begin
FCountRec:=0;
While Not MOD.Tabla2.Eof do
      Begin
        cod1:=MOD.Tabla2.fieldbyName('CODIGO').Value;
        nom:=MOD.Tabla2.fieldbyName('NOMBRE').Value;
Insertar_Registro_Tabla_1('archivo', cod1, FCountRec, Sender);
        CFG.MOD.Tabla2.Next;
   end;
memo1.lines.add(format('Se insertaron %d registros',[FCountRec]));
end;

procedure TForm1.Insertar_Registro_Tabla_1(NTabla:String; cod1:cardinal; nom:string; var aCont: Integer; Sender: TObject);
begin
   If MOD.Conexion.Connected =False Then
       MOD.Conexion.Connected:=True;
MOD.Tabla1.TableName:=NTabla;
    MOD.Tabla1.Active:=True;
MOD.MyCommand1.SQL.Clear;
    MOD.MyCommand1.sql.Add('INSERT INTO '+NTabla+'(CODIGO,NOMBRE) VALUES(:Codigo,:Nombre)');
    MOD.MyCommand1.ParamByName('CODIGO').Value:=cod1;
    MOD.MyCommand1.ParamByName('NOMBRE').Value:=nom;
Try
    MOD.MyCommand1.Execute;
    Inc(aCont);

   Except

End;
   MOD.Tabla1.Refresh;
end;

Última edición por ecfisa fecha: 04-03-2020 a las 11:37:36. Razón: Etiquetas Delphi
Responder Con Cita
  #7  
Antiguo 04-03-2020
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 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
Me funciono numero registro añadidos. Muchas gracias por la solucion, ecfisa. Esta forma igual la tuya pero algunos pequeños cambios. Y me funciono bien.
...
Me alegra mucho que te funcione !

Saludos
__________________
Daniel Didriksen

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



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Crear arbol mediante registros en una base de datos. Rc96 Varios 2 29-08-2017 10:02:36
Limitar cantidad e registros a crear en una base de datos RedVenom Conexión con bases de datos 25 09-05-2011 21:30:55
Guardar Base datos numeros 2 decimales VRO Varios 9 11-11-2010 00:31:30
Eliminar registros de mi base de datos Elite237 OOP 9 29-07-2007 22:07:11
Una Consulta con registros de dos tablas en Diferentes Base de Datos k_rito Conexión con bases de datos 2 17-05-2007 17:43:55


La franja horaria es GMT +2. Ahora son las 02:35:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi