ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[RESOLVIDO]Ordenando incorretamente erro

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
x7r3m3x
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 7 de Fevereiro de 2014
Mensagens: 192

MensagemEnviada: Qua Out 03, 2018 12:10 am    Assunto: [RESOLVIDO]Ordenando incorretamente erro Responder com Citação

Olá Pessoal,

Eu estou tentando ordenar no Delphi por Cidade e depois por nome, porém essa cidade é chave estrangeira, e o delphi não consegue ordenar corretamente. eu testei para ver se era problema com meu código e coloquei no IBExpert, porém ele ordena normalmente, pela cidade e depois pelo nome. Mesmo se eu colocar para ordenar somente com a cidade não da certo.

Código BD:

Código:

select A.ID_CANDIDATOS, A.FK_IDUSUARIO_CAD, A.FK_IDUSUARIO_EDIT, A.FK_IDCIDADE, A.FK_IDESTADO, A.FK_IDPAIS,
       A.FK_IDSETOR, A.FK_IDNUM_CURSILHO, A.FK_IDRETIROS, B.LOGIN as USUARIO_CAD, C.LOGIN as USUARIO_EDIT,
       D.NOME as CIDADE, E.NOME as ESTADO, F.NOME as PAIS, G.NOME as SETOR, H.NOME as NUM_CURSILHO, I.TEMA as RETIROS,
       A.NOME, A.DATA_NASC, A.OBSERVACAO, A.OP_RESTRICAO_ALIM, A.TIPO_RESTRICAO_ALIM, A.NUM_LOCAL, A.RUA, A.BAIRRO,
       A.CEP, A.TELEFONE, A.EMAIL, A.PAGO, A.VALOR_PAGAR, A.VALOR_PAGO, A.VALOR_INSCRICAO, A.DATA_CADASTRO,
       A.DATA_EDITADO, A.EXCLUIDO, A.IMG
from CANDIDATOS A
left join USUARIO B on (A.FK_IDUSUARIO_CAD = B.ID_USUARIO)
left join USUARIO C on (A.FK_IDUSUARIO_EDIT = C.ID_USUARIO)
left join CIDADE D on (A.FK_IDCIDADE = D.ID_CIDADE)
left join ESTADO E on (A.FK_IDESTADO = E.ID_ESTADO)
left join PAIS F on (A.FK_IDPAIS = F.ID_PAIS)
left join SETOR G on (A.FK_IDSETOR = G.ID_SETOR)
left join NUM_CURSILHO H on (A.FK_IDNUM_CURSILHO = H.ID_NUM_CURSILHO)
left join RETIROS I on (A.FK_IDRETIROS = I.ID_RETIROS)
order by D.NOME, A.NOME


Como está no Delphi, o edtBuscar.text estaria em branco:

Código:

Pesquisa := 'D.NOME' + ' Like ' + QuotedStr(edtBuscar.Text + '%') + ' order by D.NOME, A.NOME'

with TClientDataSet(dtsPesqCandidatos.DataSet) do
    begin
      Close;
      CommandText := 'select A.ID_CANDIDATOS, A.FK_IDUSUARIO_CAD, A.FK_IDUSUARIO_EDIT, A.FK_IDCIDADE, A.FK_IDESTADO, A.FK_IDPAIS, '
                   + 'A.FK_IDSETOR, A.FK_IDNUM_CURSILHO, A.FK_IDRETIROS, B.LOGIN as USUARIO_CAD, C.LOGIN as USUARIO_EDIT, '
                   + 'D.NOME as CIDADE, E.NOME as ESTADO, F.NOME as PAIS, G.NOME as SETOR, H.NOME as NUM_CURSILHO, I.TEMA as RETIROS, '
                   + 'A.NOME, A.DATA_NASC, A.OBSERVACAO, A.OP_RESTRICAO_ALIM, A.TIPO_RESTRICAO_ALIM, A.NUM_LOCAL, A.RUA, A.BAIRRO, '
                   + 'A.CEP, A.TELEFONE, A.EMAIL, A.PAGO, A.VALOR_PAGAR, A.VALOR_PAGO, A.VALOR_INSCRICAO, A.DATA_CADASTRO, '
                   + 'A.DATA_EDITADO, A.EXCLUIDO, A.IMG '
                   + 'from CANDIDATOS A '
                   + 'left join USUARIO B on (A.FK_IDUSUARIO_CAD = B.ID_USUARIO) '
                   + 'left join USUARIO C on (A.FK_IDUSUARIO_EDIT = C.ID_USUARIO) '
                   + 'left join CIDADE D on (A.FK_IDCIDADE = D.ID_CIDADE) '
                   + 'left join ESTADO E on (A.FK_IDESTADO = E.ID_ESTADO) '
                   + 'left join PAIS F on (A.FK_IDPAIS = F.ID_PAIS) '
                   + 'left join SETOR G on (A.FK_IDSETOR = G.ID_SETOR) '
                   + 'left join NUM_CURSILHO H on (A.FK_IDNUM_CURSILHO = H.ID_NUM_CURSILHO) '
                   + 'left join RETIROS I on (A.FK_IDRETIROS = I.ID_RETIROS) '
                   + 'where A.EXCLUIDO = ' + QuotedStr('NAO') + ' AND '
                   + Pesquisa;
      Open;
    end;


Fico no aguardo, desde já agradecido!


Editado pela última vez por x7r3m3x em Sex Out 05, 2018 10:15 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Out 03, 2018 9:27 am    Assunto: Responder com Citação

Bom dia,

As propriedades IndexFieldNames e IndexName do ClientDataSet estão em branco?
Se estiverem e o problema persistir, experimente fazer um teste deixando a opção poRetainServerOrder do DataSetProvider igual a true.

Espero que ajude


Editado pela última vez por imex em Ter Out 03, 2023 2:58 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
x7r3m3x
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 7 de Fevereiro de 2014
Mensagens: 192

MensagemEnviada: Sex Out 05, 2018 10:14 pm    Assunto: Responder com Citação

imex escreveu:
Bom dia,

As propriedades IndexFieldNames e IndexName do ClientDataSet estão em branco?
Se estiverem e o problema persistir, experimente fazer um teste deixando a opção poRetainServerOrder do DataSetProvider igual a true.

Espero que ajude


Olá imex,

Deu certo com a propriedade poRetainServerOrder, muito obrigado!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB