﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>StrataFrame Forum » StrataFrame Application Framework - V1 » WebForms (How do I?)  » Tratando concorrência com SF.</title><generator>InstantForum 2017-1 Final</generator><description>StrataFrame Forum</description><link>http://forum.strataframe.net/</link><webMaster>StrataFrame Forum</webMaster><lastBuildDate>Tue, 09 Jun 2026 14:02:21 GMT</lastBuildDate><ttl>20</ttl><item><title>Tratando concorrência com SF.</title><link>http://forum.strataframe.net/FindPost14660.aspx</link><description>Olá.&lt;P&gt;Como tratar a concorrência durante a inclusão de registros com SF?&lt;/P&gt;&lt;P&gt;Ex:&amp;nbsp; Tenho um form para cadastro de clientes que tem chave primária auto-incremento. Se eu tiver o mesmo form aberto em duas estações e salvar ao mesmo tempo um cadastro, como trato a chave? Já que nesse momento as duas estações vão estar com o mesmo código de cliente auto-incremento em memória.&lt;/P&gt;&lt;P&gt;Abraços.</description><pubDate>Tue, 11 Mar 2008 15:56:21 GMT</pubDate><dc:creator>Valdair Ziegler</dc:creator></item><item><title>RE: Tratando concorrência com SF.</title><link>http://forum.strataframe.net/FindPost14803.aspx</link><description>[quote][b]Valdair Ziegler (03/11/2008)[/b][hr]Ok Ivan.&amp;nbsp; Eu&amp;nbsp;de novo.&lt;P&gt;Caso eu não queira mostrar a janela de decisão ao usuário e preservar os valores atuais do banco como faço?[/quote]&lt;P&gt;&lt;SPAN id=ctl02_ctlTopic_ctlPanelBar_ctlTopicsRepeater_ctl14_lblFullMessage&gt;Bom, se&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;você não quer que a janela entre em ação, você pode desligar a propriedade AutoHandleCollisions do&amp;nbsp;form e gerenciar o&amp;nbsp;evento ConcurrencyException você mesmo, tomando as decisões que achar melhor.&lt;/SPAN&gt;</description><pubDate>Tue, 11 Mar 2008 15:56:21 GMT</pubDate><dc:creator>Ivan George Borges</dc:creator></item><item><title>RE: Tratando concorrência com SF.</title><link>http://forum.strataframe.net/FindPost14799.aspx</link><description>Ok Ivan.&amp;nbsp; Eu&amp;nbsp;de novo.&lt;/P&gt;&lt;P&gt;Caso eu não queira mostrar a janela de decisão ao usuário e preservar os valores atuais do banco como faço?</description><pubDate>Tue, 11 Mar 2008 14:36:21 GMT</pubDate><dc:creator>Valdair Ziegler</dc:creator></item><item><title>RE: Tratando concorrência com SF.</title><link>http://forum.strataframe.net/FindPost14793.aspx</link><description>Além disto, faça um Search no Forum com a palavra "concurrency".&lt;/P&gt;&lt;P&gt;Você vai receber links bastante interessantes sobre o assunto.&lt;/P&gt;&lt;P&gt;Abraços.</description><pubDate>Tue, 11 Mar 2008 10:37:18 GMT</pubDate><dc:creator>Ivan George Borges</dc:creator></item><item><title>RE: Tratando concorrência com SF.</title><link>http://forum.strataframe.net/FindPost14792.aspx</link><description>Bom, primeiro, só para chamar um pouco a atenção para o detalhe do RowVersion... você não deveria usar a PK do seu cliente, pois este campo de RowVersion será usado pelo StrataFrame para incrementar o número de versão do seu registro. Então, a cada alteração que houver no mesmo, ele será incrementado de 1, e assim que o SF vai saber que houve uma alteração por outro usuário quando você for salvar a sua versão do registro. Então, você deveria criar um campo em cada uma de suas tabelas exclusivamente para esta função, provavelmente do tipo Integer. Por exemplo, na minha tabela de Clientes, ele se chama cli_version.&lt;P&gt;Aí, quando houver problema de concorrência, seu usuário receberá a seguinte tela quando ele for salvar o registro: &lt;P&gt;&lt;IMG src="http://forum.strataframe.net/Uploads/Images/94a7687b-a197-460b-b44c-14a8.png"&gt;&lt;P&gt;Nesta tela de Diálogo, você tem o valor do seu campo, e o valor que agora está no servidor, já que alguém editou o mesmo registro e salvou antes de você. Neste momento, seu usuário terá que decidir o que irá fazer.</description><pubDate>Tue, 11 Mar 2008 10:36:10 GMT</pubDate><dc:creator>Ivan George Borges</dc:creator></item><item><title>RE: Tratando concorrência com SF.</title><link>http://forum.strataframe.net/FindPost14790.aspx</link><description>Oi Ivan.&amp;nbsp;Sem problemas....&lt;P&gt;Segui as dicas que&amp;nbsp;voçê me passou&amp;nbsp;e o Help, implementei a concorrência e funcionaou legal quanto a inserção. Tenho uma outra situação que ainda não consegui resolver.&lt;/P&gt;&lt;P&gt;Como que o SF trata a concorrência durante a edição do mesmo registro. Vamos imaginar que um usuário está com o cadastro de clientes e está editando o cliente Número 10. Ao mesmo tempo temos outro usuário com o cadastro de clientes e também está editando o cliente Número 10. O primeiro altera os dados do endereço, o segundo altera os dados de telefone. como que posso tratar&amp;nbsp;esse tipo de concorrência com SF para que os dados dos dois usuários sejam salvos?&lt;/P&gt;&lt;P&gt;Estou usando "OptimisticRowVersion" com a PK de clientes. ´</description><pubDate>Tue, 11 Mar 2008 09:21:18 GMT</pubDate><dc:creator>Valdair Ziegler</dc:creator></item><item><title>RE: Tratando concorrência com SF.</title><link>http://forum.strataframe.net/FindPost14674.aspx</link><description>Oi Valdair, desculpa por ter errado seu nome... :blush:</description><pubDate>Wed, 05 Mar 2008 16:03:01 GMT</pubDate><dc:creator>Ivan George Borges</dc:creator></item><item><title>RE: Tratando concorrência com SF.</title><link>http://forum.strataframe.net/FindPost14673.aspx</link><description>Olá Valadair.&lt;/P&gt;&lt;P&gt;O SF fará isto para você.&lt;/P&gt;&lt;P&gt;Só pra te situar no Help: Application Framework / Business Layer / Common Business Object Tasks / Implementing Concurrency&lt;/P&gt;&lt;P&gt;Para começar, no DDT (Database Deployment Toolkit), click com o botão da direita em sua tabela e click Table Properties. Note a figura abaixo, eu estou ordenando ao DDT que crie as SP para mim, em UPDATE Stored Procedure, eu escolhi em Concurrency "Optmistic Row Version", que é a estratégia que eu quero usar para checar uso concorrente do mesmo registro, e logo abaixo, em Version Field, eu coloquei cli_version, que é um campo Integer que eu crio em minha tabela para cuidar de concorrência.&lt;/P&gt;&lt;P&gt;&lt;IMG src="http://forum.strataframe.net/Uploads/Images/9c6dad78-cd03-4d8f-a98c-bab0.jpg"&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG src="http://forum.strataframe.net/Uploads/Images/32d8011b-da2e-4e23-828f-d1ff.jpg"&gt;&lt;/P&gt;&lt;P&gt;Ai, quando você criar seu BO para sua tabela de Clientes, você vai nas propriedades de CRUD, e seta o UpdateConcurrencyType para OptimisticRowVersion, e o RowVersionOrTimestampColumn para o seu campo de controle de versão, neste caso cli_version.&lt;/P&gt;&lt;P&gt;&lt;IMG src="http://forum.strataframe.net/Uploads/Images/e497d8e7-bdae-4d3d-b4a6-5596.jpg"&gt;&lt;/P&gt;&lt;P&gt;Espero que te ajude por aí. &lt;/P&gt;&lt;P&gt;Abraços.</description><pubDate>Wed, 05 Mar 2008 16:02:07 GMT</pubDate><dc:creator>Ivan George Borges</dc:creator></item></channel></rss>