Ver Mensaje Individual
  #9  
Antiguo 23-04-2023
Garada Garada is offline
Miembro
 
Registrado: jul 2004
Posts: 66
Reputación: 20
Garada Va por buen camino
Aquí tienes el código más desarrollado, usa el debug y comprueba las variables por si hay algo que está como se esperaba.

Código Delphi [-]
procedure TFORMINGRESO.multiselect;
 var
  X: Integer;
  sClaves: string; // Variable para guardar las claves de los registros seleccionados
begin
  if DBGINGRESO.SelectedRows.Count = 0 then
  begin
    MessageBox (Handle, ' DEBE SELECCION AL MENOS 1 FILA PARA ELIMINAR ', ' SISTEMA CROSSROASD ', MB_OK);
    Exit;
  end
  else
  begin
     sClaves := ''; // Inicializas la variable
     for X := 0 to DBGINGRESO.SelectedRows.Count -1 do
     with MDBRIONES.FDQBUS_DET_ING Do
     Begin
        DBGINGRESO.DataSource.DataSet.GotoBookmark(TBookmark(DBGINGRESO.SelectedRows.Items[X]));
        sClaves :=sClaves + ',' + DBGINGRESO.datasource.dataset.fieldbyname('id_ing').AsString; // Vas asignando las claves
     end;

     Delete(sClaves, 1, 1); // Se elimina la ',' inicial que sobra
     // Debes tener en sClave algo como '2,6,34,245'

     SQL.Clear;
     SQL.Add ('SELECT I.*, E. nom_esp, T. nom_tip FROM det_ingreso I LEFT JOIN especie E ON E.id_esp = id_esp_deting LEFT JOIN tipo T ON T.id_tip = id_tip_deting');
     SQL.Add ('WHERE id_ing_deting IN (' + sClaves + ') ORDER BY LENGTH(cod_deting)ASC'); // Cambias el WHERE
     // en el SQL.Text debes tener algo como 'SELECT I.*, E. nom_esp, T. nom_tip 
     // FROM det_ingreso I LEFT JOIN especie E ON E.id_esp = id_esp_deting LEFT JOIN tipo T ON T.id_tip = id_tip_deting 
     // WHERE id_ing_deting IN (2,6,34,245) ORDER BY LENGTH(cod_deting)ASC'

     Open();
     DBGDET_INGRESO.DataSource := MDBRIONES.DSBUS_DET_ING;
  end;
end;
Responder Con Cita