Paulo Nobre Postado Outubro 23, 2004 Denunciar Share Postado Outubro 23, 2004 Tenho um dbgrid1 com dois campos aparecendo ; nome e telefone.Os campos vão sendo mostrados de acordo com a ordem de cadastramento.Como poderia fazer para que os nomes fossem mostrados em ordem alfabética?ObrigadoPaulo Nobre Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Outubro 23, 2004 Denunciar Share Postado Outubro 23, 2004 Você pode fazer isso por SQL, pelo objeto Query (DBTables). Bastaria preencher a propriedade SQL com o seguinte:SELECT * FROM tabela ORDER BY campo;Abraços,Graymalkin Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Outubro 23, 2004 Autor Denunciar Share Postado Outubro 23, 2004 Obrigado Graymalkin,mas teria como fazer isto sem usar SQL.Meu projeto usa um componente SQLMenTable apenas, que faz uso de um arquivo dat.Paulo Nobre Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Outubro 23, 2004 Denunciar Share Postado Outubro 23, 2004 Aí eu não sei. Mas onde está esse componente? Ele é padrão do Delphi e esse é realmente o nome dele? Não achei aqui (uso o Delphi 7).Abraços,Graymalkin Link para o comentário Compartilhar em outros sites More sharing options...
0 s3c Postado Outubro 23, 2004 Denunciar Share Postado Outubro 23, 2004 Olá, se o DBGrid não for atualizável, você pode trocá-lo pelo ListView que possui o método AlphaSort onde é gerado o evento onCompare e neste evento você escreve a classificação que quiser para cada coluna. Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Outubro 23, 2004 Autor Denunciar Share Postado Outubro 23, 2004 Graymalkin,O componente SQLMemTable e SQLMemQuery não vem junto com o Delphi. São componentes avulsos que simulam um banco de dados enquanto o programa está aberto. Ao desligar você descarrega num arquivo dat os dados armazenados. Quem me recomemdou estes componentes foi o Capablanca, quando disse que gostaria de criar um programa para catalogar aniversariantes sem o uso de banco de dados. Desta forma não há necessidade de BDE, outras coisas mais e portanto o programa fica bem pequeno. Um exe e um dat.Claro que não se trata de nenhuma aplicação robusta. Desta forma não sei se um arquivo dat iria aguentar.s3c,Este componente(SQLMemTable) é meio fresco, na verdade não é ele e sim o dat. Por exemplo, este programa simples que fiz para minha filha cadastrar contatos tem um campo chamado email. Havia colocado distraidamente size 20 para este campo. Pouco, pois algumas pessoas possuem é claro um email maior. Quando fui consertar e tentar recompilar o dat não muda pois foi criado com o campo de 20, ou seja, como minha filha já havia cadastrado 16 pessoas tive que jogar este dat fora e recriar um novo. Aí sim o campo passou a funcionar com 30. Portanto não estou querendo alterar nada que possa ter que mudar o dat ou o visual do programa.Pelo que entendi de você, com o DBGrid não é possível fazer nada, então deixarei este programa assim mesmo sem ordem alfabética.Obrigado a vocês, Graymalkim e s3c, sempre ajudando muuuiiitoooo.AbraçosPaulo Nobre Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Outubro 23, 2004 Denunciar Share Postado Outubro 23, 2004 Compreendo. Então, já que ele obedece a ordem de entrada, você poderia criar uma rotina que ordenasse os dados gravando-os em outro .dat. Depois seria só substituir o .dat atual pelo .dat em ordem.Abraços,Graymalkin Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Outubro 23, 2004 Autor Denunciar Share Postado Outubro 23, 2004 Graymalkin, sinceramente, acho que não sei como fazer isto.AbraçosPaulo Nobre Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Outubro 23, 2004 Denunciar Share Postado Outubro 23, 2004 Bom, não sei como é a utilização desse componente, mas se ele simula uma tabela de um banco de dados creio que seja possível "avançar" os registros até que seja o final da tabela, certo? Algo como um MoveNext() ou um Skip(). Acredito também que seja possível obter o valor de um determinado campo (o campo "nome", por exemplo) do registro atualmente selecionado. Com isso, seria possível preencher uma matriz ou um vetor (com um registro) e ordená-la(o). Não sei o Delphi tem alguma função que ordene uma matriz ou vetor, mas isso não é problema (pode-se usar o método bolha de ordenação que é o mais intuitivo e simples). Aliás, pensando aqui... nem precisaria disso tudo. Se você pode manipular os registros (editá-los), basta fazer uma ordenação (bolha ou qualquer outra) em relação aos mesmos e no final você teria a tabela ordenada. Sacou? Abraços,Graymalkin Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Outubro 23, 2004 Autor Denunciar Share Postado Outubro 23, 2004 Valeu Graymalkin.AbraçosPaulo Nobre Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Outubro 23, 2004 Autor Denunciar Share Postado Outubro 23, 2004 Resolvi o problema da seguinte maneira:Criei um índice pelo campo nome.O componente SQLMemTable tem uma propriedade chamada indexName.Coloquei esta propriedade para usar o índice pelo campo nome e o DBGrid, como está associado ao SQLMemTable, passou a exibir a lista em ordem alfabética.Obrigado a todos, que como sempre estão dispostos a ajudar.Abraços Paulo Nobre Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Paulo Nobre
Tenho um dbgrid1 com dois campos aparecendo ; nome e telefone.
Os campos vão sendo mostrados de acordo com a ordem de cadastramento.
Como poderia fazer para que os nomes fossem mostrados em ordem alfabética?
Obrigado
Paulo Nobre
Link para o comentário
Compartilhar em outros sites
10 respostass a esta questão
Posts Recomendados