IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Recordset et collections [AC-2010]


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 84
    Points : 63
    Points
    63
    Par défaut Recordset et collections
    Bonjour à tous,
    Voila le tableau : je tente de faire une copie de recordset dans une table. Pour remplir la table en question je passe par une boucle. La boucle fonctionne mais ayant des champs pieces jointes et d'autre que je rempli manuellement j'ai crée une collection pour mettre le nom des champs sue je veux exclure de la boucle. Mais ça n'est pas très concluant puisque je me retrouve avec des messages d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    Dim db As DAO.Database
    Dim rs(1 To 3) As DAO.recordset
    Dim name As String
    Dim i, j As Long
    Set db = CurrentDb
    Set rs(1) = db.OpenRecordset("Select * from Tbl_EI where id_ei=" & Id_Ei, dbOpenSnapshot)
    Set rs(2) = db.OpenRecordset("Tbl_EI", dbOpenTable, dbAppendOnly)
     
     
    Dim nomchamps As New Collection
    nomchamps.Add ("Id_Employe")
    nomchamps.Add ("date_modification_ei")
    nomchamps.Add ("Modifié_par")
    nomchamps.Add ("Num_EI")
    nomchamps.Add ("Id_Employe")
    nomchamps.Add ("rapport")
    Do While Not rs(1).EOF
        ' You can place if condition here
        rs(2).AddNew
        rs(2).Fields("Id_Employe").Value = Cidemp
        rs(2).Fields("Num_EI").Value = rs(1).Fields("Id_ei").Value
        rs(2).Fields("date_modification_ei").Value = Now
        rs(2).Fields("Modifié_par").Value = Cemp
     
        For i = 0 To rs(1).Fields.Count - 1
     
     
        If nomchamps(rs(1).Fields(rs(1).Fields.name)) = True Then GoTo line1
     
            rs(2).Fields(rs(1).Fields(i).name) = rs(1).Fields(i).Value
     
     
     
    line1:
        Next i
     
     
        rs(2).update
        rs(1).MoveNext
    Loop

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 600
    Points
    24 600
    Par défaut
    Bonjour,

    Un tableau de recordset... J'ai déjà vu des apprentis sorciers en faire mais je n'en ai jamais compris l'intérêt, sauf à but didactique.

    Pour ce genre d'opération il y a les requêtes. C'est plus rapide à écrire et largement plus performant.

    Vu la précision de ta demande je ne peux faire plus.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 84
    Points : 63
    Points
    63
    Par défaut euréka
    En fait le but de tout ça est de récupéré les informations d'un enregistrement précédent dans la table et d'en faire un nouvel enregistrement pour que l'utilisateur puisse y rajouter ou modifié des infos.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
     
    Private Sub Liste6_DblClick(Cancel As Integer)
     
    Dim oRst As DAO.Recordset
    Dim oRst1 As DAO.Recordset
    Dim oDb As DAO.Database
    Dim i As Integer
     
     
    Set oDb = CurrentDb
    Set oRst1 = oDb.OpenRecordset("select * from Tbl_EI where id_ei=" & Cidmodif, dbOpenSnapshot)
    Set oRst = oDb.OpenRecordset("Tbl_ei", dbOpenTable)
     
    oRst.AddNew
     
    'Affecte les différents champs dont les valeurs sont uniques
    oRst.Fields("Num_EI").Value = oRst1.Fields("Id_ei").Value
    oRst.Fields("Date_debut_EI").Value = oRst1.Fields("Date_debut_EI").Value
    oRst.Fields("Date_modification_EI").Value = oRst1.Fields("Date_modification_EI").Value
    oRst.Fields("Modifié_par").Value = Cemp
    oRst.Fields("Date_fin_ei").Value = oRst1.Fields("Date_fin_ei").Value
    oRst.Fields("Id_employe").Value = oRst1.Fields("Id_employe").Value
    oRst.Fields("vorgang").Value = oRst1.Fields("vorgang").Value
     
    'puis on boucle pour copier tous les autres 
    For i = 9 To oRst.Fields.Count - 1
     
     
     
         oRst.Fields(oRst1.Fields(i).name) = oRst1.Fields(i).Value
        End If
     
     
     
        Next i
     
     
    oRst.update
    oRst1.MoveNext
    stDocName = "Frm_donnees_rapport"
     
     
    'Vérification
    MsgBox ("OK")
     
    oRst.Close
    oRst1.Close
    oDb.Close
    Set oRst = Nothing
    Set oRst1 = Nothing
    Set oDb = Nothing
    end sub
    Ainsi on peut filtrer le formulaire sur le dernier enregistrement ou figure les valeurs de mes 183 champs de l'enregistrement précédent

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] [BDD] Recordset et champ égal à Null
    Par Gr|ppen dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/03/2003, 10h00
  2. Comment créér une collection sous Delphi
    Par PsyKroPack dans le forum Langage
    Réponses: 6
    Dernier message: 11/02/2003, 13h20
  3. [VB6] Modifier la clé d'un élément d'une collection
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h49
  4. [ADO] Sauvegarde / lecture de recordset
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/09/2002, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo