Fórum Dúvida SQL #59847
01/06/2008
0
Saudações delphianas!!!!
Amigos(as), tenho uma tela onde o usuário digita uma determinada queixa e o sistema faz a busca, mostrando os dados no grid.
Primeiramente, estou utilizando delphi 2006 + dbxpress + sqlserver 2000
A rotina é a seguinte:
procedure TfrmQueixas.PesquisaQueixa(vQtde : integer);
begin
with cdsPesquisaQueixa do
begin
close;
CommandText := ´´;
CommandText := ´ SELECT CF_QUEI_COD, CF_QUEI_NOM, ´ +
´ CF_QUEI_CRI_USU, CF_QUEI_CRI_DAT, ´ +
´ CF_QUEI_UAL_USU, CF_QUEI_UAL_DAT, ´ +
´ CF_QUEI_UAC_USU, CF_QUEI_UAC_DAT ´ +
´ FROM CONF_QUEIXA ´;
// vQtde = 0 - Traz todos os registros
// vQtde = 1 - Traz apenas alguns (condição)
if vQtde = 0 then
CommandText := CommandText + ´ ORDER BY CF_QUEI_NOM´
else
CommandText := CommandText + ´ WHERE CF_QUEI_NOM LIKE ´ + QuotedStr(edtQueixa.Text + ´¬´) +
//´ OR CF_QUEI_NOM LIKE ´ + QuotedStr(´¬´ + ´ ´ + edtQueixa.Text + ´ ´ + ´¬´) +
´ OR CF_QUEI_NOM LIKE ´ + QuotedStr(´¬´ + ´ ´ + edtQueixa.Text + ´¬´) +
´ OR CF_QUEI_NOM LIKE ´ + QuotedStr(´¬´ + edtQueixa.Text) +
´ ORDER BY CF_QUEI_NOM´;
open;
if IsEmpty then
begin
edtQueixa.SetFocus;
close;
Application.MessageBox(´Queixa não localizada´, ´Informação´, MB_OK + MB_ICONINFORMATION);
ControlaItensPopup(1); // Desabilita Itens do Poupop
exit;
end
else
begin
btnSelecionar.Enabled := true;
ControlaItensPopup(0); // Habilita Itens do Poupop
end;
end;
end;
Até aí tranquilo. O grande problema está na ordenação, que deve ser feita da seguinte forma:
- ordenar os que começam, por exemplo, por febre; em seguida, por contenham febre, e por último, q terminam por febre.
- Ao invés disso
aa febre
aa febre bbbb
febre
c febre
febre aaaaaa
- Isso
febre
febre aaaaaa
aa febre bbbb
aa febre
c febre
Parece complicado, mas preciso fazer ordenar os dados dessa maneira, e estou encontrando dificuldade para isso.
Fico no aguardo, e qualquer sugestão será bem-vinda.
[]´s
Amigos(as), tenho uma tela onde o usuário digita uma determinada queixa e o sistema faz a busca, mostrando os dados no grid.
Primeiramente, estou utilizando delphi 2006 + dbxpress + sqlserver 2000
A rotina é a seguinte:
procedure TfrmQueixas.PesquisaQueixa(vQtde : integer);
begin
with cdsPesquisaQueixa do
begin
close;
CommandText := ´´;
CommandText := ´ SELECT CF_QUEI_COD, CF_QUEI_NOM, ´ +
´ CF_QUEI_CRI_USU, CF_QUEI_CRI_DAT, ´ +
´ CF_QUEI_UAL_USU, CF_QUEI_UAL_DAT, ´ +
´ CF_QUEI_UAC_USU, CF_QUEI_UAC_DAT ´ +
´ FROM CONF_QUEIXA ´;
// vQtde = 0 - Traz todos os registros
// vQtde = 1 - Traz apenas alguns (condição)
if vQtde = 0 then
CommandText := CommandText + ´ ORDER BY CF_QUEI_NOM´
else
CommandText := CommandText + ´ WHERE CF_QUEI_NOM LIKE ´ + QuotedStr(edtQueixa.Text + ´¬´) +
//´ OR CF_QUEI_NOM LIKE ´ + QuotedStr(´¬´ + ´ ´ + edtQueixa.Text + ´ ´ + ´¬´) +
´ OR CF_QUEI_NOM LIKE ´ + QuotedStr(´¬´ + ´ ´ + edtQueixa.Text + ´¬´) +
´ OR CF_QUEI_NOM LIKE ´ + QuotedStr(´¬´ + edtQueixa.Text) +
´ ORDER BY CF_QUEI_NOM´;
open;
if IsEmpty then
begin
edtQueixa.SetFocus;
close;
Application.MessageBox(´Queixa não localizada´, ´Informação´, MB_OK + MB_ICONINFORMATION);
ControlaItensPopup(1); // Desabilita Itens do Poupop
exit;
end
else
begin
btnSelecionar.Enabled := true;
ControlaItensPopup(0); // Habilita Itens do Poupop
end;
end;
end;
Até aí tranquilo. O grande problema está na ordenação, que deve ser feita da seguinte forma:
- ordenar os que começam, por exemplo, por febre; em seguida, por contenham febre, e por último, q terminam por febre.
- Ao invés disso
aa febre
aa febre bbbb
febre
c febre
febre aaaaaa
- Isso
febre
febre aaaaaa
aa febre bbbb
aa febre
c febre
Parece complicado, mas preciso fazer ordenar os dados dessa maneira, e estou encontrando dificuldade para isso.
Fico no aguardo, e qualquer sugestão será bem-vinda.
[]´s
Roger1976
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)