amigos,

Estou com um problema na ordenação de uma query, dentro do objeto 
TSQLDataSet, do delphi 2007.

Vejam a minha query que monto dinamicamente.

cSQL := 'Select instituicao.Nome      as NomeInstituicao, ' +
            'Cliente.Nomcliente           as NomeCliente, ' +
            'Unidade.NomeUnidade          as NomeUnidade, ' +
            'Turno.Descricao              as NomeTurno, ' +
            'Serie.Descricao              as NomeSerie, ' +
            'Alunos.ultimaturma           as NomeTurma, ' +
            'Disciplina.Descricao         as NomeDisciplina, ' +
            'Disciplina.DataAplicacao     as DataAplicacao, ' +
            'Disciplina.HorarioAplicacao  as Horario, ' +
            'Alunos.IdentificacaoAluno    as CodigoAluno, ' +
            'Alunos.nome                  as NomeAluno, ' +
            'ProvaAluno.CodInstituicao    as CodigoInstituicao, ' +
            'Prova.CodSerie               as CodigoSerie, ' +
            'ProvaAluno.CodQuestionario   as CodigoQuestionario, ' +
            'ProvaAluno.CodProvaAluno     as CodigoProva ' +
            'from provaaluno, alunos, turno, prova, disciplina, 
serie, instituicao, unidade, Cliente  ' +
            ' where  ' +
                'alunos.codinstituicao      = 
provaaluno.codinstituicao and  ' +
                'alunos.identificacaoaluno  = 
provaaluno.identificacaoaluno and ' +
                'turno.codturno             = alunos.turno and  ' +
                'prova.codprova             = provaaluno.codprova 
and  ' +
                'prova.codinstituicao       = 
provaaluno.codinstituicao and  ' +
                'disciplina.coddisciplina   = prova.coddisciplina 
and ' +
                'serie.codserie             = prova.codserie and ' +
                'instituicao.codinstituicao = 
provaaluno.codinstituicao and ' +
                'unidade.codinstituicao     = alunos.codinstituicao 
and  ' +
                'unidade.codunidade         = alunos.ultimaunidade 
and ' +
                'cliente.codcliente         = 
instituicao.codcliente ' +
                'order by instituicao.Nome, ' +
                'Cliente.Nomcliente, ' +
                'Unidade.NomeUnidade, ' +
                'Alunos.ultimaturma, ' +
                'Alunos.nome, ' +
                'Disciplina.DataAplicacao, ' +
                'Disciplina.HorarioAplicacao, ' +
                'Serie.Descricao, ' +
                'Disciplina.Descricao ';

    sqldtstAlunos.Close;
    clntdtstAlunos.Close;
    sqldtstAlunos.CommandText := cSQL;
    clntdtstAlunos.Open;

o problema que o delphi está ficando doido quando tenta ordenar o 
campo
"Disciplina.DataAplicacao". Este campo no banco SQL, foi criado como 
DateTime. 
A ordenação fica maluca, até antes deste campo DataAplicacao.
Ficou tipo assim: O campo "Alunos.nome", fica fora da ordem, é como 
se o delphi ordenava primeiro a data pra depois ordenar 
o "Alunos.Nome".

Se eu tiro a data do "order by", a ordem geral segue o que eu 
estipulei.

Tentei usar a propriedade sortFieldName.
                sqldtstAlunos.SortFieldNames := 'instituicao.Nome, ' +
                'Cliente.Nomcliente, ' +
                'Unidade.NomeUnidade, ' +
                'Alunos.ultimaturma, ' +
                'Alunos.nome, ' +
                'Disciplina.DataAplicacao, ' +
                'Disciplina.HorarioAplicacao, ' +
                'Serie.Descricao, ' +
                'Disciplina.Descricao ';
A ordem ficou quase certa, sendo os nomes na ordem alfabética , só 
que a data ficou fora entre eles.

Exemplo:
Nome                                 data Aplicação
AAAAAAAAAAAAAA                  30/09/2008
AAAAAAAAAAAAAA                  29/09/2008

Neste exemplo, a data 29/09 deveria vir antes da data 30/09.

Alguem pode me ajudar?

William
Belo Horizonte

Responder a