Olá amigos! Estou prestes a começar um sistema para um amigo e estou procurando qual a melhor conexão do Delphi com uma base de dados Firebird 1.5. Estou entre as palhetas dbExpress, BDE e a InterBase. Já trabalho com o BDE no meu emprego e tenho intimidade com ele, mas muitas pessoas não o recomendam. Por isso estou buscando outras alternativas. Fazendo alguns testes simples com o dbExpress, me deparei com a seguinte situação:
Ele não me permite ligar um DataSource diretamente a uma tabela por ser unidirecional, tendo que usar componentes intermediários, como o ClientDataSet e o DataSetProvider. Ok, até aí tudo bem. Vieram os testes:
Teste 1:
- Adicionei um SQLTable, um ClientDataSet, um DataSource, um DBGrid e dois Buttons;
- Associei o SQLTable ao ClientDataSet pelo comando "Assign Local Data..." (botão direito em cima do ClientDataSet), associei o DataSource ao ClientDataSet e o DBGrid ao DataSource. (Nessa hora, já era possível visualizar os dados da tabela no Grid);
- No botão 1, criei um código para desativar a visualização dos dados, e no botão 2, um código para ativar (ClientDataSet1.Active := False / ClientDataSet1.Active := True);
- Executando o Teste com a propriedade "Active" do ClientDataSet setada como True, obtive um carregamento do Form um pouco lento, um congelamento pequeno, mas nada que pudesse atrapalhar. Os comandos para desativar e ativar a visualização funcionaram perfeitamente, sem atrasos.
Teste 2:
- Seguindo a mesma estrutura do Teste 1, apenas setei a propriedade "Active" do ClientDataSet como False, e obtive um carregamento do Form bem mais rápido. Mas em compensação, o botão de ativar a visualização passou a não funcionar, retornando o erro: "ClientDataSet1: Provedor de dados ou base de dados perdidos".
Teste 3:
- Para o próximo teste, adicionei um DataSetProvider, o qual eu relacionei com o SQLTable, e depois relacionei o ClientDataSet a ele;
- A propriedade "Active" do ClientDataSet continua como False;
- Agora o carregamento do Form voltou a apresentar um certo congelamento e na hora de visualizar o Grid existe o mesmo tempo de espera. Ou seja, dois atrasos: do Form e da visualização dos dados.
Teste 4:
- Fiz o mesmo Teste 3 só que com componentes da palheta BDE. O tempo de espera para o carregamento do Form é o mesmo, mas a visualização dos dados no Grid é instantânea.
A tabela usada para os testes é a mesma e contém 7.100 registros. Ainda não fiz testes com a palheta InterBase, nem sei se ela seria viável para o Firebird.
Agora com questão ao atraso do dbExpress para visualizar os dados no Grid, não teria uma propriedade tipo, "não carregar todos os dados", ou algo assim?! Parece que ele demora porque carrega todos os dados de uma vez. Não sei, mas parece ser algo com relação a isso.
Pergunta
Duduh_Capixaba
Olá amigos! Estou prestes a começar um sistema para um amigo e estou procurando qual a melhor conexão do Delphi com uma base de dados Firebird 1.5. Estou entre as palhetas dbExpress, BDE e a InterBase. Já trabalho com o BDE no meu emprego e tenho intimidade com ele, mas muitas pessoas não o recomendam. Por isso estou buscando outras alternativas. Fazendo alguns testes simples com o dbExpress, me deparei com a seguinte situação:
Ele não me permite ligar um DataSource diretamente a uma tabela por ser unidirecional, tendo que usar componentes intermediários, como o ClientDataSet e o DataSetProvider. Ok, até aí tudo bem. Vieram os testes:
Teste 1:
- Adicionei um SQLTable, um ClientDataSet, um DataSource, um DBGrid e dois Buttons;
- Associei o SQLTable ao ClientDataSet pelo comando "Assign Local Data..." (botão direito em cima do ClientDataSet), associei o DataSource ao ClientDataSet e o DBGrid ao DataSource. (Nessa hora, já era possível visualizar os dados da tabela no Grid);
- No botão 1, criei um código para desativar a visualização dos dados, e no botão 2, um código para ativar (ClientDataSet1.Active := False / ClientDataSet1.Active := True);
- Executando o Teste com a propriedade "Active" do ClientDataSet setada como True, obtive um carregamento do Form um pouco lento, um congelamento pequeno, mas nada que pudesse atrapalhar. Os comandos para desativar e ativar a visualização funcionaram perfeitamente, sem atrasos.
Teste 2:
- Seguindo a mesma estrutura do Teste 1, apenas setei a propriedade "Active" do ClientDataSet como False, e obtive um carregamento do Form bem mais rápido. Mas em compensação, o botão de ativar a visualização passou a não funcionar, retornando o erro: "ClientDataSet1: Provedor de dados ou base de dados perdidos".
Teste 3:
- Para o próximo teste, adicionei um DataSetProvider, o qual eu relacionei com o SQLTable, e depois relacionei o ClientDataSet a ele;
- A propriedade "Active" do ClientDataSet continua como False;
- Agora o carregamento do Form voltou a apresentar um certo congelamento e na hora de visualizar o Grid existe o mesmo tempo de espera. Ou seja, dois atrasos: do Form e da visualização dos dados.
Teste 4:
- Fiz o mesmo Teste 3 só que com componentes da palheta BDE. O tempo de espera para o carregamento do Form é o mesmo, mas a visualização dos dados no Grid é instantânea.
A tabela usada para os testes é a mesma e contém 7.100 registros. Ainda não fiz testes com a palheta InterBase, nem sei se ela seria viável para o Firebird.
Agora com questão ao atraso do dbExpress para visualizar os dados no Grid, não teria uma propriedade tipo, "não carregar todos os dados", ou algo assim?! Parece que ele demora porque carrega todos os dados de uma vez. Não sei, mas parece ser algo com relação a isso.
Editado por Duduh_CapixabaLink para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.