DATASNAP + FDConnection + TFDQuery + ClientDataSet
17/09/2016
0
Estou migrando minha aplicação delphi para servidor DATASNAP, POSTGRES, estou com um problema no cliente altero a informação e dou um
ClientDataSet1.Post;
ClientDataSet1.ApplyUpdates(0);
Vejo que a informação alterada chega no lado do servidor só que não grava no banco de dados.
Alguém poderia me ajudar por favor.
Obrigado
Amaro Loch
Post mais votado
17/09/2016
procedure TServerMethods1.DSPessoaBeforeUpdateRecord(Sender: TObject;
SourceDS: TDataSet; DeltaDS: TCustomClientDataSet; UpdateKind: TUpdateKind;
var Applied: Boolean);
begin
form2.label1.Text:=DeltaDS.FieldByName('nmpessoa').NewValue;
end;
pesso para ele mostrar o novo valor ele mostrar correto e não retorna erro.
Amaro Loch
Mais Posts
17/09/2016
Kellson
17/09/2016
Amaro Loch
17/09/2016
Amaro Loch
17/09/2016
Kellson
17/09/2016
Kellson
17/09/2016
Kellson
with ClientDataSet1 do // inserir novo registro
begin
edit;
append;
end;
with ClientDataSet1 do // gravar os dados
begin
try
Post;
except
ShowMessage('Erro na hora de inserir os dados');
exit;
end;
ApplyUpdates;
Refresh;
end;
17/09/2016
Amaro Loch
ClientDataSet1.Params.ParamByName('PPESSOA').Value:=5223;
ClientDataSet1.Open;
ClientDataSet1.edit;
ai tenho um dbedit na tela pra alterar o nome do cliente;
depois
ClientDataSet1.Post;
ClientDataSet1.ApplyUpdates(0);
isso é so um teste que estou fazendo, meu código não é tão ruim assim rsrsrs
17/09/2016
Kellson
faça assim deixando seu dataset ativo mesmo.
-----------------------------------------------------------------
if (Edt_PPESSOA.text<>'') then
begin
with clientdataset do
begin
edit;
append;
FieldByName('PPESSOA').Value:=EDT_PPESSOA.TEXT;
post;
applyupdates;
refresh; \\\\para atualizar os registros caso seja um update,delete,insert
end;
End else
begin
showmessa('campo obrigatorio'); \\\\ ou usar um messagedlg mterror, mtwarning,mtinformation
end;
17/09/2016
Kellson
insert abre uma nova linha abaixo do ultimo registro
append abre uma nova linha acima do primeiro registro
caso use commandtext entao ai muda a rotina:
with clientdataset do
begin
active:=false;
CommandText:=''; //mesmo que clear
commandtext:='insert into tabela(colunas) values(valores);
execute;
CommandText:=''; //mesmo que clear
commandtext:='select * from Tabela'; // se nao usar select retornara um exception dizendo que nao houve retorno de dados;
active:=true;
end;
17/09/2016
Kellson
insert abre uma nova linha abaixo do ultimo registro
append abre uma nova linha acima do primeiro registro
caso use commandtext entao ai muda a rotina:
with clientdataset do
begin
active:=false;
CommandText:=''''; //mesmo que clear
commandtext:=''insert into tabela(colunas) values(valores);
execute;
CommandText:=''''; //mesmo que clear
commandtext:=''select * from Tabela''; // se nao usar select retornara um exception dizendo que nao houve retorno de dados;
active:=true;
end;
18/09/2016
Amaro Loch
Meu problema esta no lado do servidor a informação chega até o servidor de aplicação o problema que a informação não chega ano banco de dados
18/09/2016
Amaro Loch
Meu problema continua tenho uma aplicação 3 camadas quando dou ApplyUpdates no ClientDataSet ele envia os dados para o servidor só que ele não grava no banco de dados;
Estrutura
Servidor
FDConnection
FDQuery
DataSetProvider
Cliente
DBXConnection
DSProviderConnection
ClientDataSet
19/09/2016
Kellson
DataSetProvider1| Object inspector>>Options>>PoAllowCommandText , e tambem na query no "SERVIDOR" desmarquei uma opçao ChachedUpdates
amigo se também tiver essas opções marcadas e desmarcadas no seu projeto, então passo, pois aqui funcionou normalmente. UP
19/09/2016
Kellson
somente receber values e dar um apply?
se quiser te mando um exemplo de DS com dbacess mdb..Srv e client , porem em Berlin 10.1, ou Xe6
19/09/2016
André Coimbra
CommitUpdates;
Clique aqui para fazer login e interagir na Comunidade :)