Boa tarde a todos,
Estou meio que criando um sistema integrado via Excel (VBA), onde, diversas pessoas irão utilizar simultaneamente (para inserir, editar e consultar dados nos bancos de dados externos “.xlsx”).
Achei que a probabilidade de duas ou mais pessoas clicar no botão ‘Salvar’ (que roda a rotina de Conexão e RecordSet com SQL) fosse impossível, mas aconteceu.
Gostaria de identificar se algum outro usuário esta executando esta mesma rotina, se sim, quero um comando que entenda que a Conexão esta aberta e alguém esta inserindo dados no banco de dados, ou seja, de alguma forma queria criar um loop para que ele não execute o Insert e tente novamente até que a rotina do outro usuário termine.
Pensei em utilizar o comando Wait ou o Sleep, para aguardar que a rotina alheia termine e logo em seguida tentar executar novamente.
Seria possível??? Não estou conseguindo =(
Me ajudem, por favor...
Abaixo segue a macro que fiz(comentada):
Sub SalvarDt()
On Error GoTo TratarERRO
Dim strSQL As String, iSql
‘Abre a conexão:
Call ConnTbOrderDt
strSQL = "INSERT INTO [DataBase$] (Delivery, Destino, Usuario, DtHrIn, Status)"
strSQL = strSQL & " VALUES "
strSQL = strSQL & "('" & Plan4.Range("rngDLV") & "'," 'Delivery
strSQL = strSQL & "'" & Plan4.Range("rngOrdem") & "'," ' Destino
strSQL = strSQL & "'" & Application.UserName & "'," 'Usuario
strSQL = strSQL & "'" & CDate(Now) & "'," ' DtHrIn
strSQL = strSQL & "'" & "Pendente" & "');" ' Status
Debug.Print strSQL
‘**** // É aqui a questão: Gostaria de identificar se algum outro usuário esta executando esta mesma rotina, e se sim, _
‘****//quero um comando que entenda que a Conexão esta aberta e alguém esta inserindo dados no banco de dados, _
‘****// ou seja, de alguma forma queria criar um loop para que ele não execute o Inserte e tente novamente até que a rotina de outro usuário termine.
‘****// Pensei em utilizar o comando Wait ou o Sleep, para aguardar que a rotina alheia termine e logo em seguida tentar executar novamente.
‘****// Seria possível???
On Error Resume Next
DbCont.Execute strSQL
Call CloseDatabase
TratarSAIR:
Exit Sub
TratarERRO:
MsgBox "ERRO na Execução, entre em Contato com o Desenvolvedor, por favor." & vbLf & _
"Relate o ERRO ocorrido: " & Err.Description, vbCritical, "ATENÇÃO"
Resume TratarSAIR
End Sub
rahfaeu
Novo Membro
Registrado
1 Mensagem
0 Curtidas