Problema com Servidor DataSnap Delphi XE7

Delphi

Firebird

05/12/2016

Fala Pessoal, essa é minha primeira vez aqui e já com um problema que para alguns sem duvida é algo simples.
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

Gilslan Powell

Curtidas 0

Respostas

Gabriel Baltazar

Gabriel Baltazar

05/12/2016

O FdConnection tem que ficar no ServerModule?
GOSTEI 0
Gilslan Powell

Gilslan Powell

05/12/2016

sim, pq se eu tirar não vou conseguir conectar a query e provider, fica como se fosse uma limitação, simplesmente não enxerga a conexão fora do ServerMethods. fiz o teste tanto no form principal, quanto dentro de um DataModule e não consegui ligar o connction a query..
GOSTEI 0
Gutierry Pereira

Gutierry Pereira

05/12/2016

Boa tarde,
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
Gilslan Powell

Gilslan Powell

05/12/2016

Obrigado, Gutierry Antonio!

Ajudou sim, consegui resolver.
GOSTEI 0
POSTAR