Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
ODIRLEIMAIER Aprendiz

Registrado: Sexta-Feira, 21 de Agosto de 2009 Mensagens: 170
|
Enviada: Qui Fev 25, 2010 3:30 pm Assunto: Gravar registros, DBExpress- Não da certo |
|
|
Companheiros, sempre usei componentes IB agora estou tentando usar os componentes da aba DBExpress porque dizem que é melhor, mas ja tenho um problema, Insiro um registro e clico em salvar, aprentemente ele salva, mas ai fecho o aplicativo e reabro-o e não salvo nada, por que isso??? |
|
Voltar ao Topo |
|
 |
DonOctavioDelFlores Colaborador

Registrado: Quarta-Feira, 12 de Setembro de 2007 Mensagens: 2630 Localização: Pra lá de Bagda
|
Enviada: Qui Fev 25, 2010 3:39 pm Assunto: |
|
|
"porque dizem que é melhor"
Sem apply updates o negocio nao vai.
e fica com o componente que voce conhece bem. _________________ “The problem with the world is that everyone is a few drinks behind.” Humphrey Bogart |
|
Voltar ao Topo |
|
 |
rafmattos Colaborador

Registrado: Quinta-Feira, 11 de Fevereiro de 2010 Mensagens: 3416 Localização: Campo Grande/MS
|
Enviada: Qui Fev 25, 2010 3:40 pm Assunto: |
|
|
da um ClientDataSet.ApplyUpdate(-1) |
|
Voltar ao Topo |
|
 |
ODIRLEIMAIER Aprendiz

Registrado: Sexta-Feira, 21 de Agosto de 2009 Mensagens: 170
|
Enviada: Qui Fev 25, 2010 4:25 pm Assunto: a |
|
|
rafmattos onde devo colocar esse codigo |
|
Voltar ao Topo |
|
 |
rafmattos Colaborador

Registrado: Quinta-Feira, 11 de Fevereiro de 2010 Mensagens: 3416 Localização: Campo Grande/MS
|
Enviada: Qui Fev 25, 2010 4:31 pm Assunto: Re: a |
|
|
ODIRLEIMAIER escreveu: | rafmattos onde devo colocar esse codigo |
No botão salvar |
|
Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Qui Fev 25, 2010 9:03 pm Assunto: |
|
|
Quando em eu usava este componente em 2000 e antigamente fazia assim.
Código: | if dsPadrao.DataSet.State in [dsEdit, dsInsert] then
try //começo do trecho try/except
dsPadrao.DataSet.Post;
(dsPadrao.DataSet as TClientDataSet).ApplyUpdates(0);
MessageDlg('Dados gravados com sucesso', mtInformation, [mbOk],0);
AtualizaRefresh(); //É uma procedure que atualiza os dados.
except
on E:Exception do
begin
MessageDlg('Ocorreu um erro neste processo. ' +#13#13 +'Erro gerado: '+#13+
E.Message + #13#13 + 'Todo o processo foi abortado!', mtError, [mbOk],0);
Abort;
DSPadrao.DataSet.Cancel;
end;
end; //Final try/except |
_________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
 |
seymon Novato

Registrado: Domingo, 21 de Fevereiro de 2010 Mensagens: 71
|
Enviada: Qui Fev 25, 2010 10:29 pm Assunto: |
|
|
na última linha de comando do botão salvar coloque o seguinte:
ClientDataSet.ApplyUpdate(-1); |
|
Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Sex Fev 26, 2010 1:12 am Assunto: |
|
|
Neste caso falta o tratamento de exceções e de erros. Caso vc de um applyudates(0) o registro é gravado e a quantidade de erros esperada não pode ser diferente de zero, neste caso ele avisa ao usuário que ocorreu um erro no meio do processo e que não foi gravado o registro, isto significa que o número de erros esperado é zero, ou seja MaxErrors = 0, se for colocado para -1 significa que não há limite para o número de erros. Isto para mim não parece ser uma boa coisa, por isto sempre defino o applyupdates como zero. Vc pode colocar num try .. except tb para capturar outros erros que ocorrem ao dar o applyupdates.
Lmebrando que antes é bom iniciar uma trasação.
Código: |
var (Deixei Global)
Transacao: TTransactionDesc;
..
...
begin
Transacao.IsolationLevel := xilREADCOMMITTED;
// pode ser um número aleátório...
// no meu tenho uma funçao que gera este número
Transacao.TransactionID := 1;
SQLConnection1.StartTransaction(Transacao);
try
if cdsTabela.ApplyUpdates(0) <> 0 then
begin
if SQLConnection1.InTransaction then
SQLConnection1.Rollback(Transacao);
ShowMessage('Ocorreu um erro ao tentar aplicar o applyupdates') ;
end
except
On E: EDataBaseError do
begin
SQLConnection1.Rollback(Transacao);
ShowMessage('Ocorreu uma exceção bla bla bla. Mensagem Original: ' + E.Message);
end;
end;
...
...
|
Para certo Erros o melhor é utilizar a tela de ReconcileError que é uma tela do proprio delphi que tem ela no reposítório, de uma pesquisada a respeito..
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
Voltar ao Topo |
|
 |
juniormiranda Experiente


Registrado: Segunda-Feira, 13 de Fevereiro de 2006 Mensagens: 413
|
Enviada: Sex Fev 26, 2010 9:45 am Assunto: |
|
|
johnny-walker escreveu: |
Para certo Erros o melhor é utilizar a tela de ReconcileError que é uma tela do proprio delphi que tem ela no reposítório, de uma pesquisada a respeito..
bye |
Alguém aqui da lista utiliza a tela de ReconcileError em suas aplicações?
Pergunto porque ela raramente é sugerida.
[]'s _________________ Júnior Miranda
Analista de Sistemas. |
|
Voltar ao Topo |
|
 |
|