Fórum Problema com Servidor DataSnap Delphi XE7 #572153
05/12/2016
0
Sou novo com DataSnap e pesquisei muito e simplesmente não consegui resolver meu pro. então la vai.
Criei um servidor DataSnap (Form Application, Vcl, TDSServerModule), Rodou Legal... no meu ServerMethods eu coloquei um FdConection, qry e etc...
Consegui acesso com o cliente, Porém dentro do meu servidor eu gostaria de quando ele iniciasse, ele verificasse se consegue conectar o FdConection ao meu Banco de Dados do FireBird 2.5 (que Criei a base usando o IBExpert).
então no onCreate do meu form principal eu coloquei o seguinte codigo
try
if not ServerMethods.conexao.Connected then
ServerMethods.conexao.connected := true;
ServerContainer.DSServer1.Start;
if ServerContainer.DSServer1.Started then
begin
frmPrincipal.lbStatus.Caption := 'Servidor Ativo';
frmPrincipal.Caption := 'Servidor Ativo';
frmPrincipal.lbStatus.Font.Color := clGreen;
frmPrincipal.btnAtivar.Enabled := false;
frmPrincipal.BtnDesativar.Enabled := true;
frmPrincipal.edtPort.Enabled := False;
end;
except
ShowMessage('Erro ao Conecatar o banco e iniciar o servidor');
Application.Terminate;
end;
pra poder chamar o ServerMethods eu precisei usar a variavel abaixo
var
ServerMethods : TServerMethods1;
se não usar eu não consigo enxergar o FdConnection.
o problema de tudo é: Não consigo ativar o FdConection de nenhuma forma por codigo... ja tentei em um btn e de todas as formas possiveis, e sempre me retorna apenas a exception (que no meu caso é a mensagem que está no condigo acima) e nunca ativa o fdconection.
mais se eu for normal no ServerMethods e clico no Connected ele ativa sem pro e roda blz. Sinceramente ja penssei em desistir do projeto pq nem mesmo na net eu consegui localizar nada que me ajude, e olhe que ja faz quase um mês que tento resolver isso, então minha ultima chance foi recorrer a vocês do forum.
Mais uma coisa, eu sempre utilizei o codigo acima sem erro algum quando se tratava de DataModule, mas no serverMethods é como se tivesse algo que impede da minha conexao ser ativada por codigo.
Gilslan Powell
Curtir tópico
+ 0Posts
05/12/2016
Gabriel Baltazar
Gostei + 0
05/12/2016
Gilslan Powell
Gostei + 0
05/12/2016
Gutierry Pereira
O problema que esta passando é devido a falta de conhecimento de como é instanciado o TServerMethods. O TServerMethods é instanciado a cada requisição, então ao tentar fazer uma requisição sua conexão será criada mais os dados de conexão não existiram por que você fez isso no form principal. E o seu for principal esta "enxergando" uma instancia que não será utilizada.
Se sua conexão for unica para toda a aplicação você pode colocar isso em um datamodule que será intsnaciado uma unica vez no create da aplicação e se referenciar a ele no TServerMethods. Uma outra solução é criar uma classe singleton de conexão.
espero ter ajudado.
Att: Gutierry Antonio
Gostei + 0
06/12/2016
Gilslan Powell
Ajudou sim, consegui resolver.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)