SQLConnection que foi salva aberta
E aí pessoal! Seguinte: tenho uma SQLConnection que, em tempo de projeto, conecta-se ao banco de dados da minha máquina para que eu possa manipular os SQLDataSets e ClientDataSets, criando os TFields e essa coisa toda....
Mas, quando eu vou distribuir a aplicação, mudo os parâmetros de conexão para que ela acesse o BD na máquina destino. Só que, se por acaso a conexão for salva com Active = True, ela já tenta conectar no banco de dados da minha máquina, o que obviamente dá erro em outra máquina.
Tentei então alterar os parâmetros de conexão no evento BeforeConnect, mas não deu resultado. Acredito que a causa seja o fato da Connection já ser desserializada do .dfm ativa, e assim, ela já tenta conectar direto, antes de qualquer coisa.
Bem, se for assim mesmo, como poderia fazer para mudar os parâmetros de conexão em tempo de execução sem precisar me preocupar com o estado da conexão durante o projeto???
Mas, quando eu vou distribuir a aplicação, mudo os parâmetros de conexão para que ela acesse o BD na máquina destino. Só que, se por acaso a conexão for salva com Active = True, ela já tenta conectar no banco de dados da minha máquina, o que obviamente dá erro em outra máquina.
Tentei então alterar os parâmetros de conexão no evento BeforeConnect, mas não deu resultado. Acredito que a causa seja o fato da Connection já ser desserializada do .dfm ativa, e assim, ela já tenta conectar direto, antes de qualquer coisa.
Bem, se for assim mesmo, como poderia fazer para mudar os parâmetros de conexão em tempo de execução sem precisar me preocupar com o estado da conexão durante o projeto???
Programaker
Curtidas 0
Respostas
Roswel
01/04/2005
Programaker,
Também tive esse mesmo problema e, como vc, não consegui achar uma maneira de desativar a SQLConnection antes de qq coisa. O q eu faço é deixar a propriedade Active sempre False antes de compilar a versão pro cliente.
Também tive esse mesmo problema e, como vc, não consegui achar uma maneira de desativar a SQLConnection antes de qq coisa. O q eu faço é deixar a propriedade Active sempre False antes de compilar a versão pro cliente.
GOSTEI 0
Kotho
01/04/2005
Eu fiz até assim: no onCreate do DataModule, eu testo se o SQLConnection.Active = true e levanto uma exceção... assim quando vou testar o programa, ele me avisa.
GOSTEI 0
Programaker
01/04/2005
Eu fiz algo parecido aqui. Coloquei um ShowMessage simplezinho mesmo que me avisa se a conexão já estiver aberta antes da hora e pra me forçar a arrumar logo, dei um Application.Terminate também.
Mas......isso é ruim demais!!!! Tinha que ter um jeito digno de tratar isso...
Mas andei pensando....talvez se eu usar a conexão do projeto só em tempo de projeto e instanciar uma outra em tempo de execução, como uma propriedade pública do DataModule, que seria usada no programa em tempo de execução. Se a conexão de projeto for salva aberta e tentar conectar com um banco que não tem nada a ver, eu trato a exceção, fecho ela e sigo em frente com a execução do programa, que vai passar a usar a propriedade.
Isso deve dar um jeito nessas gambiarras embora não deixe de ser uma :P
[b:46a32dfcd3][color=orange:46a32dfcd3]Mensagem editada por gandalf.nho.[/color:46a32dfcd3][/b:46a32dfcd3] [b:46a32dfcd3]Por favor, não use palavrões.[/b:46a32dfcd3]
Mas......isso é ruim demais!!!! Tinha que ter um jeito digno de tratar isso...
Mas andei pensando....talvez se eu usar a conexão do projeto só em tempo de projeto e instanciar uma outra em tempo de execução, como uma propriedade pública do DataModule, que seria usada no programa em tempo de execução. Se a conexão de projeto for salva aberta e tentar conectar com um banco que não tem nada a ver, eu trato a exceção, fecho ela e sigo em frente com a execução do programa, que vai passar a usar a propriedade.
Isso deve dar um jeito nessas gambiarras embora não deixe de ser uma :P
[b:46a32dfcd3][color=orange:46a32dfcd3]Mensagem editada por gandalf.nho.[/color:46a32dfcd3][/b:46a32dfcd3] [b:46a32dfcd3]Por favor, não use palavrões.[/b:46a32dfcd3]
GOSTEI 0