Ir para conteúdo
  • Cadastre-se

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Comprar

Impressora de Etiquetas L42

Fabricada no Brasil. Benefícios exclusivos
Garantia de 18 meses   Visor na Tampa   Protocolos PPLA e PPLB
Portas USB e Serial   Baixo Custo de Manutenção   Financiamento através do BNDES

Comprar

gleikocarmelo

Dúvida ApplyUpdates

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.

Editado por gleikocarmelo

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Editado por 3Soft Sistemas

Compartilhar este post


Link para o post
Compartilhar em outros 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..

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está agora fechado para novas respostas

×