GARANTIR DESCONTO

Fórum Query ou Table? #283145

27/05/2005

0

Tenho uma tabela que não conta com a presença de nenhum índice, nenhuma chave primária. Nada. Somente os dados armazenados em sua estrutura.

O sistema ao qual pertence esta tabela, está em um servidor de alta performance e trabalha de maneira super rápida. No entanto, existem ainda 5 computadores que através de uma rede executam este mesmo sistema.

O meu grande problema é na hora de localizar um determinado registro. Demora demais para localizar. Eis o código que estou usando para localizar os registros.

*Localizar por código. (Tabela Paradox e campo do tipo texto).
dm_.Query.Close;
dm_.Query.SQL.Clear;
dm_.Query.SQL.Add(´Select * from Mensalidades WHERE Cod = :iCod´);
dm_.Query.SQL.ParabByName(´iCod´).AsString := Edit1.Text;
dm_.Query.Prepare;
dm_.Query.Open;

*Localizar por nome. (Tabela Paradox e campo do tipo texto).
dm_.Query.Close;
dm_.Query.SQL.Clear;
dm_.Query.SQL.Add(´Select * from Mensalidades WHERE Cliente LIKE´+´´´´+´¬´+Edit2.Text+´¬´+´´´´;
dm_.Query.Open;

Repito, nem o campo Cod nem o campo Cliente são chaves primárias e o arquivo de dados não possui nenhum tipo de índice.

Alguém pode me dizer se estou no caminho certo, usando Query, ou devo mudar para Table.

E como ficaria o código se a consulta for realizada através de um Table?

Certo da atenção de todos, antecipadamente agradeço.


Pro-luck

Pro-luck

Responder

Posts

28/05/2005

Vinicius2k

Aloísio,

Como eu disse [url=http://forum.clubedelphi.net/viewtopic.php?t=52063]neste tópico[/url], se vc não tem índices não faz diferença utilizar TQuery ou TTable. Vc teria vantagem (performance) com TTable se a tabela possuisse índices, como não é o caso, sugiro que vc mantenha seu código baseado na TQuery.

Se vc mudar para TTable, não poderá utilizar os recursos SQL que está utilizando, mais especificamente o LIKE. Isso impossibilitará a pesquisa por qualquer parte do campo como vc necessita. Nenhum método de TTable dá recurso para pesquisa em qualquer parte do campo, apenas o Locate pode ser ajustado para pesquisa parcial pelo início do campo.

Seus índices não precisam ser, necessariamente, UNIQUES, ou seja, não se repetirem, mas como vc tem vários valores iguais, estes índices seriam muito pouco eficientes.

Minha opinião : Se vc não puder criar índices, não mude sua forma de trabalho no paradox, pois não representaria nenhum ganho. Vc está no caminho certo usando TQueries só esta usando o BD errado.

Sei que seu Delphi é o 3, e não me recordo se é possível, mas vc poderia buscar/estudar uma forma de conectar sua aplicação a um SGBD free como o IB 6 ou Firebird.

Vc pode tentar um update da BDE -- http://info.borland.com/devsupport/bde/ -- caso a sua versão não suporte a conexão com estes SGBDs, [b:fab852abf2]mas não posso garantir que funciona[/b:fab852abf2], pois nos tempos do Delphi 3 eu também trabalhava com Paradox e nunca conectei aplicações minhas à SGBDs.

Sei que é possível conectar ao IB/FB através da BDE e se vc migrar seu BD para um SGBD, usar TQueries seria muito (muito mesmo) vantajoso sobre TTables.

Espero ter ajudado.
T+


Responder

Gostei + 0

31/05/2005

Pro-luck

Caro Vinícius,


Resolvi arriscar e na tabela onde constavam os dados das mensalidades (que não tinha nenhum tipo de índice), criei um campo ORD do tipo autonumeração e, que coloquei como chave primária e ainda coloquei os campos Cod e Nome como Índices secundários.

E estou localizando os registros usando o FINDNEAREST. Acontece que ele realmente só localiza, ou seja todos os outros registros permanecem no DBGrid, enquanto que com o uso das Query ele filtrava, deixando somente os registro que atendiam ao objeto da pesquisa.

Sei que tem como fazer isso com a Table também, só não sei como. Será que você pode me ajudar com mais essa???

Antecipadamente agradeço.


Responder

Gostei + 0

01/06/2005

Silviogs

Olá Pro-Luck

mas qual é o delphi que vc está usando? ser for o 5 melhor.

uma boa dica seria usar o um Banco de dados free (Interbase, Firebird, PostgreSQL) e usar o componente ZeosLib para acessar diretamente o banco de dados sem precisar de atalhos. No seu caso como vc usa um gerenciador de tabelas (Piradox) usa-se o BDE. Aconselho realmente usar Banco de Dados.

Obs: Já postei aqui no forum como fazer isto!.

Atenciosamente

Silvio Guedes


Responder

Gostei + 0

01/06/2005

Pro-luck

SOBE.


Responder

Gostei + 0

08/06/2005

Pro-luck

SOBE.


Responder

Gostei + 0

08/06/2005

Pro-luck

Desculpe-me não era SOBE que eu deveria ter digitado, mas sim, muito OBRIGADO pela atenção dispensada...

As vezes me pergunto se vc e outros programadores do seu nível ainda têm dúvida de alguma coisa. Geralmente têm resposta para tudo e sabem explicar os porquês de tudo... Aindo chego lá.

Um abração Vini,


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar