Jump to content

dev botao

Dúvida ApplyUpdates


gleikocarmelo
  • Este tópico foi criado há 2103 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá pessoal;

Minha dúvida não tem muito haver com o acbr, mas pesquisei bastante e em cada lugar que olhei fala uma coisa.

A questão é: Como usar corretamente o ApplyUpdates? 0 ou -1? e Porque? e Como capturar o erro apresentado, li alguma coisa referente ao ReconcileError?

Já li que com o (0) não gera erro, já li que com o (-1) não gera erro, já li que com o (0) não gera erro e mesmo assim grava no banco, já li de tudo....

Desde já agradeço.

Edited by gleikocarmelo
Link to comment
Share on other sites

21 minutos atrás, gleikocarmelo disse:

Olá pessoal;

Minha dúvida não tem muito haver com o acbr, mas pesquisei bastante e em cada lugar que olhei fala uma coisa.

A questão é: Como usar corretamente o ApplyUpdates? 0 ou -1? e Porque? e Como capturar o erro apresentado, li alguma coisa referente ao ReconcileError?

Já li que com o (0) não gera erro, já li que com o (-1) não gera erro, já li que com o (0) não gera erro e mesmo assim grava no banco, já li de tudo....

Desde já agradeço.

É interessante você especificar qual o banco de dados e o componente que você está usando.

Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link to comment
Share on other sites

applyupdates não dispara erro, contudo gera internamente e pode ser tratado no método ReconcileError, (mensagens, dados, retorno, etc). O retorno de apllyupdates determina o que sucedeu, se retornar 0 entao sucesso, caso contrario deu xatice. Já o parâmetro indica o nível de erros que queres tratar, 0 termina assim que der erro, -1 não tem limite nos erros, 1/2/3...x termina quando der um erro no nivel indicado.

Seja como for a recomendação geral é não usar applyupdates e sim clientdatasets tem o mesmo proposito e muito mais controle

Link to comment
Share on other sites

6 horas atrás, 3Soft Sistemas disse:

applyupdates não dispara erro, contudo gera internamente e pode ser tratado no método ReconcileError, (mensagens, dados, retorno, etc). O retorno de apllyupdates determina o que sucedeu, se retornar 0 entao sucesso, caso contrario deu xatice. Já o parâmetro indica o nível de erros que queres tratar, 0 termina assim que der erro, -1 não tem limite nos erros, 1/2/3...x termina quando der um erro no nivel indicado.

Seja como for a recomendação geral é não usar applyupdates e sim clientdatasets tem o mesmo proposito e muito mais controle

Quando se referiu a (-1 não tem limite nos erros) significa que o registro será salvo no banco independente se houve erros ou não?

E estou querendo tratar esses possíveis erros é no componente Clientdataset mesmo.

Link to comment
Share on other sites

Citar

The client dataset's ApplyUpdates method does the following:

  • It indirectly calls the provider's ApplyUpdates method. The provider's ApplyUpdates method writes the updates to the database, source dataset, or XML document and attempts to correct any errors it encounters. Records that it cannot apply because of error conditions are sent back to the client dataset.
  • The client dataset 's ApplyUpdates method then attempts to reconcile these problem records by calling the Reconcile method. Reconcile is an error-handling routine that calls the OnReconcileError event handler. You must code the OnReconcileError event handler to correct errors. For details about using OnReconcileError, see Reconciling Update Errors.
  • Finally, Reconcile removes successfully applied changes from the change log and updates Data to reflect the newly updated records. When Reconcile completes, ApplyUpdatesreports the number of errors that occurred.

não. significa que ai continuar a tentar cumprir o proposito da função até o seu final... independentemente dos erros gerados.  qq comando que gere erro certamamente não sera gravado.

Edited by 3Soft Sistemas
Link to comment
Share on other sites

Bom dia, achei interessante essa questao entre usar ApplyUpdate ou ClientDatasets , gostaria de saber como eu faco pra usar e gravar usando o ClientDatasets , particularmente eu sempre fiz uso do ApplyUpdates, entao me ensine como posso usar o ClientDatasets  , detalhe estou usando Firebrid 2.5, Delphi7 e os componentes DbExpress...Desde ja agradeco..

Link to comment
Share on other sites

  • 4 weeks later...

Everson Luis, 

Eu uso os componentes ZeosLib no Delhi 7. Usando apenas objetos DataSet (zquery) + DataSource padrão do delphi. + objeto ZupdateSQL (ZeosLib). Este desenho você terá os mesmo controle de uso que fazia quando usamos os objetos Table do Delphi.

qryCliente (contendo o SQL que busca pela chave primaria da tabela todos os campos da mesma).

Você deverá dizer no Zquery qual é o UpdateSQL.

updCliente( clique duplo, ele abre o editor de Fields, só pedi gerar o sql dos comandos (INSERT, UPDATE e delete).

 

O código poderá colocar no evento que você terá as informações para passar no parâmetro da query.

qryCliente.close;

qryCliente.Params[0].value:= 'valor';

qryCliente.open;

if (qryCliente.RecordCount > 0 ) then

begin

qry.Cliente.edit;

end

else

begin

qryCliente.insert;

end;

 

Para salvar os dados:

try

 if (dsCliente.State in [dsInsert, dsEdit]) then

begin

qryCliente.post; //salva  as alterações.

qryCliente.Connection.commit; //Apos a operação de POST, você faz o COMMIT da transação. 

end;

except on ex:exception do

begin

qryCliente.Connection.Roolback;

MessageBox(handle,PAnsiChar(ex.Message),'ERRO: Gravar dados',MB_OK);

end;

end;

 

Espero que consiga de ajudar. Qualquer coisa me fala que preparo um exemplo para você. 

 

 

Link to comment
Share on other sites

  • 2 years later...

Fabiano, boa tarde! estou novamente acerca do problema de gravacao com Appyupdate(-1), gostaria se vc pudesse me enviar um exemplo de uso com varias tabelas simultaneas, pra que eu ao final possa atualizar no BANCO DE DADOS tudo, seria o mesmo processo que ao fazer o faturamento, pra atualizar varias tabelas ao mesmo tempo

Desde ja agradeco...

Link to comment
Share on other sites

  • 1 month later...
  • Administradores

Boa tarde.

Este tópico está inativo a algum tempo e por isso será fechado, caso necessário favor criar um novo tópico.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link to comment
Share on other sites

  • Este tópico foi criado há 2103 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.