Boas tardes,
Tenho uma BD com diversas tabelas, onde tem cerca de 200.000 registos os quais preciso de actualizar um campo com base em outros campos dessa mesma tabela, mas estou a ter um problema, a base de dados crash. Será que estou a fazer algo de errado?
O código que estou a fazer é o seguinte:
Public Function ActualizarGuias()
Dim rst As Recordset
Set rst = Application.CurrentDb.OpenRecordset("Select * from Tb_Guias")
DAO.DBEngine.SetOption dbMaxLocksPerFile, 150000
rst.MoveLast
contador = rst.RecordCount
rst.MoveFirst
For a = 1 To contador
rst.Edit
If rst.Fields("CLIENTE") = 404 And rst.Fields("ZONA") = "3" Then
rst.Fields("OBS") = "ZONA3"
ElseIf rst.Fields("CLIENTE") = 404 And rst.Fields("ZONA") = "4" Then
rst.Fields("OBS") = "ZONA4"
ElseIf rst.Fields("CLIENTE") = 404 And rst.Fields("ZONA") = "5" Then
rst.Fields("OBS") = "ZONA5"
ElseIf rst.Fields("CLIENTE") = 404 And rst.Fields("ZONA") = "6" Then
rst.Fields("OBS") = "ZONA6"
ElseIf rst.Fields("CLIENTE") = 713 And rst.Fields("ARMAZEM") = "AZB" Then
rst.Fields("OBS") = "AZB"
ElseIf rst.Fields("CLIENTE") = 713 And rst.Fields("ARMAZEM") <> "AZB" Then
rst.Fields("OBS") = "BAR"
End If
rst.Update
rst.MoveNext
Next
rst.Close
End Function
Obrigado pela ajuda...
Tenho uma BD com diversas tabelas, onde tem cerca de 200.000 registos os quais preciso de actualizar um campo com base em outros campos dessa mesma tabela, mas estou a ter um problema, a base de dados crash. Será que estou a fazer algo de errado?
O código que estou a fazer é o seguinte:
Public Function ActualizarGuias()
Dim rst As Recordset
Set rst = Application.CurrentDb.OpenRecordset("Select * from Tb_Guias")
DAO.DBEngine.SetOption dbMaxLocksPerFile, 150000
rst.MoveLast
contador = rst.RecordCount
rst.MoveFirst
For a = 1 To contador
rst.Edit
If rst.Fields("CLIENTE") = 404 And rst.Fields("ZONA") = "3" Then
rst.Fields("OBS") = "ZONA3"
ElseIf rst.Fields("CLIENTE") = 404 And rst.Fields("ZONA") = "4" Then
rst.Fields("OBS") = "ZONA4"
ElseIf rst.Fields("CLIENTE") = 404 And rst.Fields("ZONA") = "5" Then
rst.Fields("OBS") = "ZONA5"
ElseIf rst.Fields("CLIENTE") = 404 And rst.Fields("ZONA") = "6" Then
rst.Fields("OBS") = "ZONA6"
ElseIf rst.Fields("CLIENTE") = 713 And rst.Fields("ARMAZEM") = "AZB" Then
rst.Fields("OBS") = "AZB"
ElseIf rst.Fields("CLIENTE") = 713 And rst.Fields("ARMAZEM") <> "AZB" Then
rst.Fields("OBS") = "BAR"
End If
rst.Update
rst.MoveNext
Next
rst.Close
End Function
Obrigado pela ajuda...
Última edição por PILOTO em 19/8/2012, 17:39, editado 1 vez(es) (Motivo da edição : Retirar a palavra URGENTE do título do Tóico. Atente as regras do Fórum.)