Configurar caminho do banco servidor Datasnap

24/11/2015

21

Bom dia , eu novamente (: kkkkkkkkkkkk

Eu fiz um servidor datasnap no delphi xe8 e queria deixar o meu FDConnection mais " dinamico " podendo o usuario alterar caminho do banco do servidor , o que tenho até então são:

- Unit com 2 edits , um para porta do servidor e outro para usuario digitar caminho do banco para servidor

- Botão para inserir caminho do banco no FDConnection e que também inicia o servidor

- ServerContainer e ServerMethods criado automatico pelo delphi , dentro de ServerMethods tem os componentes do firedac.

Estou usando Delphi xe8 e o banco de dados Firebird (:
Responder

Posts

24/11/2015

Luiz Menin

Boa tarde, você pode colocar em dois Edits e um botão para confirmar a alteração

  with dmDados.Servidor do
  begin
    Params.Values['HostName'] := edtIP.Text;
    Params.Values['Port']     := edtPorta.txt;
  end;
Responder
Eu acho que nao consigui explicar bem o problema :( , tentar mandar mais detalhes pra ajudar ( como tbm o problema seja eu de n ter entendido sua resposta kk )

Nao consigo acessar ServerMethods a qual esta componente de conexao e só consigo ter acesso do ServerContainer em minha unit e uso este comando para mandar a porta:


ServerContainer1.DSTCPServerTransport1.Port := StrToInt(edPort.Text);
Responder

05/12/2016

Gilslan Powell

Cara estou com o mesmo problema que você, porem eu consegui o acesso ao ServerMethods declarando uma variavel

Var
ServerMetods: TServerMethods;

Assim deu pra enxergar o meu connection, só que não consigo mexer nele por outros form, tipo colocar um btn pra ativar ou modifica-lo.
Responder
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
Responder

08/11/2018

Jayme Vieira

Alguem consegui resolver o bo ai
Responder
Tentei fazer como o amigo Gutierry Pereira sugeriu colocando um dataModule pois a conexão é única para toda a aplicação, porém recebo a mensagem de erro "only one datamodule per application". Estou utilizando datasnap rest application com ISAP dynamic link library. Alguém tem alguma sugestão? Se eu deixo o connection diretamente no ServerMethods quando a quantidade de requisições é muito grande, recebo falha pois é instanciada uma conexão para cada requisição e se não me engano o limite de conexões simultaneas ao banco é de 1024. Tentei a implementação da classe singleton, mas infelizmente não obtive o sucesso esperado, não sei se eu estou fazendo errado, mas com a classe recebi uns access violation muito estranhos...Agradeço se alguém puder ajudar
Responder