Jump to content

dev botao

  • Este tópico foi criado há 2788 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Posted

Bom dia pessoal,

Estamos iniciando os estudos sobre DataSnap e FireDAC e gostaria de saber como o pessoal anda fazendo...
Vi um exemplo no curso da DevMedia FireDAC ministrado pelo Guinther Pauli, onde o lado servidor é com FireDAC
(FDConnection, FDQuery, DataSetProvider) e o lado cliente com DbExpress/Datasnap Client (SQLConnection,
DSProviderConnection, ClientDataSet). Essa é a forma mais correta de se trabalhar?

Até consegui conectar um FDConnection no lado cliente com o FDConnection do servidor, mais não consegui usar o FDQuery,
da erro "Dbx.SQL is an unrecognized command type"... Existe alguma forma pra isso (usar SQL direto no FDQuery no cliente)?

 

Posted (edited)

Olá boa tarde,
 

Primeiro respondendo suas perguntas:
... Essa é a forma mais correta de se trabalhar?
R. A duas formas estão corretas, apesar ser possível usar somente o FireDac no Server e no Client.

... Existe alguma forma pra isso (usar SQL direto no FDQuery no cliente)?
R. Não é uma boa prática utilizar comandos SQL no lado Client, datasnap se torna bem mais interessante quando o Client não necessita saber a estrutura das tabelas.

fiz um pequeno exemplo de como utilizar FireDac no Server e no Client, executando função do Server e retornando o valor para o Client e
também a listagem de registros de uma tabela sem uso de SQL no Client.

 

obs: Altere os parametros do FDConnection que está no server para conectar a uma base de dados.

 

Espero ter ajudado...

DataSnap_Firedac.zip

Edited by SolivanAraujo
  • Like 3

Mas ele disse:

Antes bem-aventurados os que ouvem a palavra de Deus e a guardam. Lucas 11:28

  • Moderadores
Posted
Em 10/08/2016 at 11:08, Michel Ouriques disse:

Bom dia pessoal,

Estamos iniciando os estudos sobre DataSnap e FireDAC e gostaria de saber como o pessoal anda fazendo...
Vi um exemplo no curso da DevMedia FireDAC ministrado pelo Guinther Pauli, onde o lado servidor é com FireDAC
(FDConnection, FDQuery, DataSetProvider) e o lado cliente com DbExpress/Datasnap Client (SQLConnection,
DSProviderConnection, ClientDataSet). Essa é a forma mais correta de se trabalhar?

Até consegui conectar um FDConnection no lado cliente com o FDConnection do servidor, mais não consegui usar o FDQuery,
da erro "Dbx.SQL is an unrecognized command type"... Existe alguma forma pra isso (usar SQL direto no FDQuery no cliente)?

 

Bom dia,

Esse curso do Guinter Pauli é recente? Pergunto isso, porque vi um curso dele também com DataSnap em versões mais antigas do Delphi. Até usei como base para alguns projetos. Mas nas versões mais novas do Delphi, o REST com JSON foi muito melhorado e simples de implementar e entender. E o melhor de tudo é o resultado final (rapido, estável).

  • Like 1

Cleber C. Ferreira
Analista de Sistemas e Consultor
Email e
Skype: [email protected]
Formiga-MG

  • 2 weeks later...
Posted

Boa tarde, bom depois de muitas pesquisa na web eu não achei nada para resolver o meu problema, e o nosso em relação a trabalhar com SQL direto na aplicação  cliente.

 

Com tudo eu resolvi fazer da seguinte forna.

Na aplicação do servidor criei minha conexão com o bando de dados e coloquei uma query. na properties de params criei um param sem nome, do tipo string e vazio. ainda na query em events "BeforeOpen" coloquei da seguinte forma 

  fqryPesquisa.SQL.Clear;
  fqryPesquisa.SQL.Add(fqryPesquisa.Params[0].AsString);

agora vamos para a plicação cliente.

criei um clientdataset e em Params criei um Param idêntico ao da query no meu servidor, porem agora estou passando o SQL pelo Param que criei. assim quando eu dou open no clientdataset ele me retorna o resultado da consulta usando o SQL que passei por Param. 

espero que tenha ajudado. se ficou confuso e só pedir mais explicações. me ponho a disposição. 

 

Posted

Boa tarde,

Solivan, com certeza ajudou...

Cleber, o curso é este http://www.devmedia.com.br/curso/curso-de-multicamadas-com-delphi-e-datasnap/379 a ultima aula foi feita em XE5... 

Matheus, não entendi direito, ClientDataSet ligado DataSetProvider do servidor escrevendo o SQL no CommandText não é suficiente?

 

Como vocês tem feito os relatórios? Um método no servidor que devolve PDF ou de que forma? Vocês tem relatórios dinâmicos?

  • 7 months later...
Posted
14 minutos atrás, flavioast disse:

Boa noite!

 

Posso fazer uma conexão usando qualquer tipo de BD Relacional? SqlServer por exemplo?

Obrigado

 

Boa noite,

 

Pode sim, datasnap não depende de nenhum SGDB.

Mas ele disse:

Antes bem-aventurados os que ouvem a palavra de Deus e a guardam. Lucas 11:28

Posted

 Se você não achou a solução ainda, use o REST Dataware que já faz o que você quer tudo prontinho sem escrever nada além dos seus SQL's, funciona tudo via WS, com o Datasnap integrado tudo certo...

 https://sourceforge.net/projects/rest-dataware-componentes/

 Pode usar que é batata, eu mesmo sou o desenvolvedor do Pacote e já é usado por mais de 500 Programadores e crescendo justamente para suprir esse tipo de necessidade. VLW.

  • Like 1
  • Membros Pro
Posted

Galera, 

Estou tentando criar um servidor com firedac e os clientes com datasnap dbx. Tudo funciona perfeitamente. O único problema é quando tento enviar um comando sql para apagar registros via clientdataset. Segue o exemplo:

CDS.CommandText := 'DELETE FROM TABELA WHERE CONTROLE = 1' ; 
CDS.Execute ;

Não acontece o esperado, ou seja, não apagou o registro correspondente. 
Somente apagou o registro quando eu fechei a aplicação. 
Minha pergunta é: Existe alguma outra forma de resolver esse problema utilizando algum outro componente Firedac ou somente se eu mudar toda minha estrutura cliente? 
 

Grato desde já,

Rodrigo Cardilo

Card System Info

[email protected]

Posted

Acredito que só pelo fato de você está usando SQL do lado client já é o suficiente para optar em mudar sua estrutura, não de componentes, mas de metodologia.

Mas ele disse:

Antes bem-aventurados os que ouvem a palavra de Deus e a guardam. Lucas 11:28

  • Membros Pro
Posted
16 horas atrás, SolivanAraujo disse:

Acredito que só pelo fato de você está usando SQL do lado client já é o suficiente para optar em mudar sua estrutura, não de componentes, mas de metodologia.

Agradeço a dica mas não resolve meu problema. 

 

Grato.

Rodrigo Cardilo

Card System Info

[email protected]

Posted

 Faltou o Commit, por isso só funcionou após fechar o sistema, vc não commitou o dado ele só foi commitado após o fechamento da app, realize o commit após qualquer alteração de dados, crie uma transação e sempre commite ou de o rollback, mais a transação é altamente necessário.

  • Membros Pro
Posted
3 horas atrás, xyberx disse:

 Faltou o Commit, por isso só funcionou após fechar o sistema, vc não commitou o dado ele só foi commitado após o fechamento da app, realize o commit após qualquer alteração de dados, crie uma transação e sempre commite ou de o rollback, mais a transação é altamente necessário.

Amigo xyberx, eu imaginei que seria isso, mas na tecnologia firedac não tenho a mínima noção de como acionar o commit após o comando. 

Você sabe de algum exemplo que possa me explicar melhor o uso do commit?

Grato desde já

Rodrigo Cardilo

Card System Info

[email protected]

Posted
3 minutos atrás, cardilo disse:

Mas como eu aplicaria o commit pela aplicação cliente?

Você pode chamar um método remoto para isso, então fazendo essa chamada remota vc pode inclusive deixar no servidor o comando que quer executar e apenas passar os parâmetros por ele mesmo.

Com isso pode pode fazer o que quiser do lado do servidor inclusive o commit.

  • Like 1

Mas ele disse:

Antes bem-aventurados os que ouvem a palavra de Deus e a guardam. Lucas 11:28

  • Membros Pro
Posted
2 minutos atrás, SolivanAraujo disse:

Você pode chamar um método remoto para isso, então fazendo essa chamada remota vc pode inclusive deixar no servidor o comando que quer executar e apenas passar os parâmetros por ele mesmo.

Com isso pode pode fazer o que quiser do lado do servidor inclusive o commit.

Entendi.. Vou pesquisar esse método e tentar aqui.. Obrigado a todos pelas dicas.

Rodrigo Cardilo

Card System Info

[email protected]

Posted

Crie um metodo para dar commit na transação, simples, aí coloca nele a linha do amigo, eu gosto de usar commitretain pq ele cria uma nova transação após commitar.

  • Membros Pro
Posted
7 horas atrás, xyberx disse:

Crie um metodo para dar commit na transação, simples, aí coloca nele a linha do amigo, eu gosto de usar commitretain pq ele cria uma nova transação após commitar.

Galera, desculpe minha ignorância mas procurei vários exemplos no google para fazer esse método e não consegui achar nada que se enquadre em minha estrutura DataSnap (Firedac no servidor e DBX no cliente). Alguém aí tem alguma idéia ou um exemplo de como consigo fazer esse método?

 

Grato

Rodrigo Cardilo

Card System Info

[email protected]

Posted

 Crie um Metodo no Seu WebDatamodule, procure sobre isso, criar metodo WebDatamodule, pois é só criar uma procedure nele e chamar ela pelo client, nada de mais.

  • Este tópico foi criado há 2788 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.