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

IHM Discussion :

Comment insérer un groupe d'enregistrements issus d'un formulaire dans une DB ACCESS


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Points : 64
    Points
    64
    Par défaut Comment insérer un groupe d'enregistrements issus d'un formulaire dans une DB ACCESS
    Bonjour,

    J'ai défini un formulaire en "formulaires continus" pour avoir une liste d'enregistrements présentés en détail.

    Je voudrais maintenant récupérer ces enregistrements et les insérer (par une boucle) dans ma DB _ par un curseur ou par un indice _

    J'ai fait un essai en VBA ( je découvre en développant ) en utilisant DoCmd GoTo Record ( acFirst puis acNext ) : il insère le premier et part en erreur au suivant, ce n'est donc pas la bonne méthode. Je sais manipuler les indices et les tableaux en PL/SQL ou en "vieux Cobol" mais en pas VBA. J'ai pioché dans DAO et ADO mais pour moi c'est du Chinois !!!

    ***********************************
    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
    Private Sub cmdCréé_Click()
     
    ... je n'écrit que la fin du code je passe les INIT  etc ...
     
    DoCmd.GoToRecord , , acFirst
     
    'On mouline pour insérer les compétences en rafale dans la table des faits
    For i = 1 To newcomp
     
    'On prépare les enregistrements vierges (seules les clés sont renseignées)
    xSIG = Me![Faits_code SIG]
    xcompetence = Me![Liste_Faits_code competence]
    xcoev = 0
    xevcb = 0
    xstatut = 0
     
    MSQL = "INSERT INTO Faits VALUES (" & Chr(34) _
                          & xSIG & Chr(34) & "," & Chr(34) _
                          & xcompetence & Chr(34) & "," & Chr(34) _
                          & xcoev & Chr(34) & "," & Chr(34) _
                          & xevcb & Chr(34) & "," & Chr(34) _
                          & xaction & Chr(34) & "," & Chr(34) _
                          & xcommentaire & Chr(34) & "," & Chr(34) _
                          & xdtcb & Chr(34) & "," & Chr(34) _
                          & xdtre & Chr(34) & "," & Chr(34) _
                          & xstatut & Chr(34) & "," & Chr(34) _
                          & xtypech & Chr(34) & ");"
     
    DoCmd.RunSQL (MSQL)
     
    'On se positionne sur l'enregistrement suivant
    If i < newcomp Then
       DoCmd.GoToRecord , , acNext
    End If
     
    Next i
     
    Exit_cmdCréé_Click:
        Exit Sub
     
    Err_cmdCréé_Click:
        MsgBox Err.Description
        Resume Exit_cmdCréé_Click
     
    End Sub
    ***********************************
    il me faudrait un truc genre
    xSIG = Me![Faits_code SIG](i)
    xcompetence = Me![Liste_Faits_code competence](i)

    pour For i = 1 To newcomp
    et Next i

    Je sais qu'il existe aussi :
    Dim dbs As Database
    Dim bzzz As DAO.Recordset
    ...
    ou
    Dim cnc As New ADO.Connection
    Dim bzzz As New ADO.Recordset
    ...

    mais comme je l'ai dit plus haut, c'est obscur !!!

    Merci d'avance

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 53
    Points : 64
    Points
    64
    Par défaut Comment insérer un groupe d'enregistrements issus d'un formulaire dans une DB ACCESS
    Bonjour,

    J'ai avancé dans ma démarche mais je n'ai toujours pas résolu mon problème,

    Voici mon nouveau code :
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    Private Sub cmdCréé_Click()
    On Error GoTo Err_cmdCréé_Click
     
    Dim newcomp As Variant
    Dim i As Variant
    Dim monGroupe As Variant
     
    Dim xSIG As Variant
    Dim xcompetence As Variant
    Dim xcoev As Integer
    Dim xevcb As Integer
    Dim xaction As Variant
    Dim xcommentaire As Variant
    Dim xdtcb As Date
    Dim xdtre As Date
    Dim xtypech As Variant
    Dim xstatut As Variant
     
    Dim comp_db As Database
    Dim RSComp As DAO.Recordset
     
    Set comp_db = CurrentDb
     
    'On travaille sur le code groupe spécifié
    monGroupe = Me!DF_code_groupe
     
    MsgBox Prompt:="Le code groupe est = " & monGroupe & " à comparer avec = " & [code groupe]
     
    'On ne garde que les compétences vierges relatives à ce groupe
    newcomp = DCount("*", "[Comp LJ GrpEx Rq2]", "[code groupe] = '" & Me!DF_code_groupe & "'")
     
    'On compte le nombre de ces compétences à insérer dans la table des faits
    MsgBox Prompt:="Le nombre d'enregistrements à insérer est =" & newcomp
     
    'On se positionne sur le premier enregistrement
    DoCmd.GoToRecord , , acFirst
     
    'La clé [code SIG] est celle du collaborateur sélectionné
    'donc la même pour tous les enregistrements vierges à créer
     
    xSIG = Me![Faits_code SIG]
    xcoev = 0
    xevcb = 0
    xstatut = 0
     
    'On mouline pour insérer tous les enregistrements vierges dans la table des faits
    'Seules les compétences [code competence] vont varier
    '        pour former la deuxième moitié de la clé primaire avec [code SIG]
     
    Set RSComp = comp_db.OpenRecordset("Faits", DB_OPEN_TABLE)
     
    For i = 1 To newcomp
       MsgBox Prompt:="compétence à insérer est = " & Me![code competence]
     
       xcompetence = Me![code competence]
     
       RSComp.AddNew
       RSComp("[code SIG]").Value = xSIG
       RSComp("[code competence]").Value = xcompetence
       RSComp("[co evaluation]").Value = xcoev
       RSComp("[evaluation cible]").Value = xevcb
       RSComp("[action]").Value = xaction
       RSComp("[commentaire]").Value = xcommentaire
       RSComp("[date cible]").Value = xdtcb
       RSComp("[date realisation]").Value = xdtre
       RSComp("[statut]").Value = xstatut
       RSComp("[type echelle]").Value = xtypech
       RSComp.Update
     
       DoCmd.GoToRecord , , acNext
    Next i
     
       RSComp.Close
     
    'On envoie un message de fin de travail
    MsgBox Prompt:="Insertion effectuée avec succès : " & i & " enregistrements ajoutés"
     
     
    Exit_cmdCréé_Click:
        Exit Sub
     
    Err_cmdCréé_Click:
        MsgBox Err.Description
        Resume Exit_cmdCréé_Click
     
    End Sub

    Ma première ligne est insérée, mais arrivé à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.GoToRecord , , acNext
    j'obtiens le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "Impossible d'utiliser l'action AtteindreEnregistrement
     ou la méthode GoTORecord en mode Création"

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

Discussions similaires

  1. comment insérer un group dans une listview ?
    Par lovedesitaliens dans le forum C#
    Réponses: 0
    Dernier message: 05/07/2010, 10h51
  2. Réponses: 1
    Dernier message: 28/06/2010, 13h19
  3. [C#] Comment enregistrer une image dans une tables access ?
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 7
    Dernier message: 16/06/2006, 11h58
  4. Réponses: 2
    Dernier message: 14/06/2006, 23h23
  5. Réponses: 1
    Dernier message: 29/04/2006, 22h08

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