Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Insertar datos en tabla recorriendo un dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=84696)

Iniciante22 23-11-2013 20:31:37

Insertar datos en tabla recorriendo un dbgrid
 
Hola a todos soy nueva en club delphi y es la primera ves que consulto de antemano disculpas por si hago cosas que no esten correctas...
estoy trabajando con delphi XE y con el motor de base de datos firerbird....
mi consulta es la siguiente estoy desarrollando el modulo de crear usuarios para un sistema de control de inventario...y me han solicitado que un usuario tenga varios perfiles el cual comprende asociar el departamento mas el area = perfil...ya tengo eso mi problema es que no se como ingresar esa relacion que la hago en un dbgrid a la tabla...osea tengo que recorrer todas las lineas del dbgri e irlas insertando en la tabla pero no se como hacerlo...
mi codigo que utilizo para insertar los datos en la base es:
with dmConecta.qAreaporRol do
begin
Close;
sql.Clear;
sql.Add('insert into AREAPORROL (IDAREAROL, ID_PERFILES, ID_ROLES, ID_USUARIO, ID_DEPTO)');
sql.Add('values (:IDAREAROL, :pID_PERFILES,:pID_ROLES, :pID_USUARIO, :pID_DEPTO)');
parambyname('IDAREAROL').AsInteger := CapturaAreaRol;
parambyname('pID_PERFILES').AsInteger := Id_AgregaPerfil;
parambyname('pID_ROLES').AsInteger := CapturaId_rol;
parambyname('pID_USUARIO').AsInteger := capId_tUsuarios;
parambyname('pID_DEPTO').AsInteger := Captura_idDeptos;
execsql;
end;


de Antemano gracias porque su foro me ha halldado demasiado...

ecfisa 24-11-2013 09:58:10

Hola Iniciante22, bienvenida a Club Delphi :)

Como es costumbre cuando se inician te invitamos a que leas nuestra guía de estilo.

También te aconsejo que cuando incluyas código en tus mensaje utilices TAG's para darle más legibilidad:



Cita:

Empezado por Iniciante22 (Mensaje 470021)
...o sea tengo que recorrer todas las lineas del dbgri e irlas insertando en la tabla pero no se como hacerlo...
mi codigo que utilizo para insertar los datos en la base es:
with dmConecta.qAreaporRol do
begin
Close;
sql.Clear;
sql.Add('insert into AREAPORROL (IDAREAROL, ID_PERFILES, ID_ROLES, ID_USUARIO, ID_DEPTO)');
sql.Add('values (:IDAREAROL, :pID_PERFILES,:pID_ROLES, :pID_USUARIO, :pID_DEPTO)');
parambyname('IDAREAROL').AsInteger := CapturaAreaRol;
parambyname('pID_PERFILES').AsInteger := Id_AgregaPerfil;
parambyname('pID_ROLES').AsInteger := CapturaId_rol;
parambyname('pID_USUARIO').AsInteger := capId_tUsuarios;
parambyname('pID_DEPTO').AsInteger := Captura_idDeptos;
execsql;
end;
...

Podrías hacer:
Código Delphi [-]
...
begin
  dmConecta.qAreaporRol.Close;
  dmConecta.qAreaporRol.SQL.Clear;
  dmConecta.qAreaporRol.SQL.Add('INSERT INTO AREAPORROL (IDAREAROL, ID_PERFILES, ID_ROLES, ID_USUARIO, ID_DEPTO)');
  dmConecta.qAreaporRol.SQL.Add('VALUES (:IDAREAROL, :ID_PERFILES, :ID_ROLES, :ID_USUARIO, :ID_DEPTO)');
  dmConecta.qAreaporRol.Prepare;
  with DBGrid1.DataSource.DataSet do
  begin
    DisableControls;
    try
      First;
      while not Eof do
      begin
        dmConecta.qAreaporRol.ParamByName(':IDAREAROL').Value  := FieldByName('IDAREAROL').Value;
        dmConecta.qAreaporRol.ParamByName(':ID_PERFILES').Value:= FieldByName('ID_PERFILES').Value;
        dmConecta.qAreaporRol.ParamByName(':ID_ROLES').Value   := FieldByName('ID_ROLES').Value;
        dmConecta.qAreaporRol.ParamByName(':ID_USUARIO').Value := FieldByName('ID_USUARIO').Value;
        dmConecta.qAreaporRol.ParamByName(':ID_DEPTO').Value   := FieldByName('ID_DEPTO').Value;
        dmConecta.qAreaporRol.ExecSQL;
        Next;
      end;
    finally
      EnableControls;
    end;
  end;
end;

Saludos :)

AzidRain 26-11-2013 02:46:37

Como ya te pusieron en el ejemplo lo que se recorre es el dataset al que está ligado el dbgrid. El dbgrid no es mas que la representación visual de los datos pero no los contiene, eso lo tiene el dataset. La manera correcta de manipular datos es usando directamente los datasets, todo los controls asociados a él se actualizarán para reflejar cualquier cambio.


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

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