COMO AJUSTAR CLASSIFICACAO VIA OBJETO PRINTER?

XYKOVIEIRA 25/06/2011 22:40:37
#377751

Estou [ô]apanhando[ô] para gerar um relatório, gerado pelo objeto Printer, numa ordem que preciso seja
por ordem de clientes e por título do filme emprestado. No meu sistema, quando o usuário clica no menu
<Impressão de Movimentação de Clientes>, a rotina de impressão é executada, listando todos os dados
que estão na tabela <Transações>, tabela esta indexada pelo nome dos clientes. Todavia, embora os
clientes venham em ordem alfabética, os filmes a eles associados vêm fora de ordem alfabética....
Exemplo:
Cliente Filme Retirado Data
Antonio Graciano A batalha de Argel 23/4/2009
Antonio Graciano Os Inconfidentes 1/3/2009
Antonio Graciano Indiana Jones 17/3/2009

Como a tabela é ordenada ao ser impressa:
[ô]RS.Index = [Ô]CodCliente[Ô] [ô]Organiza o relatório por nome de cliente.

Criei, paralelamente, uma rotina SQL, antes da impressão, que deveria ordenar a listagem:
[ô]DIM MeuRelatorio as String
[ô]MeuRelatorio = [Ô]Select * From Transações Order by NomeCli asc, NomeFilme asc[Ô]
[ô]Data1.RecordSource = MeuRelatorio
[ô]Data1.Refresh

Mesmo cancelando a linha do index, a instrução SQL acima não está organizando o relatório...

A plataforma é VB6. Alguém poderia apontar onde está a minha falha? Agradeço se algum dos
luminares que frequentam este forum puder ajudar.

HIDDEN 25/06/2011 23:36:53
#377754
Citação:

[ô]MeuRelatorio = [Ô]Select * From Transações Order by NomeCli asc, NomeFilme asc[Ô]



Na seção de código que você apresentou, não consegui enxergar falha. Só para tirar uma dúvida, você armazena o nome ou o código do cliente na tabela transações?
XYKOVIEIRA 26/06/2011 00:08:29
#377755
O nome do cliente é que é armazenado na tabela, bem como o nome do filme...
Do jeito que está, ao evocar o indice durante a impressão, a relação é impressa por ordem do nome do cliente.
Assim, se ele tiver muitas retiradas (de filmes diferentes), o nome dele segue a ordem alfabética, o mesmo não
acontecendo com os filmes que ele retirou...
Como disse, a rotina SQL não muda nada no relatório. E, se retirar o indice, o relatório é impresso totalmente
sem ordem...
XYKOVIEIRA 27/06/2011 14:35:01
#377856


E aí? Tem alguém ai que possa ajudar?
CHARLESTON10 27/06/2011 17:24:25
#377874
Gera pelo Crystal Report...
Aconselho..
Estava usando relatorios feitos pelo obj printer, mas tive algumas dificuldade em exportar o relatorio
entao mudei parao Crystal report 8.5
não tive problemas
XYKOVIEIRA 27/06/2011 17:34:03
#377875
Hã hã...
Eu sei que no Crystal dá. Mas preferi usar o Printer, já que o relatório é bem simples (aparece o nome do cliente, os filmes que ele retirou, em que data, e em que data devolveu). E sempre tem aquela coisa de [ô]escrever código[ô], o que praticamente não ocorre com o Crystal Reports. Já sei: sou meio da antiga (ainda utilizo o VB5 e 6) he he...
Se alguém conhecer alguma solução (ordenar a tabela por mais de um campo, com ou sem utilização do Index), agradeceria se compartilhasse.
Xyko.
HELENO 27/06/2011 17:56:35
#377876
Sds XYKOVIEIRA!

O índice que vc está usando não serve para o propósito que vc deseja, pois indexa somente o código dos clientes. Vc tem que criar um índice que indexe o código do cliente (convertendo em string) + o nome do filme retirado.

LLAIA 28/06/2011 09:45:28
#377911
A SQL está correta. O que deve tá pegando é alguma configuração do Data que tá reordenando o resultado da SQL. Deve ser o índice mesmo. Faça o que o colega HELENO disse.
KERPLUNK 28/06/2011 09:52:53
#377915
Índices, em bancos de dados voltados a estrutura(como é o caso do access, SQL server e Oracle), não servem para ordenar os dados, como era o caso do Clipper/FoxPro. Eles apenas fazem um cache desses dados para facilitar o trabalho das consultas. Delete o índice e use ordenação SQL normal.
Tópico encerrado , respostas não são mais permitidas