Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-03-2020
igamerpc igamerpc is offline
Miembro
 
Registrado: feb 2020
Posts: 53
Poder: 7
igamerpc Va por buen camino
Disculpa falta explicar mas claro.

T muestro:

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
  archivo: String;
  cod1  : Cardinal;
  nom: string;
begin
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, nom, Sender);
        CFG.MOD.Tabla2.Next;
      end;
end;


procedure TForm1.Insertar_Registro_Tabla_1(NTabla:String; cod1:cardinal; nom:string; 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;
    //memo1.lines.add('Ha insertado nuevo registro');
   

   Except

   End;
   MOD.Tabla1.Refresh;

end;


Donde lo comentario

Código Delphi [-]
//memo1.lines.add('Ha insertado nuevo registro');

el resultado seria muchas lineas insertado insertado...
Quiero saber solo una linea ejemplo "Ha insertado 10 nuevos registros" solo una linea.
Aver si esto explico mejor.


NOTA: Edito tu código para añadir TAG's y que sea más lejible. Te animo también a revisar la guía de estilo si no lo has hecho.

Última edición por Neftali [Germán.Estévez] fecha: 03-03-2020 a las 09:21:27. Razón: Fallo el nombre codigo
Responder Con Cita
  #2  
Antiguo 03-03-2020
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.500
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por ivanmaes Ver Mensaje
el resultado seria muchas lineas insertado insertado...
Quiero saber solo una linea ejemplo "Ha insertado 10 nuevos registros" solo una linea.
Aver si esto explico mejor.

Por lo que he entendido quieres un mensaje final con la líneas insertadas.
El problema es que en tu código el mensaje está dentro del procedimiento Insertar_Registro_Tabla_1.


Coloca ese mensaje al finalizar el While y añade un contador para saber cuantos has insertado.
Algo Así:


Código Delphi [-]
var
  cont:integer;
begin
  cont := 0;
  While Not MOD.Tabla2.Eof do Begin        
     cod1:=MOD.Tabla2.fieldbyName('CODIGO').Value;    
     ...    
     Insertar_Registro_Tabla_1('archivo', cod1, nom, Sender);    
     ...
     Inc(cont);
  end;
  // sacar el mensaje de resumen
  memo1.lines.add(Format('Se han insertado %d registros',[cont]));
...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 03-03-2020
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 22
kuan-yiu Va camino a la fama
Mueve esa escritura al proceso superior.
Cambia esa escritura en 'memo1' dentro de 'Insertar_Registro_Tabla_1' por otra después de la llamada a ese proceso.
Código Delphi [-]
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, nom, Sender);
CFG.MOD.Tabla2.Next;
end;
memo1.lines.add('Número de registros insertados: '+ IntToStr(MOD.Tabla2.RecordCount));
Así suponiendo que insertes la tabla entera.
Responder Con Cita
  #4  
Antiguo 03-03-2020
igamerpc igamerpc is offline
Miembro
 
Registrado: feb 2020
Posts: 53
Poder: 7
igamerpc Va por buen camino
Vale voy a probar. Muchas gracias. Eso lo que buscaba solucion.
Responder Con Cita
  #5  
Antiguo 03-03-2020
igamerpc igamerpc is offline
Miembro
 
Registrado: feb 2020
Posts: 53
Poder: 7
igamerpc Va por buen camino
Las dos mensajes uno de Inc[cont] y el Recordcount me salio resultado numero filas y no de numeros insertados. Hay 100 registros, inserto 10 nuevos y salia 110 registros.
Responder Con Cita
  #6  
Antiguo 03-03-2020
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 22
kuan-yiu Va camino a la fama
Cita:
Empezado por ivanmaes Ver Mensaje
Las dos mensajes uno de Inc[cont] y el Recordcount me salio resultado numero filas y no de numeros insertados. Hay 100 registros, inserto 10 nuevos y salia 110 registros.
Claro, ya dije que Recordcount indica el número total de filas de una tabla.
Si solo recorres tabla2 a partir de un punto entonces debes utilizar un contador tal como indica Neftali e incrementar el contador en el lugar donde se produzca la grabación efectiva para evitar fallos en el recuento. Puedes pasarlo como parámetro por referencia.
Responder Con Cita
  #7  
Antiguo 03-03-2020
igamerpc igamerpc is offline
Miembro
 
Registrado: feb 2020
Posts: 53
Poder: 7
igamerpc Va por buen camino
Eso es verdad. Muchas gracias todo de eso. Lo intento otra forma para conseguir.
Responder Con Cita
  #8  
Antiguo 03-03-2020
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 16
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
  #9  
Antiguo 03-03-2020
igamerpc igamerpc is offline
Miembro
 
Registrado: feb 2020
Posts: 53
Poder: 7
igamerpc Va por buen camino
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
  archivo: String;
  cod1  : Cardinal;
  nom: string;
begin
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, nom, Sender);
        CFG.MOD.Tabla2.Next;
   end;
memo1.lines.add('Número de registros insertados: '+ IntToStr(MOD.Tabla2.RecordCount));  //Me sale numero filas y no numero insertados.
end;


procedure TForm1.Insertar_Registro_Tabla_1(NTabla:String; cod1:cardinal; nom:string; 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;
    
   

   Except

   End;
   MOD.Tabla1.Refresh;

end;



Al igual Inc(cont) tb me sale mismo numero filas.

Última edición por ecfisa fecha: 03-03-2020 a las 12:20:58. Razón: agregar etiquetas
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 06:43:14.


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