Fórum Firedac + Datasnap + AutoInc #584259
31/07/2017
0
Olá, boa tarde!
Tenho uma aplicação cliente - servidor, utilizando o dbExpress em 100%. Até então, a divisão ficava da seguinte forma:
1. App Servidor: TSQLConnection + TSQLQuery + TDataSetProvider
2. App Cliente: TSQLConnection + TDSProviderConnection + TClientDataSet
Na aplicação servidor, era realizada a configuração do ProviderFlags no componente TDataSetProvider. Existia a implementação do método OnAfterUpdateRecord que definia o ID inserido do registro da seguinte forma:
Aonde, a função ServerConnection.Resources.LastId retorna o valor da chamada "select last_id_insert()" do MySQL.
Essa implementação acima permitia que, ao se realizar um ApplyUpdates na aplicação cliente, o ID do registro inserido fosse "automaticamente" recuperado.
Atualmente, já consegui migrar todo o lado servidor para utilizar o FireDAC e os componentes ficaram e o lado cliente continuou com o de antes:
1. App Servidor: TFDConnection + TFDQuery + TDataSetProvider
2. App Cliente: TSQLConnection + TDSProviderConnection + TClientDataSet
O problema é que não consigo recuperar o ID do registro inserido de forma transparente para o cliente. Antes, após o ApplyUpdates, já era possível acessar o campo com um AsInteger e lá estava o valor correto. Hoje, com FireDAC, ainda não é possível.
Tenho duas dúvidas básicas:
1º É possível utilizar 100% FireDAC cliente + servidor e ainda ter essa gama de recursos que o dbExpress permitia?
2º Caso contrário, como é possível conseguir recuperar o ID auto_increment de um registro inserido?
Agradeço antecipadamente pela ajuda!
Tenho a assinatura da Devmedia, mas ainda sinto muita dificuldade em encontrar ajuda para esse problema. Já persiste por algum tempo e estou pensando em partir para soluções menos "corretas".
Obrigado à todos.
Tenho uma aplicação cliente - servidor, utilizando o dbExpress em 100%. Até então, a divisão ficava da seguinte forma:
1. App Servidor: TSQLConnection + TSQLQuery + TDataSetProvider
2. App Cliente: TSQLConnection + TDSProviderConnection + TClientDataSet
Na aplicação servidor, era realizada a configuração do ProviderFlags no componente TDataSetProvider. Existia a implementação do método OnAfterUpdateRecord que definia o ID inserido do registro da seguinte forma:
DataSet.FieldByName( mPrimaryKey ).NewValue := ServerConnection.Resources.LastId;
Aonde, a função ServerConnection.Resources.LastId retorna o valor da chamada "select last_id_insert()" do MySQL.
Essa implementação acima permitia que, ao se realizar um ApplyUpdates na aplicação cliente, o ID do registro inserido fosse "automaticamente" recuperado.
Atualmente, já consegui migrar todo o lado servidor para utilizar o FireDAC e os componentes ficaram e o lado cliente continuou com o de antes:
1. App Servidor: TFDConnection + TFDQuery + TDataSetProvider
2. App Cliente: TSQLConnection + TDSProviderConnection + TClientDataSet
O problema é que não consigo recuperar o ID do registro inserido de forma transparente para o cliente. Antes, após o ApplyUpdates, já era possível acessar o campo com um AsInteger e lá estava o valor correto. Hoje, com FireDAC, ainda não é possível.
Tenho duas dúvidas básicas:
1º É possível utilizar 100% FireDAC cliente + servidor e ainda ter essa gama de recursos que o dbExpress permitia?
2º Caso contrário, como é possível conseguir recuperar o ID auto_increment de um registro inserido?
Agradeço antecipadamente pela ajuda!
Tenho a assinatura da Devmedia, mas ainda sinto muita dificuldade em encontrar ajuda para esse problema. Já persiste por algum tempo e estou pensando em partir para soluções menos "corretas".
Obrigado à todos.
Júlio Ferreira
Curtir tópico
+ 1
Responder
Posts
01/08/2017
Hélio Devmedia
Jcmferreira,
Acredito que te respondi algo parecido em um artigo ou vídeo sobre firedac, dê uma conferida lá!
Acredito que te respondi algo parecido em um artigo ou vídeo sobre firedac, dê uma conferida lá!
Responder
Gostei + 0
08/04/2019
Jhonatan Reis
Jcmferreira,
Acredito que te respondi algo parecido em um artigo ou vídeo sobre firedac, dê uma conferida lá!
Acredito que te respondi algo parecido em um artigo ou vídeo sobre firedac, dê uma conferida lá!
Onde? Tenho o mesmo problema...
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)