Ver Mensaje Individual
  #1  
Antiguo 22-04-2010
Avatar de tgsistemas
tgsistemas tgsistemas is offline
Miembro
 
Registrado: dic 2003
Ubicación: Barcelona
Posts: 149
Reputación: 21
tgsistemas Va por buen camino
Seleccion multiple para montar query

Hola a tod@s,

estoy atascado dándole vueltas a este tema pero no tengo nada claro como solventarlo y que sea ágil, por lo que os pido ayuda nuevamente sobre ideas o procesos que se os ocurran....

En un grid (asociado a un ClientDataSet) tengo un campo temporal "seleccionado" para que el usuario escoja la tienda (1.200 registros) sobre los que lanzar una segunda qry que realiza cálculos, hasta aquí todo bien. El problema lo tengo a la hora de cómo montar el segundo qry en función de las tiendas que se hayan seleccionado.

Hasta ahora estaba pensando en recorrer el cdsTDAS y en función del campo "seleccionado" (boolean) ir guardando el codigo de la tienda para luego montar la qry con las tiendas seleccionadas, algo así :
Código Delphi [-]
procedure TFDlgSlccionMltple.BtnOkClick(Sender: TObject);
var
  Marca : TBookmark;
begin
  isqlselmult := '';
  with cdsTDAS do
  begin
    DisableControls;
    Marca := GetBookMark;
    try
      First;
      while not cdsTDAS.EOF do begin
        if FieldByName('tmp_select').AsBoolean then
        begin
          if (isqlselmult = EmptyStr) then
          begin
            isqlselmult := 'com = ' + cdsTDAS.fieldbyname('com').AsString + ' ';
          end else begin
            isqlselmult := isqlselmult + 'com = ' + cdsTDAS.fieldbyname('com').AsString + ', or ';
          end;
        end;
        Next;
      end;
    finally
      GoToBookmark(Marca);
      FreeBookmark(Marca);
      EnableControls;
    end;
  end;
end;

pero aquí tengo algunas dudas,
1.- se podría montar un query como el siguiente o habría limitaciones ?? :
Código SQL [-]
select campo1, campo2, campo3 from tbPrtesDia where (cdgotda = XXXX, or cdgotda= XXX1, or cdgotda=XXAX,..... )//etc, etc.... pueden ser 1200 cdgo!!!

2.- cómo puedo eliminar el último "', or '" de la qry que voy montando??


3.- no me parece la mejor consulta del mundo pero no se me ocurre o conozco otra forma de optimizarla.

no se si me he explicado correctamente, agradecería vuestra ayuda, se admiten propuestas

Saludos y Gracias
__________________
Toni | blog
Responder Con Cita