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

Macros et VBA Excel Discussion :

DAO SQL recordset.recopyfromfrecordset n'affiche pas toutes les données


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Bonjour,

    J'ai deux problèmes dont peut etre quelqun de plus calé sur le sujet pourra me guider et m'expliquer d'ou vient le problème.

    Je souhaitais récupérer le max d'une date d'une base access depuis excel,
    j'écris la requete qui fonctionne trés bien dans access :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT MAX(VALUATION_DATE) FROM " & MaTable

    Pas d'erreur, j'attend une seule valeur, rct.RecordCount me donne 1 donc tout va bien seulement, quand je veux afficher avec un recopyfromrecordset, rien ne s'affiche.... Pas d'erreur la syntaxe est good . Je reformule ma requete pour tester

    requete:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT VALUATION_DATE FROM VIPK2  GROUP BY VALUATION_DATE HAVING MAX(VALUATION_DATE) > #02/28/2016#

    Pareil rct.RecordCount est bon mais quand je recopie, il me recopie 4 dates au lieu de 8 ....

    Je ne voit pas pourquoi, ca ne me gene pas dans mon programme mais si quelqun a une réponse ou une explication ca m'interesse car je ne vois pas du tt.

    Merci à vous

    De plus, si quelqun sait comment lire la valeur d'un recordset sans boucle rct.eof (si ca existe ca m'interesse).


    Merci
    Allez le RC LEns

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Tu demandes à ta requête te retourner le max d'une date a condition quelle soit supérieur à une date bien précis!

    Il est probable quelle retourne eof.

    Note rct.RecordCount donnera toujours 1 vue que ton recordset est en début de requête.

    rct.movelaste: rct.RecordCountLa il ce pourrait que ta requête te retourne 2, ce qui serait difficile vue que tu regroupe sur max!

    Toi ce qui t'intéresses c'est de savoir si une valeur existe. Si eof=false elle existe.

    Tonc pas de groupe by ni de havien juste un select et un where.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT distinct VALUATION_DATE FROM VIPK2  where VALUATION_DATE > #02/28/2016#
    Rs.open sql,cn
    If rs. Eof=false then mesbox "existe"

    Pour ta question 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    While rs.eof = false
    Debg.print rs("nom").value & rs("prénom").value
    Rs.movenext
    Wend
    Dernière modification par Invité ; 12/03/2016 à 10h57.

  3. #3
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Bonjour,
    En fait je comprend bien mais comme je disais je ne comprend pas pourquoi ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     'MyRqte = "SELECT MAX(VALUATION_DATE) FROM MaTABLE"
    n'affiche rien avec un copyfromrecordset alors qu'il y a une valeur et que je suis certain qu'il y en a une car j'ai testé la requete dans access et comme je dis recordcount=1. Donc je sais pas si il n'y a pas un probleme pour afficher ma requete

    Apres au niveau de la solution j'ai fait ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
                MyRqte = "SELECT VALUATION_DATE FROM " & XlSheet.Name & " GROUP BY VALUATION_DATE HAVING MAX(VALUATION_DATE) >=" & MySDateSQL
     
                                'On teste la date pour savoir si on ajoute Update ou non
                Set rct = Db.OpenRecordset(MyRqte)
                If rct.RecordCount > 0 Then Exit Sub
    et ca convient trés bien aussi . Je ne cherche pas une solution mais plutot une explication du phénomene un car peut etre un problème dans ma base ?
    toute idée ou autre est lqa bienvenue


    Merci beaucoup si certain ont une idee, car je ne vois pas trop ...
    Allez le RC LEns

  4. #4
    Invité
    Invité(e)
    Par défaut
    MyRqte = "SELECT VALUATION_DATE FROM " & XlSheet.Name & " GROUP BY VALUATION_DATE HAVING MAX(VALUATION_DATE) >=#" & MySDateSQL & "#"Recordcount n'est pas s une information pertinent! Eof=false oui copyrecodset ne copie rien si eof=True alors que recordcount est =1 même si ta requête retourne eof!

  5. #5
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Bonjour,

    Encore une fois je ne cherche pas une solution, je cherche juste à comprendre pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'MyRqte = "SELECT MAX(VALUATION_DATE) FROM MaTABLE"
    qui est une requete qui marche dans access, et qui ne donne aucune erreur de syntaxe sur excel vba et qui a un recordcount = 1 donc tout à fait ce que j'attend, n'affiche rien avec recopyfromrecordset. C'est un comportement que je ne comprend pas. Car ca devrai afficher une date( le max) c'est ce qu'elle fait dans access, je ne voit pas pourquoi elle n'affiche rien dans excel.
    Allez le RC LEns

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je ne cherche pas à te trouver une solution je cherche à t'expliquer!

    Pour comprendre il faut d'une certaine façon résoudre le problème!

    Si tu envois le rs.eof dans le debugeur tu trouvera True. Donc ta requête n'est pas bonne pas forcement dans la syntaxe mais dans les valeur du where.

    "04/01/2016'" donnera peut-être"01/04/2016" tu parle d'un poisson!

    Et oui vba is Américain alor q'Access utilise le paramètre régionaux! Doc résoudre c'est comprendre!

  7. #7
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Bonjour,

    J'ai bien regardé mais la date est bien saisie. en format américain

    Je vais regarder plus précisément ce soir , car ce n'est pas indispensable à mon projet

    Mais merci pour ton aide
    Allez le RC LEns

  8. #8
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MyRqte = "SELECT VALUATION_DATE FROM " & XlSheet.Name & " GROUP BY VALUATION_DATE HAVING MAX(VALUATION_DATE) >=cdate(" & format(date,"yyyy-mm-dd") & ")"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MyRqte = "SELECT VALUATION_DATE FROM " & XlSheet.Name & " GROUP BY VALUATION_DATE HAVING format(MAX(VALUATION_DATE) ,'yyyy-mm-dd')>='" & format(date,"yyyy-mm-dd") & "'"
    Dernière modification par Invité ; 12/03/2016 à 14h28.

Discussions similaires

  1. Console n'affiche pas toute les lignes dés le début
    Par maestro_mirou dans le forum Débuter
    Réponses: 13
    Dernier message: 28/05/2012, 23h12
  2. [2005] SSRS ne m'affiche pas toutes les données
    Par soazig dans le forum SSRS
    Réponses: 2
    Dernier message: 13/12/2011, 19h33
  3. Réponses: 0
    Dernier message: 21/06/2011, 03h47
  4. [AC-97] Une requête étrange qui n'affiche pas toutes les entrées
    Par ZoliveR dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 22/11/2010, 11h58
  5. [MySQL] Liste déroulante php/sql n'affichant pas toutes les données.
    Par Nicolas_k dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/02/2010, 13h01

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