Gravar um registro em um banco de dados na nuvem

12/02/2019

0

Bom dia!

Galera estou tendo dificuldades para gravar um registro em um banco de dados na nuvem. O caso é o seguinte: tenho um banco de dados Firebird local que possui uma tabela chamada Delegacias. Tenho um banco de dados na nuvem com a mesma tabela. As conexões estão todas funcionando certinhas. O negócio é somente na gravação mesmo. Para evitar de ocorrer algum problema quando o usuário estiver usando o sistema, eu coloquei uma thread no BeforePost no objeto Firedac chamado querydel, que ficou assim:

//replica as informações para o banco de dados espelho...
TThread.CreateAnonymousThread(procedure begin
If InternetCheckConnection('http://www.google.com/',1,0) Then
begin
if ConexaoGlobalR = True then
begin
if querydel.State in [dsInsert,dsEdit] then
begin
with DMR do
begin
with query do
begin
Close;
Sql.Clear;
Sql.Add('select * from DELEGACIAS where COD_DEL='''+editcod.Text+'''');
econexao.Online;
Open;
if(RecordCount=0)then
begin
query.Insert;
query.FieldValues
['COD_DEL;NOME;DT_CRIA;ENDERECO;MUNICIPIO;POVOADO;FONE;DIST_STR;COD_STR;COORD;SECRET;TESOUR;'
+'PER_GRAT;DT_ULT_ASS;POVOADOS;SUPLEN;ULT_NUM_VIA;DT_ELEICAO;PROX_ELEICAO;SITUACAO;CADASTRO;'
+'ALTERACAO;IMPORTACAO;EXPORTACAO;UCIDUSER;UCDATA;COD_INTEGRA'] := querydel.FieldValues
['COD_DEL;NOME;DT_CRIA;ENDERECO;MUNICIPIO;POVOADO;FONE;DIST_STR;COD_STR;COORD;SECRET;TESOUR;'
+'PER_GRAT;DT_ULT_ASS;POVOADOS;SUPLEN;ULT_NUM_VIA;DT_ELEICAO;PROX_ELEICAO;SITUACAO;CADASTRO;'
+'ALTERACAO;IMPORTACAO;EXPORTACAO;UCIDUSER;UCDATA;COD_INTEGRA'];
query.Post;
econexao.Commit;
end
else
begin
query.Edit;
query.FieldValues
['COD_DEL;NOME;DT_CRIA;ENDERECO;MUNICIPIO;POVOADO;FONE;DIST_STR;COD_STR;COORD;SECRET;TESOUR;'
+'PER_GRAT;DT_ULT_ASS;POVOADOS;SUPLEN;ULT_NUM_VIA;DT_ELEICAO;PROX_ELEICAO;SITUACAO;CADASTRO;'
+'ALTERACAO;IMPORTACAO;EXPORTACAO;UCIDUSER;UCDATA;COD_INTEGRA'] := querydel.FieldValues
['COD_DEL;NOME;DT_CRIA;ENDERECO;MUNICIPIO;POVOADO;FONE;DIST_STR;COD_STR;COORD;SECRET;TESOUR;'
+'PER_GRAT;DT_ULT_ASS;POVOADOS;SUPLEN;ULT_NUM_VIA;DT_ELEICAO;PROX_ELEICAO;SITUACAO;CADASTRO;'
+'ALTERACAO;IMPORTACAO;EXPORTACAO;UCIDUSER;UCDATA;COD_INTEGRA'];
query.Post;
econexao.Commit;
end;
econexao.Offline;
Close;
end;
end;
end;
end;
end;
end).start();

Com tudo ao chegar na linha em que está "if querydel.State in [dsInsert,dsEdit] then", simplesmente passa direto, como se não estive nem editando nem alterando.

Tenho um botão chamado Gravar que é justamente para que o usuário grave os dados no banco local... Será que estou fazendo a rotina no evento certo do objeto, o tal "beforepost"?
Marcos Morais

Marcos Morais

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar