Boa Tarde Pessoal,
A algum tempo o colega Dilson, me ajudou com o código abaixo (http://maximoaccess.forumeiros.com/t18664-resolvidoloop-somar-datas-e-preencher-registros-usando)
Porém, hoje depois de já ter vários registros em meu banco de dados, o formulário que utiliza esse código tem ficado lento, pois o código percorre todos os registros da minha tabela.
Eu encontrei uma solução mas não estou conseguindo implementar.
Minha ideia é colocar uma consulta no OpenRecordset, assim, o código iria percorrer somente alguns registros e tornaria o formulário bem mais rápido.
Bom, em substituição a linha vermelha eu tentei o código abaixo.
strsql = "SELECT * "
strsql = strsql & "FROM Cad_Tratamentos "
strsql = strsql & "WHERE (((Protocolo) = " & Me.Protocolo.Value & "));"
Set rst = CurrentDb.OpenRecordset(strsql)
Porém ele me da o erro, 3061 - Parâmetros insuficientes. Eram esperados 1.
Depois tentei outro código que se não me engano é do amigo JPaulo.
Set rst = db.OpenRecordset("SELECT * FROM Cad_Tratamentos WHERE Protocolo = '" & Protocolo.Value & "'", dbOpenDynaset, dbSeeChanges)
Porém esse da o erro 424 - O objeto é obrigatório.
E eu não estou conseguindo resolver o problema, já tentei varias coisas, mas não está dando certo.
Alguém poderia me ajudar?
On Error GoTo TratareiErro
Me.Recalc
Dim rSt As DAO.Recordset
Dim CodRef As Long
Dim rData As Date
Dim rDias As Integer
Set rSt = CurrentDb.OpenRecordset("Cadastro")
rSt.MoveLast
rSt.MoveFirst
Do While Not rSt.EOF
rDias = Nz(rSt("DIAS"))
CodRef = Nz(rSt("CodigoRef"))
rData = Nz(DLookup("DATA_PREVISTA", "tblTemp", _
"Registro =" & CodRef))
rSt.Edit
If CodRef > 0 And rData <> "00:00:00" Then
rSt("DATA_PREVISTA") = rData + rDias
End If
rSt.Update
rSt.MoveNext
Loop
rSt.Close
Me.Requery
Exit_TratareiErro:
Exit Sub
TratareiErro:
MsgBox "Aconteceu falha neste processamento." _
& vbCrLf & "Trata-se do erro n°: " & Err.Number _
& vbCrLf & "Descrição: " _
& Err.Description, vbInformation, "Erro inesperado"
Exit Sub
A algum tempo o colega Dilson, me ajudou com o código abaixo (http://maximoaccess.forumeiros.com/t18664-resolvidoloop-somar-datas-e-preencher-registros-usando)
Porém, hoje depois de já ter vários registros em meu banco de dados, o formulário que utiliza esse código tem ficado lento, pois o código percorre todos os registros da minha tabela.
Eu encontrei uma solução mas não estou conseguindo implementar.
Minha ideia é colocar uma consulta no OpenRecordset, assim, o código iria percorrer somente alguns registros e tornaria o formulário bem mais rápido.
Bom, em substituição a linha vermelha eu tentei o código abaixo.
strsql = "SELECT * "
strsql = strsql & "FROM Cad_Tratamentos "
strsql = strsql & "WHERE (((Protocolo) = " & Me.Protocolo.Value & "));"
Set rst = CurrentDb.OpenRecordset(strsql)
Porém ele me da o erro, 3061 - Parâmetros insuficientes. Eram esperados 1.
Depois tentei outro código que se não me engano é do amigo JPaulo.
Set rst = db.OpenRecordset("SELECT * FROM Cad_Tratamentos WHERE Protocolo = '" & Protocolo.Value & "'", dbOpenDynaset, dbSeeChanges)
Porém esse da o erro 424 - O objeto é obrigatório.
E eu não estou conseguindo resolver o problema, já tentei varias coisas, mas não está dando certo.
Alguém poderia me ajudar?
On Error GoTo TratareiErro
Me.Recalc
Dim rSt As DAO.Recordset
Dim CodRef As Long
Dim rData As Date
Dim rDias As Integer
Set rSt = CurrentDb.OpenRecordset("Cadastro")
rSt.MoveLast
rSt.MoveFirst
Do While Not rSt.EOF
rDias = Nz(rSt("DIAS"))
CodRef = Nz(rSt("CodigoRef"))
rData = Nz(DLookup("DATA_PREVISTA", "tblTemp", _
"Registro =" & CodRef))
rSt.Edit
If CodRef > 0 And rData <> "00:00:00" Then
rSt("DATA_PREVISTA") = rData + rDias
End If
rSt.Update
rSt.MoveNext
Loop
rSt.Close
Me.Requery
Exit_TratareiErro:
Exit Sub
TratareiErro:
MsgBox "Aconteceu falha neste processamento." _
& vbCrLf & "Trata-se do erro n°: " & Err.Number _
& vbCrLf & "Descrição: " _
& Err.Description, vbInformation, "Erro inesperado"
Exit Sub