Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Multiseleccion en DGBRID (https://www.clubdelphi.com/foros/showthread.php?t=95466)

kainchu3102 18-11-2021 20:54:10

Multiseleccion en DGBRID
 
Buenas tardes Gente...como siempre agradezco a todos los que se detienen a leer la consulta y aportan por que de eso de tra ayudarnos entre todos, muchas gracias desde ya mi consulta es:

Multiseleccion de filas en un dbgrid y luego insertar en un tabla.
FDTturnos = es la tabla que quiere seleccion
FDTresultados = es la tabla donde quiere insertar los datos dni, nombre, apellido

teniendo en cuenta que en ese dbgrid uso un fdquery

por favor si alguien tendria un codigo para ir probando por la verdad estoy mareado. muchas gracias amigos


.

ecfisa 18-11-2021 22:26:46

Hola.

Un código de ejemplo:
Código Delphi [-]
// Activar multiselección en el DBGrid
procedure TForm1.FormCreate(Sender: TObject);
begin
  DBGrid1.Options := DBGrid1.Options + [dgMultiSelect];
end;

// Insertar filas seleccionadas del DBGrid en la tabla DESTINO
procedure InsertSelected(grd: TDBGrid; des: TFDQuery);
var
  i: Integer;
begin
  if grd.SelectedRows.Count = 0 then Exit;
  for i := 0 to grd.SelectedRows.Count-1 do
  begin
    grd.DataSource.DataSet.GotoBookmark(TBookmark(grd.SelectedRows.Items[i]));
    des.SQL.Clear;
    des.SQL.Add('INSERT INTO DESTINO (NAME, CAPITAL)');
    des.SQL.Add('VALUES(:NAME, :CAPITAL)');
    des.ParamByName('NAME').Value    := grd.DataSource.DataSet.FieldByName('NAME').Value;
    des.ParamByName('CAPITAL').Value := grd.DataSource.DataSet.FieldByName('CAPITAL').Value;
    des.ExecSQL;
  end;
end;

// Ejemplo de llamada
procedure TForm1.btnInsertarClick(Sender: TObject);
begin
  InsertSelected(DBGrid1, FDQueryDestino);
end;

Saludos :)

kainchu3102 20-11-2021 20:06:44

Muchas gracias ecfisa
 
Me sirvio de mucho tu codigo solo lo modifique un poco,y me oriento bastante. lo dejo para que alguien le sirva.
procedure TFORMSELECT1.BitBtn4Click(Sender: TObject);
var
i: Integer;

begin
if DBGSELECT1.SelectedRows.Count = 0 then
begin
Exit;
end
else
begin
for i := 0 to DBGSELECT1.SelectedRows.Count-1 do
begin
DBGSELECT1.DataSource.DataSet.GotoBookmark(TBookmark(DBGSELECT1.SelectedRows.Items[i]));
DataModule1.FDQINS_RES2.SQL.Clear;
DataModule1.FDQINS_RES2.SQL.Add('INSERT INTO resultados(id_tur_res, fec_res)');
DataModule1.FDQINS_RES2.SQL.Add('VALUES(:ID_TUR_RES, :FEC_RES)');
DataModule1.FDQINS_RES2.ParamByName('ID_TUR_RES').Value := DBGSELECT1.DataSource.DataSet.FieldByName('id_tur').Value;
DataModule1.FDQINS_RES2.ParamByName('FEC_RES').Value := DBGSELECT1.DataSource.DataSet.FieldByName('fec_tur').Value;
DataModule1.FDQINS_RES2.ExecSQL;
end;
end;

end;

kainchu3102 20-11-2021 20:09:46

Nueva consulta
 
Como podria hacer para que me encuentro un registro que ya e pasado a la otra tabla, y digo que hay un registro seleccionado que ya se encuentra que no se puede realizar el procedimiento: muchas gracias desde ya.

Casimiro Notevi 20-11-2021 23:34:16

Cita:

Empezado por kainchu3102 (Mensaje 544081)
Me sirvio de mucho tu codigo solo lo modifique un poco,y me oriento bastante. lo dejo para que alguien le sirva.
procedure TFORMSELECT1.BitBtn4Click(Sender: TObject);
var
i: Integer;

begin
if DBGSELECT1.SelectedRows.Count = 0 then
begin
Exit;
end
else
begin
for i := 0 to DBGSELECT1.SelectedRows.Count-1 do
begin
DBGSELECT1.DataSource.DataSet.GotoBookmark(TBookmark(DBGSELECT1.SelectedRows.Items[i]));
DataModule1.FDQINS_RES2.SQL.Clear;
DataModule1.FDQINS_RES2.SQL.Add('INSERT INTO resultados(id_tur_res, fec_res)');
DataModule1.FDQINS_RES2.SQL.Add('VALUES(:ID_TUR_RES, :FEC_RES)');
DataModule1.FDQINS_RES2.ParamByName('ID_TUR_RES').Value := DBGSELECT1.DataSource.DataSet.FieldByName('id_tur').Value;
DataModule1.FDQINS_RES2.ParamByName('FEC_RES').Value := DBGSELECT1.DataSource.DataSet.FieldByName('fec_tur').Value;
DataModule1.FDQINS_RES2.ExecSQL;
end;
end;

end;


No olvides usar las etiquetas para código:



Código Delphi [-]

procedure TFORMSELECT1.BitBtn4Click(Sender: TObject);
  var
  i: Integer;

begin
  if DBGSELECT1.SelectedRows.Count = 0 then
  begin
   Exit;
  end
  else
  begin
   for i := 0 to DBGSELECT1.SelectedRows.Count-1 do
   begin
     DBGSELECT1.DataSource.DataSet.GotoBookmark(TBookmark(DBGSELECT1.SelectedRows.Items[i]));
     DataModule1.FDQINS_RES2.SQL.Clear;
     DataModule1.FDQINS_RES2.SQL.Add('INSERT INTO resultados(id_tur_res, fec_res)');
     DataModule1.FDQINS_RES2.SQL.Add('VALUES(:ID_TUR_RES, :FEC_RES)');
     DataModule1.FDQINS_RES2.ParamByName('ID_TUR_RES').Value    := DBGSELECT1.DataSource.DataSet.FieldByName('id_tur').Value;
     DataModule1.FDQINS_RES2.ParamByName('FEC_RES').Value := DBGSELECT1.DataSource.DataSet.FieldByName('fec_tur').Value;
     DataModule1.FDQINS_RES2.ExecSQL;
   end;
  end;
end;

Casimiro Notevi 20-11-2021 23:35:03

Cita:

Empezado por kainchu3102 (Mensaje 544082)
Como podria hacer para que me encuentro un registro que ya e pasado a la otra tabla, y digo que hay un registro seleccionado que ya se encuentra que no se puede realizar el procedimiento: muchas gracias desde ya.

Preguntas distintas en hilos distintos, no olvides nuestra guía de estilo, gracias.


La franja horaria es GMT +2. Ahora son las 21:23:37.

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