Fórum Problemas com comando SQL #434498
12/02/2013
0
Porque será que ocorre isso??
Utilizo Firebird 2.0 com Delphi 7, os componente que estou utilizando são SQLQuery, DataSetProvider e ClientDataSet.
O comando é esse:
cdsProduto.Close;
cdsProduto.CommandText := 'select * from ' +
'(select P.CDREDUZIDO, P.CDPRODUTO, P.DSPRODUTO, ' +
'(case when P.DSPRODUTO like :CAMPO||''%'' ' +
'then 0 else 1 end)||P.DSPRODUTO as DSPRODUTO_TEMPORARIO '+
'from PRODUTO P ' +
'where P.DSPRODUTO like ''%''||:CAMPO||''%'') ' +
'order by DSPRODUTO_TEMPORARIO';
É uma consulta por descrição, ordenando pela forma da sequencia de letras digitadas.
Se alguém puder ajudar, ficarei muito agradecido.
Cristiano
Curtir tópico
+ 0Posts
13/02/2013
Joel Rodrigues
Gostei + 0
13/02/2013
Cristiano
Gostei + 0
13/02/2013
Douglas
e se você colocar o modo de ordenação.
order by DSPRODUTO_TEMPORARIO ASC ou order by DSPRODUTO_TEMPORARIO DESC
Um deles, pois não sei por qual ordem você quer.
Gostei + 0
13/02/2013
Douglas
Outra coisa toda vez que se for efetuar uma
pesquisa limpe o seu ClientDataSet(cdsProduto.EmptyDataSet) antes,
Pode ser por isto que ele traga o resultado vazio.
Gostei + 0
14/02/2013
Perivaldo Martins
Levando em conta que Existe (SQLConnection + SQLQuery + DataSetProvider + ClientDataSet + DataSource)
SQLQuery1.Close;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('SELECT * FROM (SELECT P.CDREDUZIDO, P.CDPRODUTO, P.DSPRODUTO, ');
SQLQuery1.SQL.Add('(case when P.DSPRODUTO LIKE :CAMPO||"%"');
SQLQuery1.SQL.Add(' then 0 else 1 end) ||P.DSPRODUTO as DSPRODUTO_TEMPORARIO FROM PRODUTO P');
SLQQuery1.SQL.Add(' WHERE P.DSPRODUTO LIKE "%"||:CAMPO||"%"');
SQLQuery1.SQL.Add(' Order by DSPRODUTO_TEMPORARIO');
SQLQuery1.ExecSQL;
cdsProduto.Close;
cdsProduto.Open;
Boa sorte e bons códigos!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)