Ir al contenido


Foto

Drag&Drop de una selección múltiple entre dos rejillas.


  • Por favor identifícate para responder
1 respuesta en este tema

#1 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 13 agosto 2013 - 01:16

Buen día/tarde/noche, jóvenes del foro.

Tengo dos TwwDbgrid (InfoPower4000 de WollToWoll Software) y necesito "pasar" de una a otra una serie de registros de una de las rejillas, los cuales se "marcarán" y usando el ratón, arrastrados y depositados en la otra para ser INSERTADAS en la tabla que es representada en ésta rejilla; ésto es debido a que se requiere agilizar la definición de una serie de parámetros.

El código que "recibe" el proceso de "soltar en la segunda rejilla" (que en éste momento sólo acepta UN registro a la vez) lo tengo actualmente así:



delphi
  1. procedure TfrmRubrosSIS.grdReporteDragDrop(Sender, Source: TObject; X, Y: Integer);
  2.  
  3.   function GetGenreLabel(sEtiqueta: string) : string;
  4.   begin
  5.       with TADOQuery.Create(Self) do
  6.       try
  7.         Connection := cnxConexion;
  8.         with SQL do
  9.         begin
  10.             Add('SELECT C_SIS_CLAVE_GENERO');
  11.             Add('FROM  C_SIS_CLAVE');
  12.             Add('WHERE  C_SIS_CLAVE_SIS_ID = '+QuotedStr(sEtiqueta));
  13.         end;
  14.         Open;
  15.         GetGenreLabel := IntToStr(FieldByName('C_SIS_CLAVE_GENERO').AsInteger);
  16.       finally
  17.         Close;
  18.         Free;
  19.       end;
  20.   end;
  21.  
  22. begin
  23.   with TADOQuery.Create(Self) do
  24.   try
  25.       Connection := cnxConexion;
  26.       with SQL do
  27.       begin
  28.         Add('INSERT INTO C_SIS_SS_AUXILIAR');
  29.         Add(          '(C_SIS_CODIGO_MATRIZ');
  30.         Add(          ',C_SIS_CLAVE_SIS');
  31.         Add(          ',C_SIS_GENERO');
  32.         Add(          ',E4_SERVICIO_ID');
  33.         Add(          ',E4_SRV_DETALLE_ID)');
  34.         Add(    'VALUES (');
  35.         Add(            QuotedStr(cmbxReporte.Value));
  36.         Add(        ','+QuotedStr(cmbxEtiquetaSIS.Value));
  37.         Add(        ','+GetGenreLabel(cmbxEtiquetaSIS.Value));
  38.         Add(        ','+QuotedStr(QryServiciosE4_SERVICIO_ID.AsString));
  39.         Add(        ','+IntToStr(QryServiciosE4_SRV_DETALLE_ID.AsInteger));
  40.         Add(          ')');
  41.       end;
  42.       ExecSQL;
  43.   finally
  44.       Free;
  45.   end;
  46.   QryData001.Requery;
  47.   QryServicios.Requery;
  48. end;



Y que deberá prepararse para "recibir" más de un registro a la vez.

¿Alguna idea, código, orientación que me sirva para cumplimentar ésto?
  • 0

#2 TiammatMX

TiammatMX

    Advanced Member

  • Miembros
  • PipPipPip
  • 1.750 mensajes
  • LocationUniverso Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Ciudad de México\Xochimilco\San Gregorio Atlapulco\Home

Escrito 16 agosto 2013 - 04:03

Como recordatorio a mí mismo..., por si lo requiero alguna vez.



delphi
  1. procedure TfrmRubrosSIS.grdReporteDragDrop(Sender, Source: TObject; X, Y: Integer);
  2. var
  3.   iIndicador: Integer;
  4. begin
  5.   with TADOQuery.Create(Self) do
  6.   try
  7.       Connection := cnxConexion;
  8.       with grdServicios, grdServicios.DataSource.DataSet do
  9.       begin
  10.         DisableControls;
  11.         for iIndicador := 0 to SelectedList.Count -1 do
  12.         begin
  13.         GotoBookmark(SelectedList.Items[iIndicador]);
  14.             with SQL do
  15.             begin
  16.               Clear;
  17.               Add('INSERT INTO C_SIS_SS_AUXILIAR');
  18.               Add(          '(C_SIS_CODIGO_MATRIZ');
  19.               Add(          ',C_SIS_CLAVE_SIS');
  20.               Add(          ',C_SIS_GENERO');
  21.               Add(          ',E4_SERVICIO_ID');
  22.               Add(          ',E4_SRV_DETALLE_ID)');
  23.               Add(    'VALUES (');
  24.               Add(            QuotedStr(cmbxReporte.Value));
  25.               Add(        ','+QuotedStr(cmbxEtiquetaSIS.Value));
  26.               Add(        ','+GetGenreLabel(cmbxEtiquetaSIS.Value));
  27.               Add(        ','+QuotedStr(QryServiciosE4_SERVICIO_ID.AsString));
  28.               Add(        ','+IntToStr(QryServiciosE4_SRV_DETALLE_ID.AsInteger));
  29.               Add(          ')');
  30.             end;
  31.             ExecSQL;
  32.         end;
  33.         UnselectAll;
  34.         EnableControls;
  35.       end;
  36.   finally
  37.       Free;
  38.   end;
  39.   QryData001.Requery;
  40.   QryServicios.Requery;
  41. end;


  • 0




IP.Board spam blocked by CleanTalk.