Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Estou com um problema e preciso de uma ajuda:
Tenho que travar a tabela para executar um procedimento, mas da maneira que fiz está me trazendo problema, abaixo a rotina.
Tem me dado muito problema, se por algum motivo não libera, aí ninguém consegue fazer nada, só entrando no banco e trocando o valor da variavel.
Se alguém tiver uma sujestão para resolver o problema, eu agradeço...
Private Sub cmdConfirma_Click()Dim Sql As String, nTenta As Integer fEndereco = "" Do nTenta = nTenta + 1 Sql = "Select * From config" rstConfig.Open Sql, cnn, adOpenKeyset, adLockOptimistic If rstConfig!trava = "0" Then[color="#FF0000"]Nesse momento eu mudo o valor dessa variavel para "1" [/color] rstConfig!trava = "1" rstConfig.Update rstConfig.Close fEndereco = CriaCodigo(fEndereco, "movimento") Exit Do End If If nTenta > 2 Then MsgBox "Tentativa de gerar documento falhou ! Entre em contato com o administrador !", , "Atenção !" rstConfig.Close Exit Sub End If rstConfig.Close Loop txtAutenticacao.Text = txtAutenticacao.Text & " " & fEndereco & v1tipo Call Grava lEdit = True cmdSair.Enabled = False cmdAutenticar.Enabled = True cmdDescarregar.Enabled = True cmdAutenticar.SetFocus cmdConfirma.Enabled = False txtCodigo.Enabled = False txtBloco1.Enabled = False txtBloco2.Enabled = False txtBloco3.Enabled = False txtBloco4.Enabled = False txtDv1.Enabled = False txtDv2.Enabled = False txtDv3.Enabled = False txtDv4.Enabled = False End Sub
Public Function CriaCodigo(cNada, cAlias)Dim rstMovimento As New ADODB.RecordsetDim Ok As BooleanDim Criterio As StringDim NovoCodigo As LongDim Sql As String Sql = "Select * From config" rstConfig.Open Sql, cnn, adOpenKeyset, adLockOptimistic Ok = True If Right(Trim(rstConfig!endereco), 2) = Right(Year(Date), 2) Then 'Dentro do mesmo ano While Ok ' Pega o código existente CriaCodigo = Mid(rstConfig!endereco, 1, Len(Trim(rstConfig!endereco)) - 2) & Right(Year(Date), 2) ' Cria um novo código NovoCodigo = Mid(rstConfig!endereco, 1, Len(Trim(rstConfig!endereco)) - 2) ' Soma +1 NovoCodigo = NovoCodigo + 1 ' Guarda no novo código rstConfig!endereco = NovoCodigo & Right(Year(Date), 2) rstConfig.Update ' Pesquisa se já foi usado, se já foi, faz o loop, se não, escapa e procegue If cAlias = "movimento" Then Sql = "Select * From movimento " Sql = Sql & "Where endereco = '" & CriaCodigo & "'" rstMovimento.Open Sql, cnn, adOpenKeyset, adLockOptimistic' MsgBox "olá o código criado foi " & CriaCodigo If rstMovimento.EOF Then[color="#FF0000"]E libero aqui [/color] rstConfig!trava = "0" rstConfig.Update rstConfig.Close Ok = False End If rstMovimento.Close End If Wend Else 'Virou o ano rstConfig!endereco = "1" & Right(Year(Date), 2) While Ok ' Pega o código existente CriaCodigo = Mid(rstConfig!endereco, 1, Len(Trim(rstConfig!endereco)) - 2) & Right(Year(Date), 2) ' Cria um novo código NovoCodigo = Mid(rstConfig!endereco, 1, Len(Trim(rstConfig!endereco)) - 2) ' Soma +1 NovoCodigo = NovoCodigo + 1 ' Guarda no novo código rstConfig!endereco = NovoCodigo & Right(Year(Date), 2) rstConfig.Update ' Pesquisa se já foi usado, se já foi, faz o loop, se não, escapa e procegue If cAlias = "movimento" Then Sql = "Select * From movimento " Sql = Sql & "Where endereco = '" & NovoCodigo & "'" rstMovimento.Open Sql, cnn, adOpenKeyset, adLockOptimistic' MsgBox "olá o código criado foi " & CriaCodigo If rstMovimento.EOF Then[color="#FF0000"]E libero aqui [/color] rstConfig!trava = "0" rstConfig.Update rstConfig.Close Ok = False End If rstMovimento.Close End If Wend End If End FunctionCarregando comentários...