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 :

Problème avec requête Ajout quand la table de destination est vide [AC-2010]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2022
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2022
    Messages : 140
    Par défaut Problème avec requête Ajout quand la table de destination est vide
    Bonjour,

    Je commence une nouvelle base et je tourne en rond depuis un moment sur un pb à la c.., qu'est-ce qui m' échappe ?

    Je crée une requête ajout et cette dernière n'ajoute les données QUE s'il y a une 1ere ligne dans la table de destination
    autrement dit : si table de destination vide, pas d' ajout ! S' il y a une quelconque valeur dans un quelconque champ de la 1ere ligne : c'est bon !

    j'ai déjà ce genre de requête dans d'autres bases qui marchent très bien, alors pourquoi pas celle-là ?

    merci si vous pouvez m'aider

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 045
    Par défaut
    Bonjour,
    quelle est ta requête et quelle est la structure de la table cible ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2022
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2022
    Messages : 140
    Par défaut
    Bonjour Micniv et bonne année !

    la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	sql = "INSERT INTO TabProvExp ( NumAff, Titre, DateEven, Even, EvenSAD, EvenAtt, EvenDiv, Titre2, Compte, CompteHeures, HeuresRPE, SemaineRPE, NumDev, NumNote, Cloturee )"
            sql = sql & " SELECT TabEven.NumAff, TabEven.Titre, TabEven.DateEven, TabEven.Evenement, TabEven.EvenSAD, TabEven.EvenAttente, TabEven.EvenDivers, TabAff.Titre2, TabAff.Compte, "
    	sql = sql & "TabAff.CompteHeures, TabEven.HeuresRPE, TabEven.SemaineRPE, TabAff.NumDev, TabAff.NumNote, TabEven.cloturee"
            sql = sql & " FROM TabProvExp, TabAff INNER JOIN TabEven ON TabAff.NumAff = TabEven.NumAff WHERE TabEven.NumAff Like '" & Me.TempRep & "'"
            DoCmd.RunSQL sql
    la table de destination Nom : TabProvExp.jpg
Affichages : 87
Taille : 55,8 Ko

    j'ai contourné le problème, mais j'aimerais bien comprendre quand même !

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 045
    Par défaut
    Bonjour, Nemog
    Ton copier-coller de code est particulièrement 'cacateux' :
    . 2 fois DoCmd.runSql ... qui ont l'air de se répéter
    . le premier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      DoCmd.RunSQL sqlsql = "INSERT INTO TabProvExp ( NumAff, Titre ...
    nanque un retour à la ligne !

    Le principal probléme vient surtout de ta requete elle même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       INSERT INTO TabProvExp ( NumAff, ... )
            SELECT TabEven.NumAff, ...
             FROM TabProvExp, TabAff INNER JOIN TabEven ...
    Ainsi ton SELECT ... FROM ne retourne des données que si des données existent dans la table TabProvExp qui n'a rien a faire ici !
    Personnellement, je n'utilise jamais directement des produits cartésiens de tables.

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2022
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2022
    Messages : 140
    Par défaut
    Je ne sais pas ce que tu vois de "cacateux", mon écran me montre ça :

    Nom : cacateux.JPG
Affichages : 80
Taille : 52,5 Ko

    et la requête est un peu longue mais si je la refais avec l' assistant requête, ça me donne la même chose

    Soit je laisse comme ça (j'ai fait en sorte de créer un enregistrement avant et de le supprimer après)
    soit je scinderai en 2 requêtes

    Merci en tout cas de ton intérêt

  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 045
    Par défaut
    Bonjour,
    je pense que tu n'as pas réalisé le problème de ta requête, alors j'insiste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO TabProvExp ( NumAff, ... )
            SELECT TabEven.NumAff, ...
             FROM TabProvExp, TabAff INNER JOIN TabEven ...
    TabProvExp, est à supprimer.
    Le produit cartesien de 2 tables est vide si l'une des tables est vide : c'est pourquoi tu dois saisir une première ligne dans la table TabProvExp .

    Bon we !

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

Discussions similaires

  1. [AC-2007] Ajouter un 0 si le Recordset est vide (Null)
    Par jmde dans le forum VBA Access
    Réponses: 4
    Dernier message: 11/09/2020, 14h44
  2. [AC-2007] N'afficher rien quand le champ en paramètre est vide.
    Par kedmard dans le forum VBA Access
    Réponses: 10
    Dernier message: 10/08/2012, 09h32
  3. Creation d'une table mais elle est vide!
    Par patrickthierry dans le forum Développement
    Réponses: 8
    Dernier message: 02/05/2010, 19h11
  4. [AC-2002] Afficher une Msgbox quand une zone de liste est vide
    Par wushu29 dans le forum VBA Access
    Réponses: 27
    Dernier message: 26/04/2010, 12h05
  5. Réponses: 3
    Dernier message: 05/05/2008, 09h57

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