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

VB 6 et antérieur Discussion :

Probleme ajout d'enregistrement dans bdd Access


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 134
    Points : 92
    Points
    92
    Par défaut Probleme ajout d'enregistrement dans bdd Access
    Bonjour à tous,

    Je développe une appli dans laquelle je fais des ajout, des suppressions, des modif dans une base de donnée access.

    dans une de mes méthodes, il m'est impossible d'ajouter mon enregistrement dans ma table.

    Pas de message d'erreur, j'ai essayer de mettre un On error resume next et d'espionner la variable Err mais elle est toujours à 0. je ne sais plus quoi faire. si quelqu'un peux m'aider

    voici comment je fais mon ajout

    1)requete
    2)addnew
    3)attribution des valeurs par: monRecorSet!MonChamp = blabla
    4)update
    5)close

    Je fais ca dans d'autre méthode et je n'ai aucun souci. POURQUOI

  2. #2
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Un oubli sans doute de ne pas nous montrer ton code ?
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 134
    Points : 92
    Points
    92
    Par défaut
    en gros je fais ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    l_requete = "SELECT * FROM ZONES WHERE CLEF=-" & CStr(x_clefPage)
    FaireRequete l_requete, l_rsData
    If l_rsData.EOF = True Then
            l_rsData.AddNew
            l_rsData!Clef = CInt("-" & x_clefPage)
            l_rsData.Update
    End if
     
    l_rsData.Close
    Set l_rsData= Nothing

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Qu'est ce qu'il y a dans FaireRequete ?

    edit :pourquoi un - dans ta chaine SQL ?
    Philippe

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 134
    Points : 92
    Points
    92
    Par défaut
    contenu de FaireRequete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub FaireRequete(ByVal clause As String, ByRef RecordsetResult As Recordset)
     
        Set RecordsetResult = New Recordset
        With RecordsetResult
            .CursorType = adOpenDynamic
            .LockType = adLockOptimistic
            .Open clause, ConnectBD
        End With
     
    End Sub
    pour le '-' c'est normal car je recherche une clef de type -xxx

  6. #6
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 165
    Points
    17 165
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If l_rsData.EOF = True Then
    l_rsData est donc Nothing, non et s'il l'est bien tu ne peux pas l'invoquer pour un AddNew, ou alors je n'est rien compris (ce qui est possible )
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Citation Envoyé par ProgElecT Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If l_rsData.EOF = True Then
    l_rsData est donc Nothing, non et s'il l'est bien tu ne peux pas l'invoquer pour un AddNew, ou alors je n'est rien compris (ce qui est possible )
    Tu n'es pas le seul, je te rassure.

    Je ne vois pas pourquoi passer par cette sub

    Philippe

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 134
    Points : 92
    Points
    92
    Par défaut
    tout simplement car ma sub FaireRequete comme son nom l'indique, execute la requete passer en paramètre et me remplie mon RecordSet donc au final quand je sort de cette sub mon RecordSet n'est jamais à nothing

  9. #9
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Je ne suis pas sur de moi mais apres l'ouverture du Recordset, EOF est a True ? Le curseur serait donc positionne sur le dernier enregistrement ? JE pensais qu'il se mettait sur le premier. D'ailleurs, quelle importance d'etre sur le premier ou le dernier enregistrement puisque tu veux en ajouter un nouveau de toute facon ? Je ne comprends pas l'utilite du test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If l_rsData.EOF = True Then
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 134
    Points : 92
    Points
    92
    Par défaut
    je test EOF pour savoi r si j'ai dèjà des enregistrement avec ma requete. Si EOF = true alors cela veut dire que je n'ai pas d'enregisstrement avec ma requete donc il faut que j'en ajoute un. SI EOF = false alors je modifie les champ

  11. #11
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Ce n'est pas tout a fait la meme explication que le premier message, en tout cas je ne comprends pas la meme chose, mais bref, es tu sur que tu passes dans ton test ?
    Tu veux donc ajouter une donnee a un recordset quand celui ci est vide ? Pourquoi ne pas tester la propriete Count ou RecordCount (je me souviens plus) du recordset ?
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 134
    Points : 92
    Points
    92
    Par défaut
    la propriété recordCount me retourne tout le temps -1 (du au cursor je crois). mais j'ai trouvé la solution. c'est à cause de ces foutu evenement qui sont levé lors d'un changement de valeur pour une checkbox qui supprimait mon enregistrement. merci à tous en tout cas

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

Discussions similaires

  1. Ajouter un enregistrement dans une base Access
    Par tmonn dans le forum VB.NET
    Réponses: 4
    Dernier message: 26/05/2012, 13h49
  2. Ajouter des enregistrements dans BDD sans Access installé
    Par bibilolo2 dans le forum Général VBA
    Réponses: 2
    Dernier message: 11/06/2009, 12h27
  3. [ACCESS] Ajouter un enregistrement dans une requête multi-table
    Par access_balou dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 23/09/2008, 14h43
  4. Probleme d'ajout de DATE dans BD access
    Par libuma dans le forum JDBC
    Réponses: 17
    Dernier message: 07/05/2008, 18h54
  5. Réponses: 4
    Dernier message: 10/12/2006, 16h47

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