Invalid Parameter

28/07/2019

0

Estou iniciando o desenvolvimento de um sistema utilizando o firemonkey.
1) Três camadas com o datasnap.
2) Do lado do servidor estão a query, datasetprovider, etc
3) Do lado do cliente a clientdataset devidamente conectada com o servidor
4) Num formulário de cadastro, após trazer o registro tento dar um post (gravar) e um applyupdates.
5) Surge então o erro: invalid parameter.
6) No formulário o bindingsource está apontada para o clientdataset correto, tanto que é trazido o registro solicitado.
7) Como o registro é pesquisado através da propriedade params(Select * from tabusu Where Id =:PId), já configurei a propriedade dataType da query para ftString e a propriedade paramType para input.
8) O código de edição: if DM.cdsUsu.Active = True then
DM.cdsUsu.Close;
DM.cdsUsu.Params[0].AsString:= edtAlt.Text;
DM.cdsUsu.Open;
DM.cdsUsu.Edit;
9) o código de gravação: DM.cdsUsu.Post();
DM.cdsUsu.ApplyUpdates(0);
Josafar Silva

Josafar Silva

Responder

Posts

13/08/2019

Anderson Gonçalves

Sr. Josefar Silva.

Faz assim que você pode até reaproveitar a Query para outro comando depois se quiser.

With DM.cdsUsu do
begin
close;
sql.clear;
sql.add('Select * from tabusu');
sql.add('where id = :Pid');
ParamByName('Pid').asString := edtAlt.Text;
Open;
// Aqui você vai verificar se ele trouxe algum resultado da consulta
if Dm.cdsUsu.Recordcount = 0 then
begin
// Se não encontrou nenhum registro ele envia msg para o usuário informando.
ShowMessage('Nenhum registro encontrado para efetuar a operação!');
Exit;
end
else
begin
// Se encontrar ele vai fazer o comando de gravar numa outra query de um outro modo.
With Dm.cdsUsuGravar do
begin
close;
sql.clear;
sql.add('insert into tbusu');
sql.add('(campo1, campo2, campo3)'); // preencha os campos requeridos pelo menos da tabela.
sql.add('values');
sql.add('(:Pcampo1, :Pcampo2, :Pcampo3)'); // Aqui você informa os parametros que receberão os dados dos edits e passaram para os campos.
ExecSQL;
end;
end;
end;

Só uma dica a mais....

Cuidado com a sua nomenclatura de desenvolvimento, não tente evitar trabalho de digitação se não só você vai entender o que está desenvolvido, isso é prejudicial mais tarde, por exemplo:

campos: stConta (Status da Conta)
Tabela: tbCli (Tabela de Cliente) -- Observe que parece com a sua tbUsu, mas seria cliente pessoa fisica ou juridica? seria cliente ou clima? ou qualquer coisa que comece com cli? eu juro pode atrapalhar muito outra pessoa de ajudar você mais tarde.
A não ser que você queira desenvolver e logo depois criar um documento com todas as suas nomenclaturas de padronização para poder alguém ler antes de tentar te ajudar, coisa que eu realmente não faria se estivesse tudo minimizado assim porque é muito trabalhoso, fora isso o senhor está de parabéns, veio do CLIPER?

Abraço, espero ter ajudado.

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar