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
Numeros registros nuevos en la base de datos

Pasar a otra tabla, poner mensaje los numeros registros insertado nuevo.
El codigo recordcount es correcto?
Responder Con Cita
  #2  
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.

Perdón pero no entiendo tu consulta, por favor expláyate un poco mas explicando la situación. Es decir, que es lo que debes pasar a otra tabla, que mensajes deseas poner. etc.

Por último, RecordCount no es un código, es una propiedad de la clase TDataSet.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
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: 18.272
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
Pasar a otra tabla, poner mensaje los numeros registros insertado nuevo.
El codigo recordcount es correcto?

Hola y bienvenido a los foros.
Al igual que le pasa a [ecfisa] yo tampoco te entiendo.


Sea porque tienes problemas con el idioma o porque eres nuevo, en cualquier caso intenta explicar mejor lo que necesitas y da detalles como la Base de Datos a la que te estás refiriendo.
Por último y lo más importante, intenta ser concreto en la pregunta.
De otra forma es imposible ayudarte.
__________________
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
  #4  
Antiguo 03-03-2020
igamerpc igamerpc is offline
Miembro
 
Registrado: feb 2020
Posts: 53
Poder: 5
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
  #5  
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: 18.272
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
  #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: 19
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
  #7  
Antiguo 03-03-2020
igamerpc igamerpc is offline
Miembro
 
Registrado: feb 2020
Posts: 53
Poder: 5
igamerpc Va por buen camino
Vale voy a probar. Muchas gracias. Eso lo que buscaba solucion.
Responder Con Cita
  #8  
Antiguo 03-03-2020
igamerpc igamerpc is offline
Miembro
 
Registrado: feb 2020
Posts: 53
Poder: 5
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
  #9  
Antiguo 03-03-2020
igamerpc igamerpc is offline
Miembro
 
Registrado: feb 2020
Posts: 53
Poder: 5
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
  #10  
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: 19
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
  #11  
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
  #12  
Antiguo 03-03-2020
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 13
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
  #13  
Antiguo 03-03-2020
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 13
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
  #14  
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
  #15  
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
  #16  
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
  #17  
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 14:51:56.


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