Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado (editado)

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.

Editado por gleikocarmelo
Postado
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]

Postado

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

Postado
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.

Postado (editado)
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.

Editado por 3Soft Sistemas
Postado

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..

  • 4 semanas depois ...
Postado

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ê. 

 

 

  • 2 anos depois...
Postado

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...

  • 1 mês depois ...
  • Administradores
Postado

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 !!

  • Este tópico foi criado há 2185 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.