BDE x ADO x dbExpress x (Quem mais??)
Galera, usava o BDE com Delphi 5, SQL 7 no Win XP Pro. Migrei tudo para ADO. Ficou muito lento, cheio de problemas, etc.
Procurando algumas soluções (ainda não obtive - é só ler uma outra pergunta minha mais abaixo) vi muitos comentários sobre o dbExpress. Surge agora a pergunta crucial: [b:e9ad125d1b]qual das três (ADO, BDE, dbExpress) é a melhor para essa situação? [/b:e9ad125d1b](Delphi 5, SQL Server 7 e Win XP Pro). Mas, por favor, quero aprender então, se possível, não simplesmente respondam A ou B mas justifiquem pois preciso de tomar uma descisão séria nos próximos dias sobre a a tecnolgia de acesso, haja visto que a ADO tá me deixando (feio) na mão.
Procurando algumas soluções (ainda não obtive - é só ler uma outra pergunta minha mais abaixo) vi muitos comentários sobre o dbExpress. Surge agora a pergunta crucial: [b:e9ad125d1b]qual das três (ADO, BDE, dbExpress) é a melhor para essa situação? [/b:e9ad125d1b](Delphi 5, SQL Server 7 e Win XP Pro). Mas, por favor, quero aprender então, se possível, não simplesmente respondam A ou B mas justifiquem pois preciso de tomar uma descisão séria nos próximos dias sobre a a tecnolgia de acesso, haja visto que a ADO tá me deixando (feio) na mão.
Willian
Curtidas 0
Respostas
Gandalf.nho
13/09/2004
BDE é aconselhável esquecer, pq é uma tecnologia ultrapassada. O DBExpress é vantajoso no quesito de permitir usar vários tipos de base de dados mudando apenas (em teoria) o driver de acesso. Mas, antes de avaliar, como você está trabalhando com o banco no ADO?
GOSTEI 0
Vinicius2k
13/09/2004
Colega,
Não creio que vc tenha as 3 opções, já que o dbExpress não está disponível no Delphi 5 (somente à partir do 6)...
Em resumo, ou vc fica com a BDE ou tenta otimizar sua aplicação para utilização da ADO...
Não sou grande conhecedor da ADO, mas me parece estranho vc ter lentidão, já é uma opinião quase unanime de que ADO é a melhor forma de acessar o MS-SQLServer...
Mesmo que vc tivesse o dbExpress à sua disposição os colegas que trabalham com este SGBD, provavelmente, lhe recomendariam utilizar ADO....
T+
Não creio que vc tenha as 3 opções, já que o dbExpress não está disponível no Delphi 5 (somente à partir do 6)...
Em resumo, ou vc fica com a BDE ou tenta otimizar sua aplicação para utilização da ADO...
Não sou grande conhecedor da ADO, mas me parece estranho vc ter lentidão, já é uma opinião quase unanime de que ADO é a melhor forma de acessar o MS-SQLServer...
Mesmo que vc tivesse o dbExpress à sua disposição os colegas que trabalham com este SGBD, provavelmente, lhe recomendariam utilizar ADO....
T+
GOSTEI 0
Marcelo Souza
13/09/2004
Amigao o ado ñ precisa d´pont pra fazer a conexao ele vai direto ao banco e o bde precisa d um alias pra fazer a conexao ao banco...reveja esse conceito..
GOSTEI 0
Dataclass
13/09/2004
Olá!
Atualmente não utilizo mais SQLServer nem MSAccess daí não uso mais ADO,porém na época que utilizavamos estas tecnologias migramos de BDE para ADO e foi muito bom.
Existem alguma opções nos componentes ADO que podem melhorar tua performance...não recordo bem mas tenta brincar um pouco com os componentes.
Espero ter sido útil.
Atualmente não utilizo mais SQLServer nem MSAccess daí não uso mais ADO,porém na época que utilizavamos estas tecnologias migramos de BDE para ADO e foi muito bom.
Existem alguma opções nos componentes ADO que podem melhorar tua performance...não recordo bem mas tenta brincar um pouco com os componentes.
Espero ter sido útil.
GOSTEI 0
Leonardoffsilva
13/09/2004
Estranho esse problema com o ADO.
Como está configurado o cursor (Server ou Client).
Qual o Banco de Dados?
Está usando AdoTable ou AdoQuery?
Para aplicações Win32, desconheço forma de acesso mais eficiente e otimizada que ADO, mesmo usando outros SGDB (DB2, Oracle, Pervasive, etc).
Mesmo quando preciso trabalhar com o PostgreSql, uso o driver ADO para ODBC para fazer uma ponte com o driver ODBC do postgreSQL e digo que fica muito bom.
Deve ter alguma coisa errada aí. Posta mais detelhes do seu problema!
Como está configurado o cursor (Server ou Client).
Qual o Banco de Dados?
Está usando AdoTable ou AdoQuery?
Para aplicações Win32, desconheço forma de acesso mais eficiente e otimizada que ADO, mesmo usando outros SGDB (DB2, Oracle, Pervasive, etc).
Mesmo quando preciso trabalhar com o PostgreSql, uso o driver ADO para ODBC para fazer uma ponte com o driver ODBC do postgreSQL e digo que fica muito bom.
Deve ter alguma coisa errada aí. Posta mais detelhes do seu problema!
GOSTEI 0
Leonardoffsilva
13/09/2004
Só pra dar uma lembrada:
SQL Server - Microsoft
Windows XP - Microsoft
ADO - Metodo de acesso a SGBD da Microsoft.
Como se vê, é muito difícil dar problema de lentidão.
Agora se eu não me engano, o delphi 5 tem problema com o ADO original da Borland e existe um update, inclusive para resolver um Bug de EOF aleatórios.
Abraços!
SQL Server - Microsoft
Windows XP - Microsoft
ADO - Metodo de acesso a SGBD da Microsoft.
Como se vê, é muito difícil dar problema de lentidão.
Agora se eu não me engano, o delphi 5 tem problema com o ADO original da Borland e existe um update, inclusive para resolver um Bug de EOF aleatórios.
Abraços!
GOSTEI 0
Willian
13/09/2004
Eu já passei o UPDATE da Borland para corrigir os problemas. Mas mesmo assim continua lento e com alguns bugs, como o de não atualizar a DBGrid após uma alteração muito grande, nem aceitar Refresh na ADOTable. Alguém conhece alguma matéria que poderia me orientar melhor sobre o assunto?
GOSTEI 0
Leonardoffsilva
13/09/2004
Só uma dica:
Não usa ADOTable em SqlServer!
ADOTable é para trabalhar com o Access. Funciona em SQL Server mas realmente dá problema de lentidão, pois toda a tabela é trafegada pela rede.
Tenta criar sua aplicação dentro dos conceitos de Cliente/Servidor, fazendo uso do ADOQuery e de transações. Inclusive para Access eu prefiro fazer uso exclusivo de ADOQuery.
Mas lembre-se de quando for fazer um select que retorne muitos registros de limitá-los em grupos. Aqui eu baixo em grupos de 50 registros.
Abraços!
Não usa ADOTable em SqlServer!
ADOTable é para trabalhar com o Access. Funciona em SQL Server mas realmente dá problema de lentidão, pois toda a tabela é trafegada pela rede.
Tenta criar sua aplicação dentro dos conceitos de Cliente/Servidor, fazendo uso do ADOQuery e de transações. Inclusive para Access eu prefiro fazer uso exclusivo de ADOQuery.
Mas lembre-se de quando for fazer um select que retorne muitos registros de limitá-los em grupos. Aqui eu baixo em grupos de 50 registros.
Abraços!
GOSTEI 0
Willian
13/09/2004
[b:9f9ad66567]Não usar ADOTable com SQL Server?[/b:9f9ad66567]
Não entendi... Como eu altero os dados então? Exibo os dados num DBGrid e preciso gravá-los. Como faço isso sem ADO Table??? O ADO pra mim é tão complicado que nem campo Lookup funciona: dá pau direto!!!!
Não entendi... Como eu altero os dados então? Exibo os dados num DBGrid e preciso gravá-los. Como faço isso sem ADO Table??? O ADO pra mim é tão complicado que nem campo Lookup funciona: dá pau direto!!!!
GOSTEI 0
Leonardoffsilva
13/09/2004
Usando o ADOQuery, uma DBGrid receberia um select de uma ADOQuery com os dados.
Você usaria a DBGrid para consulta e não para edição. Selecione a informação atravéz da DBGrid e mande os dados para objetos textEdit ou equivalentes.
Leia a alteração feita via usuário e comande um Update table via mesma adoquery. Logo após faça um novo select que a dbgrid virá atualizada.
Ou use uma segunda AdoQuery para a atualização. Nesse caso é só dar um refresh na AdoQuery associada ao dbgrid que a mesma é atualizada com os dados mais recentes.
Há lembre-se de deixar o curosr em Server, pois você sempre terá os dados do SGDB e não de um cache local.
Parece confuso mais é muito mais simples que o dbexpress.
Há, lembre-se que:
Conectores ADO e ODBC - São fabricados pelos fornecedores dos SGBD(em quase sua totalidade)
Conectores dbExpress - São fabricados pela Borland ou por Terceiros, mas ainda não vi um sequer fabricador pelo fornecedor do SGBD.
Pos isso que eu adotei o ADO e logo estarei migrando para ADO.NET
Dá uma olhada em www.delphi.about.com que tem um curso on-line muito bom sobre ADO. Explica tudo e muito bem detalhado!
Abraços!
Você usaria a DBGrid para consulta e não para edição. Selecione a informação atravéz da DBGrid e mande os dados para objetos textEdit ou equivalentes.
Leia a alteração feita via usuário e comande um Update table via mesma adoquery. Logo após faça um novo select que a dbgrid virá atualizada.
Ou use uma segunda AdoQuery para a atualização. Nesse caso é só dar um refresh na AdoQuery associada ao dbgrid que a mesma é atualizada com os dados mais recentes.
Há lembre-se de deixar o curosr em Server, pois você sempre terá os dados do SGDB e não de um cache local.
Parece confuso mais é muito mais simples que o dbexpress.
Há, lembre-se que:
Conectores ADO e ODBC - São fabricados pelos fornecedores dos SGBD(em quase sua totalidade)
Conectores dbExpress - São fabricados pela Borland ou por Terceiros, mas ainda não vi um sequer fabricador pelo fornecedor do SGBD.
Pos isso que eu adotei o ADO e logo estarei migrando para ADO.NET
Dá uma olhada em www.delphi.about.com que tem um curso on-line muito bom sobre ADO. Explica tudo e muito bem detalhado!
Abraços!
GOSTEI 0
Willian
13/09/2004
O [b:93806a616d]leonardoffsilva[/b:93806a616d] me deu a seguinte dica [b:93806a616d](Valeu Leonardo!!!)[/b:93806a616d]:
[b:93806a616d][i:93806a616d][u:93806a616d]Há lembre-se de deixar o curosr em Server, pois você sempre terá os dados do SGDB e não de um cache local. [/u:93806a616d][/i:93806a616d][/b:93806a616d]
Resolveu!!! Valeu!!!! É duro ser novato nessas tecnologias.
Mas (sempre tem um ´mas´) surgiu um outro problema: quando eu ponho o cursor em Server ele não aceita mais nenhum tipo de índice. Como resolvo isso?
Obs.: Ficou muito mais rápido o sistema e os problemas desapareceram quase todos, persistem apenas agora os índices.
[b:93806a616d][i:93806a616d][u:93806a616d]Há lembre-se de deixar o curosr em Server, pois você sempre terá os dados do SGDB e não de um cache local. [/u:93806a616d][/i:93806a616d][/b:93806a616d]
Resolveu!!! Valeu!!!! É duro ser novato nessas tecnologias.
Mas (sempre tem um ´mas´) surgiu um outro problema: quando eu ponho o cursor em Server ele não aceita mais nenhum tipo de índice. Como resolvo isso?
Obs.: Ficou muito mais rápido o sistema e os problemas desapareceram quase todos, persistem apenas agora os índices.
GOSTEI 0