Inscription dans une colonne à partir d'un code vba

Résolu/Fermé
bithack Messages postés 129 Date d'inscription mercredi 29 octobre 2014 Statut Membre Dernière intervention 16 mars 2016 - Modifié par Whismeril le 23/04/2015 à 11:52
bithack Messages postés 129 Date d'inscription mercredi 29 octobre 2014 Statut Membre Dernière intervention 16 mars 2016 - 24 avril 2015 à 09:37
Bonjour,
Le problème que je rencontre actuellement, c'est que j'ai une boucle imbriqué qui fonctionne à un détails près, il ne m'inscrit rien dans ma table. je ne sais si ce que j'utilise est la bonne solution
rsrun1.Fields("run") = Run1

pour moi il est censé prendre mon recordset "rsrun1" afin qu'il écrive dans le champ run le resultat run1.
voici mon code :
Sub runtype()
Dim Jour As String
Dim db As Database
Dim rsdateres As DAO.Recordset
Dim rsrun1 As DAO.Recordset
Dim rsrun2 As DAO.Recordset
Dim rsrun3 As DAO.Recordset
Dim fld As DAO.Field
Dim sSQL1 As String
Dim sSQL2 As String
Dim sSQL3 As String
Dim sSQL4 As String
'Dim i As Long
'rsdateres.MoveFirst
'i = 1

Jour = date
MsgBox Jour
Set db = CurrentDb

    sSQL1 = "SELECT date_resil FROM Dossier"
    Set rsdateres = db.OpenRecordset(sSQL1, dbOpenDynaset, dbSeeChanges, dbPessimistic)
    'Set rsdateres = db.OpenRecordset(sSQL1, dbOpenForwardOnly, dbReadOnly) ' Ouverture du Recordset
   ' MsgBox rsdateres
    
    sSQL2 = "select Run1 FROM calendrier"
   Set rsrun1 = db.OpenRecordset(sSQL2, dbOpenDynaset, dbSeeChanges, dbPessimistic)
   ' MsgBox rsrun1
    
    sSQL3 = "select Run2 FROM calendrier"
    Set rsrun2 = db.OpenRecordset(sSQL3, dbOpenDynaset, dbSeeChanges, dbPessimistic)
   ' MsgBox rsrun2
   
    sSQL4 = "select Run3 FROM calendrier"
    Set rsrun3 = db.OpenRecordset(sSQL4, dbOpenDynaset, dbSeeChanges, dbPessimistic)
    'MsgBox rsrun3
    '1
 rsdateres.MoveFirst
Do Until rsdateres.EOF

    If rsdateres!date_resil < Jour And rsdateres!date_resil < rsrun1!Run1 Then
       rsrun1.Fields("run") = Run1
      
      Else
     If rsdateres!date_resil < Jour And rsdateres!date_resil < rsrun2!run2 And rsdateres!date_resil > rsrun1!Run1 Then
            'If rsdateres < Jour And rsdateres < rsrun2 And rsdateres > rsrun1 Then
                rsrun2.Fields("run") = run2
           
         Else
                If rsdateres!date_resil < Jour And rsdateres!date_resil < rsrun3!run3 And rsdateres!date_resil > rsrun2!run2 Then
                    'If rsdateres < Jour And rsdateres < rsrun3 And rsdateres > rsrun2 Then
                        rsrun3.Fields("run") = run3
                        
                        
        Else
                         If rsdateres!date_resil < Jour And rsdateres!date_resil > rsrun3!run3 Then
                            'If rsdateres < Jour And rsdateres > rsrun3 Then
                               'rsdateres.Fields("run") = pas - résilier
                             
        End If
         End If
         End If
         End If
     rsdateres.MoveNext
  Loop

       
        
          
'rst.Close ' Fermeture du Recordset
'l = rst.RecordCount
End Sub


Merci par avance de votre aide précieuse !!!


Edit: Précision du langage dans la coloration syntaxique.



A voir également:

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
23 avril 2015 à 15:46
Bonjour,

je vous avais ecrit ceci:

f894009 - 22 avril 2015 à 09:42
Re,

1: ne pas ouvrir le recordset en lecture seule si vous voulez ecrire dans la table
2:

.Fields("run") = Run1

ne suffit pas il faut le recordset ex: rsrun1.Fields("run") = Run1
3: mettre a jour la table via le recordset: ex:

rsrun1.UpDate


ceci pour chaque recordset

A+
0
bithack Messages postés 129 Date d'inscription mercredi 29 octobre 2014 Statut Membre Dernière intervention 16 mars 2016 6
23 avril 2015 à 16:01
j'ai pas mis le bon code ^^ je l'ai fait
Sub runtype()
Dim Jour As String
Dim db As Database
Dim rsdateres As DAO.Recordset
Dim rsrun1 As DAO.Recordset
Dim rsrun2 As DAO.Recordset
Dim rsrun3 As DAO.Recordset
Dim rsrun4 As DAO.Recordset
Dim fld As DAO.Field
Dim sSQL1 C
Dim sSQL2 As String
Dim sSQL3 As String
Dim sSQL4 As String
Dim sSQL5 As String

Dim run1 As String

'Dim i As Long
'rsdateres.MoveFirst
'i = 1

Jour = date
MsgBox Jour
Set db = CurrentDb

sSQL1 = "SELECT date_resil FROM Dossier"
Set rsdateres = db.OpenRecordset(sSQL1, dbOpenDynaset, dbSeeChanges, dbPessimistic)
'Set rsdateres = db.OpenRecordset(sSQL1, dbOpenForwardOnly, dbReadOnly) ' Ouverture du Recordset
'MsgBox rsdateres


sSQL2 = "select Run1 FROM calendrier"
Set rsrun1 = db.OpenRecordset(sSQL2, dbOpenDynaset, dbSeeChanges, dbPessimistic)
' MsgBox rsrun1

sSQL3 = "select Run2 FROM calendrier"
Set rsrun2 = db.OpenRecordset(sSQL3, dbOpenDynaset, dbSeeChanges, dbPessimistic)
' MsgBox rsrun2

sSQL4 = "select Run3 FROM calendrier"
Set rsrun3 = db.OpenRecordset(sSQL4, dbOpenDynaset, dbSeeChanges, dbPessimistic)
' MsgBox rsrun3
'1
sSQL5 = "select run from Dossier"
Set rsrun4 = db.OpenRecordset(sSQL5, dbOpenDynaset, dbSeeChanges, dbPessimistic)

rsdateres.MoveFirst
Do Until rsdateres.EOF

If rsdateres!date_resil < Jour And rsdateres!date_resil < rsrun1!run1 Then
With rsrun4
.AddNew
.Fields("run") = "Run1"
.Update
End With


Else
If rsdateres!date_resil < Jour And rsdateres!date_resil < rsrun2!run2 And rsdateres!date_resil > rsrun1!run1 Then
'If rsdateres < Jour And rsdateres < rsrun2 And rsdateres > rsrun1 Then
' rsrun2.Fields("run") = "run2"

Else
If rsdateres!date_resil < Jour And rsdateres!date_resil < rsrun3!run3 And rsdateres!date_resil > rsrun2!run2 Then
'If rsdateres < Jour And rsdateres < rsrun3 And rsdateres > rsrun2 Then
'rsrun3.Fields("run") = "run3"


Else
If rsdateres!date_resil < Jour And rsdateres!date_resil > rsrun3!run3 Then
'If rsdateres < Jour And rsdateres > rsrun3 Then
' rsdateres.Fields("run") = pas - résilier

End If
End If
End If
End If
rsdateres.MoveNext
Loop

rsdateres.Close ' Fermeture du Recordset
'MsgBox


'l = rst.RecordCount
End Sub


merci
0
bithack Messages postés 129 Date d'inscription mercredi 29 octobre 2014 Statut Membre Dernière intervention 16 mars 2016 6
23 avril 2015 à 16:02
Pour le moment je teste que avec le premier recordset :)
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > bithack Messages postés 129 Date d'inscription mercredi 29 octobre 2014 Statut Membre Dernière intervention 16 mars 2016
Modifié par f894009 le 23/04/2015 à 16:17
Re,
mise a jour si un seul enregistrement:
rsrun1.Fields("run") = Run1
rsrun1.UpDate


ajout d'enregistrement rsrun4 non rsrun1 avec "Run1" pas la valeur de Run1
 With rsrun4
 .AddNew
  .Fields("run") = "Run1"
  .Update
  End With
0
bithack Messages postés 129 Date d'inscription mercredi 29 octobre 2014 Statut Membre Dernière intervention 16 mars 2016 6
24 avril 2015 à 08:35
Bonjour,
Merci pour votre aide !
cdlt
0
bithack Messages postés 129 Date d'inscription mercredi 29 octobre 2014 Statut Membre Dernière intervention 16 mars 2016 6
24 avril 2015 à 08:58
Re bonjour,
quand j'exécute le code, une erreur apparait. Il me dit " update ou cancelupdate effectuer sans appeler adnew ni edit "
dois je rajouter mon adnew ?
0