Acess vba et modification d'un champs dans une base

Fermé
Loic - 29 juil. 2014 à 23:32
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 - 30 juil. 2014 à 15:32
Bonjour,

je souhaiterai parcourir ma base de donnée regarder la valeur d'un champs et si elle est pas bonne alors j'attribue tel valeur au champs d'a coté!
Mais ca marche pas, je pense que je peux pas faire d'uptate si je travaille deja sur ma table nn?
Si quelqu'un peut m'aider merci

Dim db As DAO.Database
Dim myrst As DAO.Recordset
Dim temp() As String, i As Integer, resultat As String

'tu definis quelle est la BD étudiée, c'est celle qui est courante..
Set db = CurrentDb

'nom de ta table
matable = "Table1"
monAutreTable = "TABLE_2"


sSQL = "SELECT id,Nom,Avancement from " & matable & " ORDER BY id "

'tu definis ton recordset qui va contenir le resultat de la requete
Set myrst = db.OpenRecordset(sSQL)

'si le recordset n'est pas vide
If Not myrst.EOF Then
' tant qu'il n'est pas vide
Do While Not myrst.EOF
'recuperation des valeurs pour tes 3 champs
temp = Split(myrst.Fields("Avancement").Value, ";")
If UBound(temp) > 0 Then
resultat = " "
For i = 0 To UBound(temp)
If temp(i) = "Refus" Then
resultat = "Refus"
ElseIf temp(i) = "A contacter" Then
If resultat <> "Refus" Then
resultat = "A contacter"
End If
ElseIf temp(i) = "Signe" Then
If resultat <> "Refus" Or resultat <> "A contacter" Then
resultat = "Signe"
End If
End If

Next i
requete = "Update[" & matable & "] SET [Resultat] = [" & resultat & "] where [id] =[" & myrst.Fields("id").Value & "];"
DoCmd.RunSQL (requete)
myrst.MoveNext
End If
Loop

End If

myrst.Close
Set myrst = Nothing
db.Close

A voir également:

1 réponse

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
30 juil. 2014 à 15:32
Bonjour,

Sub test()
Dim db As DAO.Database
Dim myrst As DAO.Recordset
Dim temp() As String, i As Integer, resultat As String

'tu definis quelle est la BD étudiée, c'est celle qui est courante..
Set db = CurrentDb

'nom de ta table
matable = "Table1"
monAutreTable = "TABLE_2"

sSQL = "SELECT id,Nom,Avancement from " & matable & " ORDER BY id "

'tu definis ton recordset qui va contenir le resultat de la requete
Set myrst = db.OpenRecordset(sSQL)

'si le recordset n'est pas vide
If Not myrst.EOF Then
' tant qu'il n'est pas vide
Do While Not myrst.EOF
'recuperation des valeurs pour tes 3 champs
temp = Split(myrst.Fields("Avancement").Value, ";")
If UBound(temp) > 0 Then
'init resultat a chaque tour
resultat = " "
For i = 0 To UBound(temp)
If temp(i) = "Refus" Then
resultat = "Refus"
ElseIf temp(i) = "A contacter" Then
'?????????????????????????? pourquoi voir init resultat
If resultat <> "Refus" Then
resultat = "A contacter"
End If
ElseIf temp(i) = "Signe" Then
'????????????????????????? pourquoi voir init resultat
If resultat <> "Refus" Or resultat <> "A contacter" Then
resultat = "Signe"
End If
End If
Next i
requete = "Update [" & matable & "] SET [Resultat] = [" & resultat & "] where [id] =[" & myrst.Fields("id").Value & "];"
DoCmd.RunSQL (requete)
End If
'a faire meme si le champ Avancement est vide
myrst.MoveNext
Loop
End If
myrst.Close
Set myrst = Nothing
db.Close
End Sub
0