Gravação de registro
Turma, utilizo delphi 2007 + mysql 5.0. Estou com problemas para gravar "atualizações no registro".
Tenho um botão "editar" que faz um edit na tabela.
Após as devidas alterações tenho o botão "gravar" que possui o código que segue abaixo. Algumas alterações não consigo efetivá-las, apesar de parecer que tudo funcionou bem.
Segue o código do botão gravar:
procedure TformCadProdutos.BtnGravarClick(Sender: TObject);
var
intCodigoProduto: integer;
begin
inherited;
if myDataModule.TbProdutos.state in [dsedit,dsinsert] then
begin
try
if chrModo = 'I' then
begin
myDataModule2.TbControle.Edit;
myDataModule2.TbControleCodigo_interno.AsInteger :=
myDataModule2.TbControleCodigo_interno.AsInteger + 1;
myDataModule2.TbControle.post;
myDataModule2.TbControle.ApplyUpdates(-1);
intCodigoProduto := myDataModule2.TbControleCodigo_interno.AsInteger;
myDataModule.TbProdutoscodigointerno.AsInteger := intCodigoProduto;
end;
myDataModule.TbProdutos.Post;
myDataModule.TbProdutos.ApplyUpdates(-1);
Mensagem('Alterações serão gravadas...');
chrModo := ' ';
MsgStatus('Dados gravados com sucesso...');
except
Mensagem('Não foi possível efetuar a gravação dos dados!');
end;
end
else
Mensagem('Não há alterações a serem gravadas !'); bloquearcampos(true);
Movefoco;
end;
var
intCodigoProduto: integer;
begin
inherited;
if myDataModule.TbProdutos.state in [dsedit,dsinsert] then
begin
try
if chrModo = 'I' then
begin
myDataModule2.TbControle.Edit;
myDataModule2.TbControleCodigo_interno.AsInteger :=
myDataModule2.TbControleCodigo_interno.AsInteger + 1;
myDataModule2.TbControle.post;
myDataModule2.TbControle.ApplyUpdates(-1);
intCodigoProduto := myDataModule2.TbControleCodigo_interno.AsInteger;
myDataModule.TbProdutoscodigointerno.AsInteger := intCodigoProduto;
end;
myDataModule.TbProdutos.Post;
myDataModule.TbProdutos.ApplyUpdates(-1);
Mensagem('Alterações serão gravadas...');
chrModo := ' ';
MsgStatus('Dados gravados com sucesso...');
except
Mensagem('Não foi possível efetuar a gravação dos dados!');
end;
end
else
Mensagem('Não há alterações a serem gravadas !'); bloquearcampos(true);
Movefoco;
end;
Luciano Avance
Curtidas 0
Respostas
Emerson Nascimento
01/07/2010
você está manipulando 3 datasets na sua rotina...
se você estiver utilizando dbExpress, implemente o evento OnReconcileError para que exiba a msg de erro na tela.
Basta a linha:
ShowMessage(E.Message);
se você estiver utilizando dbExpress, implemente o evento OnReconcileError para que exiba a msg de erro na tela.
Basta a linha:
ShowMessage(E.Message);
GOSTEI 0
Luciano Avance
01/07/2010
Retornou a mensagem "Record not found or changed by another user"
"REGISTRO NÃO ENCONTRADO OU ALTERADO POR OUTRO USUÁRIO".
Então ???
GOSTEI 0
Marco Salles
01/07/2010
Retornou a mensagem "Record not found or changed by another user"
"REGISTRO NÃO ENCONTRADO OU ALTERADO POR OUTRO USUÁRIO".
Então ???
como vc definiu os Providres Flags de sueu DataSet
e tb como Vc Definu o UpdataMode do Seu TDataSetProvider
Esta me perecendo erro nessas configuraçoes
GOSTEI 0
Luciano Avance
01/07/2010
Utilizo SimpleDataSet
Campos chaves:
pfInUpdate: True
pfInWhere: True
pfInKey: True
pfHidden: False
Demais Campos:
pfInUpdate: True
pfInWhere: False
pfInKey: False
pfHidden: False
GOSTEI 0
Marco Salles
01/07/2010
Aparentemente está correto
E como esta definido o Seu DataSetProvider (UpdateMode ) ???
GOSTEI 0
Luciano Avance
01/07/2010
Está como retornado acima. Retirei a informação do SDS.
GOSTEI 0