Problemas com a distribuição do DBExpress nos clientes.
Olá pessoal,
Estou tentando distribuir uma aplicação nas máquinas clientes, utilizando o DBExpress e o Crystal Report 10. O SO é Windows XP Professional. Na minha máquina está tudo rodando perfeitamente. Mas ao distribuir para uma cliente Windows 2000 apresenta erro faltal, mas isso apenas em uma máquina. Pois também roda no NT e em outras máquina Win2000. Alguém pode me ajudar nesta distribuição? Já coloquei na unit do Data Module Midaslib e Dbexpora, mas não funcionou. O que pode ser??
Hugo
Estou tentando distribuir uma aplicação nas máquinas clientes, utilizando o DBExpress e o Crystal Report 10. O SO é Windows XP Professional. Na minha máquina está tudo rodando perfeitamente. Mas ao distribuir para uma cliente Windows 2000 apresenta erro faltal, mas isso apenas em uma máquina. Pois também roda no NT e em outras máquina Win2000. Alguém pode me ajudar nesta distribuição? Já coloquei na unit do Data Module Midaslib e Dbexpora, mas não funcionou. O que pode ser??
Hugo
Hcnc
Curtidas 0
Respostas
Gandalf.nho
15/10/2004
Instalou o cliente do banco de dados?
GOSTEI 0
Hcnc
15/10/2004
Ah! Esqueci de mencionar que o banco que uso é o Oracle 9i. E o cliente está instalado em todas as máquinas e funcionando perfeitamente. Outra, os arquivos de dbxconnections.ini e dbxdrivers.ini gravei na pasta system32. E agora??
GOSTEI 0
Vinicius2k
15/10/2004
Já coloquei na unit do Data Module Midaslib e Dbexpora, mas não funcionou.
Não faça isso. Distribua as DLLs separadamente, mas pelo q entendi vc já tentou isso ou não ?
A regra é simples :
1. Driver para dbExpress (no seu caso [b:44cef1ceb9]dbexpora.dll[/b:44cef1ceb9]) e [b:44cef1ceb9]midas.dll[/b:44cef1ceb9] no system/system32 do Windows.
2. Registrar a midas como dll compartilhada/sistema com a execução de :
[b:44cef1ceb9]regsvr32 midas.dll[/b:44cef1ceb9]
Fora isso, a tendencia é que não seja um problema de distribuição da aplicação com dbExpress...
Pode ser como a gandalf falou do cliente do banco de dados (Oracle) na estação ou em relação ao Cristal mas quanto à estes dois, não saberia lhe informar se alguma instalação ou registro adicional seria necessário.
T+
GOSTEI 0
Vinicius2k
15/10/2004
Outra, os arquivos de dbxconnections.ini e dbxdrivers.ini gravei na pasta system32.
Não trabalho com conexões nomeadas para não ter que distribuir estes arquivos, mas o local correto para eles é na pasta da aplicação, afinal, uma estação pode ter mais de uma aplicação usando dbExpress, e a instalação deles no system não seria a ideal.
T+
GOSTEI 0
Hcnc
15/10/2004
Valeu cara!
Mas não entendi o que fazer, quando vc falou em :
´Registrar a midas como dll compartilhada/sistema com a execução de :
regsvr32 midas.dll´
Registrar por que?
Mas não entendi o que fazer, quando vc falou em :
´Registrar a midas como dll compartilhada/sistema com a execução de :
regsvr32 midas.dll´
Registrar por que?
GOSTEI 0
Vinicius2k
15/10/2004
Este registro informa ao Windows que a midas é uma DLL usada por outras aplicações e que suas funcionalidades devem estar disponíveis...
Em geral, isso não é necessário, mas é bom para evitar problemas de carregamento dela pela aplicação, como ´Could not load midas.dll´ ou ´Error loading midas.dll´...
T+
Em geral, isso não é necessário, mas é bom para evitar problemas de carregamento dela pela aplicação, como ´Could not load midas.dll´ ou ´Error loading midas.dll´...
T+
GOSTEI 0
Rômulo Barros
15/10/2004
Este registro informa ao Windows que a midas é uma DLL usada por outras aplicações e que suas funcionalidades devem estar disponíveis...
Em geral, isso não é necessário, mas é bom para evitar problemas de carregamento dela pela aplicação, como ´Could not load midas.dll´ ou ´Error loading midas.dll´...
T+
Uau !!! Como é bom ler comentários. Está aí mais uma q eu não sabia. Mas, apareceu uma dúvida:
:?: [color=blue:6fecfe86a0]Após registrar minha dll, vamos supor q eu não queira mais esta dll compartilhada. Como faço para desregistrá-la ou descompartilhar a mesma?[/color:6fecfe86a0]
GOSTEI 0
Carval
15/10/2004
Coloque no uses de sua aplicação:
Uses DbExpora, Mida;
Isso resolve o problema da distribuição pois as Dlls serão incorporadas ao executável.
Uses DbExpora, Mida;
Isso resolve o problema da distribuição pois as Dlls serão incorporadas ao executável.
GOSTEI 0
Vinicius2k
15/10/2004
[quote:cb4edde2e8=´Undeclared Identifier´]Após registrar minha dll, vamos supor q eu não queira mais esta dll compartilhada. Como faço para desregistrá-la ou descompartilhar a mesma?[/quote:cb4edde2e8]
[b:cb4edde2e8]regsvr32 /u midas.dll[/b:cb4edde2e8], realiza o ´unregister´ da DLL
Resolve o problema de distribuição e cria outros. Essa incorporação, apesar de ser possível, não é recomendada e não deve ser feita.
T+
[b:cb4edde2e8]regsvr32 /u midas.dll[/b:cb4edde2e8], realiza o ´unregister´ da DLL
Coloque no uses de sua aplicação:
Uses DbExpora, Mida;
Isso resolve o problema da distribuição pois as Dlls serão incorporadas ao executável.
Resolve o problema de distribuição e cria outros. Essa incorporação, apesar de ser possível, não é recomendada e não deve ser feita.
T+
GOSTEI 0
Rômulo Barros
15/10/2004
:arrow: [b:89284e761b]Valeu, Vina2k !!!![/b:89284e761b]
GOSTEI 0
Hcnc
15/10/2004
Vinícius,
Por que não é acoselhado incluir o DBExpora e Midas na unit do Data Module.
Por que não é acoselhado incluir o DBExpora e Midas na unit do Data Module.
GOSTEI 0
Vinicius2k
15/10/2004
Bem, já li e vi várias situações de erros ´inexplicáveis´ quando se faz esta inclusão... pelo que ouvi dizer -- não comprovei, o problema foi solucionado no Delphi 7, mas prefiro não arriscar...
Outro detalhe é que tanto a midas quanto o driver, podem sofrer -- e sofrem atualizações nos Service Packs do Delphi, se vc incorporá-los aos projetos, teria que recompilá-los, ao invés de apenas redistribuir as DLLs ou enviar aos clientes as novas versões...
Além disso, na minha opinião, fere o próprio conceito da função de uma DLL que é compartilhar os mesmos recursos entre aplicações diferentes... vc pode ter mais de uma aplicação rodando sobre a mesma arquitetura e estaria ´engordando´ desnecessariamente todos os .exe...
T+
Outro detalhe é que tanto a midas quanto o driver, podem sofrer -- e sofrem atualizações nos Service Packs do Delphi, se vc incorporá-los aos projetos, teria que recompilá-los, ao invés de apenas redistribuir as DLLs ou enviar aos clientes as novas versões...
Além disso, na minha opinião, fere o próprio conceito da função de uma DLL que é compartilhar os mesmos recursos entre aplicações diferentes... vc pode ter mais de uma aplicação rodando sobre a mesma arquitetura e estaria ´engordando´ desnecessariamente todos os .exe...
T+
GOSTEI 0
Michaell
15/10/2004
Não trabalho com conexões nomeadas para não ter que distribuir estes arquivos, mas o local correto para eles é na pasta da aplicação, afinal, uma estação pode ter mais de uma aplicação usando dbExpress, e a instalação deles no system não seria a ideal.
T+
Poderia explicar como seria a configuração de conexões não nomeadas com o SQLConnection?
[]´s
GOSTEI 0
Vinicius2k
15/10/2004
Poderia explicar como seria a configuração de conexões não nomeadas com o SQLConnection?
Michaell,
- Informe apenas a propriedade [b:187af6814b]DriverName[/b:187af6814b] no TSQLConnection que as propriedades [b:187af6814b]GetDriverFunc, LibraryName e VendorLib[/b:187af6814b] deverão ser preenchidas automaticamente.
- Ajuste a propriedade [b:187af6814b]LoadParamsOnConnect[/b:187af6814b] para [b:187af6814b]False[/b:187af6814b].
- Neste ponto vc poderá deixar os parametros da SQLConnection fixos ou dinamicos. Se desejar deixá-los dinamicos, crie seu próprio arquivo .ini com os parametros que deseja passar em tempo de execução, por exemplo :
[Banco] Database=<caminho do banco> User_Name=<usuario> Password=<senha>
E antes de conectar, leia este arquivo .ini atribuindo os valores dos parametros para o TSQLConnection :
with SQLConnection1 do begin Params.Values[´Database´]:= ArquivoINI.ReadString(´Banco´,´Database´ ,´´); Params.Values[´User_name´]:= ArquivoINI.ReadString(´Banco´,´User_name´,´´); Params.Values[´Password´]:= ArquivoINI.ReadString(´Banco´,´Password´ ,´´); end;
Blz?
T+
GOSTEI 0
Rômulo Barros
15/10/2004
[quote:a45f52fd1d=´Michaell´]Poderia explicar como seria a configuração de conexões não nomeadas com o SQLConnection?
Michaell,
- Informe apenas a propriedade [b:a45f52fd1d]DriverName[/b:a45f52fd1d] no TSQLConnection que as propriedades [b:a45f52fd1d]GetDriverFunc, LibraryName e VendorLib[/b:a45f52fd1d] deverão ser preenchidas automaticamente.
- Ajuste a propriedade [b:a45f52fd1d]LoadParamsOnConnect[/b:a45f52fd1d] para [b:a45f52fd1d]False[/b:a45f52fd1d].
- Neste ponto vc poderá deixar os parametros da SQLConnection fixos ou dinamicos. Se desejar deixá-los dinamicos, crie seu próprio arquivo .ini com os parametros que deseja passar em tempo de execução, por exemplo :
[Banco] Database=<caminho do banco> User_Name=<usuario> Password=<senha>
E antes de conectar, leia este arquivo .ini atribuindo os valores dos parametros para o TSQLConnection :
with SQLConnection1 do begin Params.Values[´Database´]:= ArquivoINI.ReadString(´Banco´,´Database´ ,´´); Params.Values[´User_name´]:= ArquivoINI.ReadString(´Banco´,´User_name´,´´); Params.Values[´Password´]:= ArquivoINI.ReadString(´Banco´,´Password´ ,´´); end;
Blz?
T+[/quote:a45f52fd1d]
Legal, Vina2k !!!! Já utilizei o método descrito por vc, mas não seria melhor utilizar o [b:a45f52fd1d]´LoadParamsFromIniFile(´dbxconnections.ini´)´ ?[/b:a45f52fd1d]
:wink: [color=red:a45f52fd1d]Valeu !!!![/color:a45f52fd1d]
GOSTEI 0
Vinicius2k
15/10/2004
[quote:679aa435f0=´Undeclared Identifier´]Legal, Vina2k !!!! Já utilizei o método descrito por vc, mas não seria melhor utilizar o [b:679aa435f0]´LoadParamsFromIniFile(´dbxconnections.ini´)´ ?[/b:679aa435f0][/quote:679aa435f0]
Bem, é mais simples, mas vc pode não querer informar todos os parametros ou usar para a conexão do banco o mesmo .ini da aplicação, ou (como eu faço) salvar o parametro ´Password´ criptografado no .ini...
Desta forma, acho mais flexível o uso do próprio .ini lido ´manualmente´.
:wink:
T+
Bem, é mais simples, mas vc pode não querer informar todos os parametros ou usar para a conexão do banco o mesmo .ini da aplicação, ou (como eu faço) salvar o parametro ´Password´ criptografado no .ini...
Desta forma, acho mais flexível o uso do próprio .ini lido ´manualmente´.
:wink:
T+
GOSTEI 0
Rômulo Barros
15/10/2004
:arrow: [b:a782512cc5]Agora ficou explicado !!!![/b:a782512cc5]
:idea: Brigadão, Vina !!! e vê se aparece no MSN
:wink: :wink: :wink:
:idea: Brigadão, Vina !!! e vê se aparece no MSN
:wink: :wink: :wink:
GOSTEI 0