Ver Mensaje Individual
  #12  
Antiguo 04-08-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Un detallito: No puedes usar el operador "and" al unir los where, porque ningún registro cumple todas las condiciones.

Te aconsejo recorrer selected rows y que el sql quede así:

Código SQL [-]
select * from mi tabla 
where idCliente in (1, 22, 3, 44, 55)

La forma de obtenerlo desde el grid es muy parecido a lo dicho por coso:
Código Delphi [-]
var ids:string;
begin
ids := EmptyStr;
for i := 0 to DBGrid1.SelectedRows.Count -1 do
begin
  GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
  ids := ids + dbgrid.datasource.dataset.Fieldbyname('idCliente').AsString + ', ';
end;
 delete(ids, length(ids)-1, 1); // borrar ultima coma
 query2.sql.text := 'select * from mi tabla where idCliente in (' + ids + ')';
QuickRep1.DataSet := Query2;

Estoy suponiendo que tu campo clave se llama idCliente y está declarado en la base de datos como entero. Si es un string, debe quedar el sql así:
Código SQL [-]
select * from mi tabla 
where idfactura in ('c00001', 'c00002', 'c00007')
Tip: usa la rutina QuotedStr para entrecomillar cada número de factura.


SAludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 04-08-2008 a las 10:31:05.
Responder Con Cita