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

VBA Access Discussion :

AddNew à partir d'un form idépendant


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 2
    Par défaut AddNew à partir d'un form idépendant
    Help !!!

    Je travaille sous ACCESS 2003.
    J’appelle depuis mon formulaire, une procédure placée dans un module standard. Cette dernière doit ajouter un nouveau enregistrement dans la table mais seul un zéro est ajouté dans la table. Merci de votre aide.

    Voici l'affreux code

    Procédure du formulaire (placée dans un événement click) :
    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
    …..
    Call AjouRecodForm(Me, "TProgramme")
    ……
     
    Procédure du module standard :
    Public Sub AjouRecodForm(frm As Form, nomTable As String)
    ' """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    ' """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    ' le frm est un formulaire indépendant (sans source de données)
    ' mais les zones de texte ont exactement les mêmes noms que les
    ' champs de la table fournis par la procédure appelante.
    ' """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    ' """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    Dim mabd As DAO.Database
    Dim Rst As DAO.Recordset
    Dim ctrl As Control
    Dim sNomChamp, sAutreRst As String
    Dim sSQL As String
     
    Set mabd = CurrentDb
    sSQL = "Select * From " & nomTable ' le nom de la table est donnée par le procédure appelante
    Set Rst = mabd.OpenRecordset(sSQL, dbOpenDynaset)
    Rst.MoveLast
     
    ' """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    ' Ajout d'un nouveau enregistrement à partir du formulaire
    ' """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
     
    Rst.AddNew
    For Each ctrl In frm.Controls
        sNomChamp = ""
        If ctrl.ControlType = acTextBox Then
            sNomChamp = ctrl.Name ' je récupère le nom du champ à partir du nom de la zone texte
            sAutreRst = "Rst!" & sNomChamp ' là je reconstruit le nom complet du rst
            Debug.Print sAutreRst & "  a pour valeur " & ctrl.Value 'affiche tout nickel
            sAutreRst = ctrl.Value 'là, le problème écrit uniquement un zéro dans ma table
        End If
    Next ctrl
    Rst.Update
    Rst.Close
    End Sub

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Et on suppose que le code ne donne rien, à cause de sAutreRst qui est utilisé bizarrement.
    En modifiant le moins possible, voici un code qui marche peut-être
    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
    Procédure du module standard :
    Public Sub AjouRecodForm(frm As Form, nomTable As String)
    ' """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    ' """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    ' le frm est un formulaire indépendant (sans source de données)
    ' mais les zones de texte ont exactement les mêmes noms que les
    ' champs de la table fournis par la procédure appelante.
    ' """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    ' """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    Dim mabd As DAO.Database
    Dim Rst As DAO.Recordset
    Dim ctrl As Control
     
    Set mabd = CurrentDb
    Set Rst = mabd.OpenRecordset(nomTable, dbOpenDynaset)
     
    ' """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    ' Ajout d'un nouveau enregistrement à partir du formulaire
    ' """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
     
    Rst.AddNew
    For Each ctrl In frm.Controls
        If ctrl.ControlType = acTextBox Then rst(ctrl.Name) = ctrl.Value
    Next ctrl
     
    Rst.Update
    Rst.Close
     
    'libérer les variables
    set ctrl = Nothing
    set rst = Nothing
    set madb = Nothing
    End Sub
    Ca ne devrait pas être très loin;

    PGZ

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 2
    Par défaut AddNew à partir d'un form idépendant VBA Access
    Merci.
    ça a marché du premier clic

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Problème résolu?

    Bouton !
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/08/2006, 15h54
  2. Comment ouvrir Outlook Express à partir d'une form ( Form's buider d'oracle)?
    Par Fleur-Anne.Blain dans le forum Outlook Express / Windows Mail
    Réponses: 3
    Dernier message: 17/07/2006, 11h15
  3. Créer un rtf à partir d'une form
    Par akabane dans le forum Delphi
    Réponses: 2
    Dernier message: 07/06/2006, 10h18
  4. Impression d'un rapport à partir d'Oracle Form
    Par agneice dans le forum Oracle
    Réponses: 5
    Dernier message: 06/01/2006, 18h41
  5. Réponses: 4
    Dernier message: 26/08/2004, 08h01

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