USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  tipo de cursor para atualização
Futura
PORTO FERREIRA
SP - BRASIL
Postada em 23/01/2006 07:15 hs            
estou testando, para ver qual cursor uso para atualizar, e ao pegar o próximo código com o select max, percebi que ao abrir o rs desta forma:
 Dim rs As ADODB.Recordset
 Set rs = New ADODB.Recordset
 sql = "SELECT Max(codigo) AS codigo FROM usuarios"
 rs.Open sql, Cnn, adOpenForwardOnly, adLockReadOnly
 txtcodigo = (rs!codigo + 1)
simulando um ambiente em rede, clicando enter ao mesmo tempo em duas maquinas, dava erro, pois o numero do código vinha repetido, mas ao abir desta outra forma:
 Dim rs As ADODB.Recordset
 Set rs = New ADODB.Recordset
 sql = "SELECT Max(codigo) AS codigo FROM usuarios"
 rs.Open sql, Cnn, adOpenKeyset, adLockOptimistic
 txtcodigo = (rs!codigo + 1)
não deu mais problemas, então gostaria de saber se esta diferença se deve, ao tipo do cursor, ou ao bloqueio ? , e ainda, abaixo a rotina toda da atualização, que verifica, se é novo registro, ou alteração, gostaria de opinião dos colegas a respeito.
 
If Trim(txtcodigo.Text) = Empty Then
   Dim rs As ADODB.Recordset
   Set rs = New ADODB.Recordset
   sql = "SELECT Max(codigo) AS codigo FROM usuarios"
   rs.Open sql, Cnn, adOpenKeyset, adLockOptimistic
   txtcodigo = (rs!codigo + 1)
   sql = "insert into usuarios (codigo,nome,nomecompleto,senha,cor,tipo) values (" &   txtcodigo.Text & ",'" & txtuser.Text & "','" & txtnome.Text & "','" & txtsenha.Text & "','" & cor & "','" & wstipo & "')"
   rs.Close
   Set rs = Nothing
Else
   sqlcmd = " update usuarios set codigo =" & txtcodigo.Text & ",nome = '" &  txtuser.Text & "',nomecompleto = '" & txtnome.Text & "',senha = '" & txtsenha.Text & "',cor = '" & cor & "'"
   sqlcmd = sqlcmd & " where [codigo] =" & txtcodigo.Text & ""
End If
Cnn.Execute (sqlcmd)
 
     
Elieser Topassi
Pontos: 2843 Pontos: 2843
SÃO JOSÉ DO RIO PRETO
SP - BRASIL
Postada em 23/01/2006 09:32 hs            
Amigo
Qto ao tipo de cursor, o travamento faz a diferença. Se vc usa ReadOnly, duas maquinas podem acessar ao mesmo tempo... já se for LockOptimistic, vai manter bloqueado o registro enquanto o rs estiver aberto...
Qto a rotina de atualização, nao tem nenhum erro aparente, mas vc precisa tomar cuidado com o ambiente de rede... tipo se um cliente solicitar um codigo, outro solicitar o seguinte, gravar, e o primeiro clietne cancelar, vc perdeu um codigo no SEED do banco... isso pode gerar problemas de performance... eu sugeriria q vc nao pegasse simplesmente o maximo, mas sim o "primeiro nao cadastrado"... tipo se tiver 1, 2, 4... q vc for inserir, colocaria o codigo 3... eu faço assim... Ou entao usar campos Autonumeração do banco...
 
Bem... sao opinioes... flw!


Elieser Carlos Topassi
Analista de Sistemas - Desenvolvedor VB/ASP/.Net

e-mail/msn:
elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil
_____________________________________________________
Emoções "O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)

     
Página(s): 1/1    

CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página