Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
258
Assunto : Visual Basic
Titulo: Configurando o gerenciamento de Locks via ADO

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Conforme é visto no treinamento de técnicas de desenvolvimento com Visual Basic, o ADO automaticamente impede que 2 usuários alterem em conjunto a mesma informação no servidor.

O ADO faz isso colocando na query de atualização uma clausula where pesquisando pelos valor original de todos os campos atualizados. Assim sendo, se alguém alterou o campo anteriormente o update não encontra a informação e a atualização falha, controlando assim a concorrência de dados.

Veja um exemplo :

rsCustomers.CursorLocation = adUseClient
rsCustomers.Open "SELECT * FROM Customers", cnNWind, _
adOpenStatic, adLockOptimistic, adCmdText
rsCustomers.Fields("CompanyName").Value = "Acme"
rsCustomers.Update

Essa atualização fará com que o ADO envie para o banco a seguinte instrução :

UPDATE Customers SET CompanyName = 'Acme'
WHERE CustomerID = 'ALFKI' AND CompanyName = 'Alfreds Futterkiste'

Observe que o ADO inseriu na instrução a chave primária e uma pesquisa pelo valor original do campo alterado. Até aqui, nenhuma novidade, isso é visto em nosso treinamento.

Mas essa forma de trabalho precisa ser configurável. Em alguns sistemas eu posso tanto precisar de mais segurança como de menos segurança :

A) Eu posso desejar sempre sobrepor os dados, mantendo a última atualização. Executar a query acima, neste caso, vira perda de performance

B) Eu posso desejar não permitir nenhuma alteração simultânea, ao invés de fazer a query apenas pelos campos alterados fazer por todos, gerando um erro caso qualquer campo do registro tenha sido alterado por outro usuário antes desta gravação.

Para realizar esta configuração existe uma propriedade dinâmica do recordset chamada "Update Criteria". Veja os valores que ela pode receber :

adCriteriaKey = 0

Utiliza somente a chave primária. Neste caso os dados serão sempre sobrepostos

adCriteriaAllCols = 1

Utiliza todas as colunas no critério. Neste caso qualquer alteração nos campos do registro será identificada.

adCriteriaUpdCols = 2 (Default)

Utiliza apenas as colunas que forem atualizadas no critério. Se outra coluna houver sido atualizada, isso não será identificado, gerando uma mesclagem do registro.

adCriteriaTimeStamp = 3

Utiliza apenas a coluna de timestamp (recurso do sql server) para atualização. Tem o mesmo efeito que adCriteriaAllCols mas com uma performance muito melhor.

Veja a síntaxe :

rs.properties("update criteria").value=adcriteriakey

Mais informações em http://support.microsoft.com/default.aspx?scid=kb;EN-US;q190727

Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br