Fórum Query ou Table? #283145
27/05/2005
0
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
Curtir tópico
+ 0Posts
28/05/2005
Vinicius2k
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+
Gostei + 0
31/05/2005
Pro-luck
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.
Gostei + 0
01/06/2005
Silviogs
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
Gostei + 0
01/06/2005
Pro-luck
Gostei + 0
08/06/2005
Pro-luck
Gostei + 0
08/06/2005
Pro-luck
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,
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)