Gravando dados apenas 1 vez

Pergunte sobre todos os tipos de dúvidas relacionadas ao desenvolvimento de aplicativos Windows, Mac, iOS e Android.

Moderador: hermeson

PedroG
Mensagens: 26
Registrado em: 10/Mar/2017, 09:35

Gravando dados apenas 1 vez

Mensagempor PedroG » 24/Out/2017, 11:42

Olá, aproveitando meu tópico anterior sobre duplicidade no listview, estou com outro problema recorrente nesta mesma aplicação. Eu consigo gravar os dados no banco sql server tranquilamente, porém isso só ocorre 1 vez, assim que eu tento inserir um segundo cliente, ele não efetua o registro. Notei que ele aparece na lista, mas assim que eu atualizo, vê-se que não foi registrado no servidor. Eu preciso fechar a aplicação e abrir novamente para registra outro cliente. O que poderia causar isso?

Obrigado desde já
Avatar do usuário
igorbastosib
Mensagens: 83
Registrado em: 03/Abr/2016, 23:05

Re: Gravando dados apenas 1 vez

Mensagempor igorbastosib » 26/Out/2017, 07:23

Verifique se a opção CacheUpdates do DataSet está True, caso esteja, vc precisa dar 'ApplyUpdates' para gravar as informações.
PedroG
Mensagens: 26
Registrado em: 10/Mar/2017, 09:35

Re: Gravando dados apenas 1 vez

Mensagempor PedroG » 26/Out/2017, 09:13

Sim, a opção CacheUpdates está como True no memClientes, e eu também utilizo o ApplyUpdates para gravar os dados no servidor

Código no botão Gravar:

Código: Selecionar todos

   if DM.memClientes.State in dsEditModes then
        //Se for novo registro
    if operacao = 'I' then
      dm.memClientes.Post;

  DM.ApplyClientes;


Código do ApplyClientes:

Código: Selecionar todos

procedure TDM.ApplyClientes;
var
  LDeltaList: TFDJSONDeltas;
begin
  try
    if memClientes.State in dsEditModes then
      memClientes.Post;

    LDeltaList := TFDJSONDeltas.Create;

    TFDJSONDeltasWriter.ListAdd(LDeltaList, 'CLIENTES', memCLientes);

    CM.SrvMetodosCliente.ApplyUpdatesClientes(LDeltaList);
  except
    //
  end;

end;


O mais estranho é por não apresentar erro, suspeite do CachedUpdates mesmo, mas eu já havia marcado como True.
PedroG
Mensagens: 26
Registrado em: 10/Mar/2017, 09:35

Re: Gravando dados apenas 1 vez

Mensagempor PedroG » 26/Out/2017, 09:42

Realizei um debug no código do servidor e no cliente, e como dito anteriormente, ele gravou o primeiro registro sem problemas, no segundo, ele me apresentou este erro:

[FireDAC][Phys][ODBC][Microsoft][SQL Server Native Client 11.0][SQL Server] Invalid Object name 'PROJECT.dbo.Table'.'.

Sinceramente, não consigo ter ideia do que possa estar causando isso.
emailx45
Mensagens: 171
Registrado em: 05/Ago/2016, 14:55

Re: Gravando dados apenas 1 vez

Mensagempor emailx45 » 03/Nov/2017, 05:03

experimente dar o nome da tabela qualificando o nome do db ou verifique a string de conexao

veja mais info em:

https://stackoverflow.com/questions/750 ... y-mydb-dbo
Desde 1993 (Clipper) / Desde 1998 (Delphi) / Firebird é meu DB / Windows é meu ambiente / Intel é minha plataforma de fazer código :lol:
Avatar do usuário
igorbastosib
Mensagens: 83
Registrado em: 03/Abr/2016, 23:05

Re: Gravando dados apenas 1 vez

Mensagempor igorbastosib » 09/Nov/2017, 07:17

Com está no Servidor o método de gravação?

Voltar para “Dúvidas Gerais”

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante