Query - selecionado do DBGrid

Delphi

12/09/2003

Tenho uma select assim:
SELECT *
FROM DCCAD X, DCREG A, DCOLHO B, DCCAB C, DCESTCIV D,
DCESCO E, DCNICAD F, DCPELE G, DCCAT I

01 - WHERE X.CAREGIAO = A.RECOD
02 - AND X.CAOLHOS = B.OLCOD
03 - AND X.CACABELO = C.CACOD
04 - AND X.CAESTCIV = D.ECCOD
05 - AND X.CAESCOLA = E.ESCOD
06 - AND X.CANIVEL = F.NICOD
07 - AND X.CAPELE = G.PECOD
08 - AND X.CACATEG = I.CTCOD
09 - AND X.CACOD BETWEEN :CodIni AND :Codfim
10 - AND X.CADTNAS BETWEEN :IdadeIni AND :IdadeFim
11 - AND X.CASEXO LIKE :Sexo
12 - AND X.CATEMCAR LIKE :Veic
13 - AND X.CARESTRU LIKE :Rest
14 - AND X.CAALTURA BETWEEN :AltIni AND :AltFim
15 - AND X.CAPESO BETWEEN :PesoIni AND :PesoFim
16 - AND X.CAPE BETWEEN :PeIni AND :PeFim
17 - AND X.CAPELE BETWEEN :Pele1 AND :Pele2
18 - AND X.CAOLHOS BETWEEN :Olho1 AND :Olho2
19 - AND X.CACABELO BETWEEN :Cab1 AND :Cab2
20 - AND X.CAREGIAO BETWEEN :Reg1 AND :Reg2
21 - AND X.CAESCOLA BETWEEN :Esc1 AND :Esc2
22 - AND X.CANIVEL BETWEEN :Niv1 AND :Niv2
23 - AND X.CAESTCIV BETWEEN :Eciv1 AND :Eciv2
24 - AND X.CACATEG IN (:Cat1,:Cat2,:Cat3)

Na linha 24 preciso pegar os valores que estiverem selecionados em um dbgrid multiselect, mas só estou conseguindo fazer desse jeito aí o usuário terá que escolher sempre 3.
Como faço para o usuário selecionar qtos quiser?

Obrigada[/u]


Debora

Debora

Curtidas 0

Respostas

Debora

Debora

12/09/2003

AND Campo IN (:Sel1,:Sel2,:Sel3)

Os parâmentros Sel1, Sel2, Sel3, são de um dgrid multiselect, desse jeito o usuário só poderá escolher 3 registros.
Como posso fazer minha select ter vários parâmetros do dbgrid multiselect?

Obrigada


GOSTEI 0
Joilson_gouveia

Joilson_gouveia

12/09/2003

Use apenas um :SEL1, e em tempo de execução prepare esse parâmetro com as linhas selecionadas:

ParamSel1 := ´´;
wwDBGrid1.DataSource.DataSet.DisableControls;
wwDBGrid1.DataSource.DataSet.First;
while not wwDBGrid1.DataSource.DataSet.Eof do
begin
if wwDBGrid1.IsSelectedRecord then
begin
if ParamSel1 = ´´ then
ParamSel1 := wwDBGrid1.DataSource.DataSet.FieldByName(´CD_USU_ADM´).AsString := ChaveGerente
else
ParamSel1 := ParamSel1+´,´+wwDBGrid1.DataSource.DataSet.FieldByName(´CD_USU_ADM´).AsString := ChaveGerente
end;
wwDBGrid1.DataSource.DataSet.Next;
end;
wwDBGrid1.DataSource.DataSet.EnableControls;
Query1.ParamByName(Sel1).AsString := ParamSel1;


GOSTEI 0
POSTAR