ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Problema com comunicação FDConnection datasnap com sql serve

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Mobile com Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Kazinho
Novato
Novato


Registrado: Segunda-Feira, 17 de Setembro de 2018
Mensagens: 5

MensagemEnviada: Seg Set 17, 2018 10:06 pm    Assunto: Problema com comunicação FDConnection datasnap com sql serve Responder com Citação

Boa noite,

Estou com um problema na conexão com datasnap, pra ser mais preciso com os parametros do FDConnection.

sou novo com isso então estou criando um app basico com comunicação datasnap.
Primeiramente bem simples só pra colocar os dois para comunicar com um banco SQL server e ver como funciona pra futuras aplicações.

O Problema esta no "SERVIDOR" o executavel q vai segurar o banco para as conexão do mobile ou de algum executavel do windows mesmo.

o executavel do app esta tudo certo funcionando beleza, mas o executavel do servidor esta com o seguinte problema com os parametros e nao sei o que fazer.

criei uma conexão via datasnap server, mas fiz tudo em aberto para que nao so meu computador conecte, e sim qualquer maquina com o banco sql.
Então criei na unit do servidor formas de abrir puxar o ip no edit e só conectar quando clicar no button para eu definir no edit qual ip vai ser conectado.

entao tive que criar as condições passando pelas outras uses e usando as outras units, para conseguir pegar o parametro que esta no fdconnection e define a conexao com o banco sql server de acordo com cada computador e ip etc...

Então criei assim

procedure TForm1.btnCONECTAClick(Sender: TObject);
var
S: TDSServerModule_PRODUTOS;




begin



S := TDSServerModule_PRODUTOS.Create(nil);
try
S.FDConnection1.Close;
S.FDConnection1.Params.Clear;
S.FDConnection1.Params.Add('Params=(TFDConnectionDefParams)');
S.FDConnection1.Params.Add('Database=BASE0001');
S.FDConnection1.Params.Add('DriverID=MSSQL');
S.FDConnection1.Params.Add('Password=123');
S.FDConnection1.Params.Add('User_Name=sa');
S.FDConnection1.Params.Add('Server='+edtIP.Text);

S.FDConnection1.Connected:= True;

if s.FDConnection1.Connected = true then
begin
showmessage('SQL CONECTADO');
end;

servercontainerunit1.ServerContainer1.DSServer1.AutoStart:= True;
servercontainerunit1.ServerContainer1.DSServer1.Start;

if servercontainerunit1.ServerContainer1.DSServer1.AutoStart = true then

begin
showmessage('SERVER CONECTADO');
end;

finally

S.Free;

end;



end;

Assim o que eu digitar no edit e quando clicar no botao ai conecta de acordo com varios ips diferente e nao só no meu.

Ai o problema no componente FDConnection tem os params que faz conexão sendo elas base senha ip....

então eu clicar e editando no proprio componente se eu deixar o meu ip na direto no componente em Server ai executo abro e abro o app e conecta normal

com essas condições acima ai

agora se deixar um outro diferente ali ou eu trocar meu ip ja era mesmo com os IF ele fala que conectou ficou True mas quando abro o app pra conectar da remote erro timeout

ai se vou no componente e mudo o ip pro meu e abro ai volta funcionar pq meu parametro nao ta levando certo o ip mesmo com o clear.

E outra se debug ele passa pelos if e diz q ta conectado TRUE

Obrigado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Kazinho
Novato
Novato


Registrado: Segunda-Feira, 17 de Setembro de 2018
Mensagens: 5

MensagemEnviada: Seg Set 17, 2018 10:29 pm    Assunto: Responder com Citação

Fiz varios teste e vi que o fdconnection no params dele tem driverid database username..... tem todos mesmo o Server.
entao só pelo params.add mesmo que consigo tentar setar ele.

ja tirei S.FDConnection1.Params.Add('Params=(TFDConnectionDefParams)');

mudei posições do servercontainerunit1.ServerContainer1.DSServer1.AutoStart:= True;
servercontainerunit1.ServerContainer1.DSServer1.Start;

mas nada deu certo

então eu fui la na propriedade do componente server e deixei como localhost.
até ai tudo bem assim funciona mas uma duvida...

esse localhost vai pegar o nome ou ip da maquina?
pq preciso que seja ip nem sempre o sql aceita o nome
alem de ter q informar depois do ip ,1433 da porta

realmente sera q tem algo para que seja feito para que defina o Server para

ip do edit que estiver informado mais o ,1433 para ser aceito em todos os computador e qualquer ip ou sql server?

obrigado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Set 18, 2018 10:11 am    Assunto: Responder com Citação

Bom dia,

Nesse código que você postou está sendo criada uma instância local do TDSServerModule e logo após as configurações ele é destruído, então não é possível utilizar essa instância desse componente depois.
Esse código que faz as configurações deve utilizar o FDConnection que está sendo acessado pela aplicação cliente. Ele deve estar declarado em outro lugar.

Espero que ajude


Editado pela última vez por imex em Ter Mar 07, 2023 5:46 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Kazinho
Novato
Novato


Registrado: Segunda-Feira, 17 de Setembro de 2018
Mensagens: 5

MensagemEnviada: Qua Set 19, 2018 1:03 am    Assunto: Responder com Citação

Entendi...

Mas tudo isso foi feito na unit do client do datasnap a intenção e abrir esse servidor em qualquer maquina e nao só fixa na minha então queria deixar aberto a opção pra digitar em um edit o IP de qualquer maquina.

teria um exemplo de como teria que declarar ela em outro lugar?

pois eu deixei localhost e abri em outras maquinas e funcionou

mas como disse nem sempre local host vai funcionar pq preciso ter ip,1433 da porta pra acessar ela totalmente livre de bloqueio

mas ta funcionando

obrigado pela resposta.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Set 19, 2018 10:35 am    Assunto: Responder com Citação

Acredito que você tenha uma variável global dentro da unit do seu TDSServerModule que já está sendo instanciada. Ex:

Código:
var
  DSServerModule_PRODUTOS: TDSServerModule_PRODUTOS;


Aquele código para configurar o FDConnection deve utilizar essa variável (ou outra que está sendo utilizada no servidor).
Se o IP está no aplicativo cliente, deve ser criado um método no Server para enviar o IP para o servidor onde deve ser feita a configuração do FDConnection.

Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Mobile com Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB