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 :

Filtrer via un formulaire: -2147467259 (80004005) [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut Filtrer via un formulaire: -2147467259 (80004005)
    Bonjour Voici mon problème,

    j'utilise une connexion ADO pour accéder à une base oracle (nomée BDD_POPU) mes critères de filtres sont saisis
    dans un formulaire (nomé Choix_tact) qui se présente comme ceci:


    ***************************
    IDent: A000tyn
    Datefirst: 01/08/2012

    Datelast: 30/08/2012

    ***************************

    Lorsque j'utilise la valeur prise par "Datefirst" ou celle prise par "Datelast" mon code s'éxcute sans problème
    mais quand j'essai de faire la même chose avec celle d' "IDent" j'obtiens l'erreur
    '-2147467259 (80004005)'

    Quelqu'un a une t-il une idée ?


    Merci d'avance.


    Voici mon 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
    Function papa()
    Const TABLE_RESULTAT = "CHOIX_Fait"
    Dim cn As ADODB.Connection
    Dim cmd As ADODB.Command
    Dim MonRs As ADODB.Recordset
    Dim oField As ADODB.Field
    Dim out_rst As Recordset
    
    Début = Format(Form_Choix_tact.first, "yyyy\-mm\-dd 00:00:00")
    Fin = Format(DateAdd("d", 1, Form_Choix_tact.last), "yyyy\-mm\-dd 00:00:00")
    lelogins = Form_Choix_tact.Login
    
    
    Set out_rst = CurrentDb.OpenRecordset(TABLE_RESULTAT)
    Set cn = New ADODB.Connection
    cn.ConnectionString = Connexion_IRRP
    cn.Open
    Set cmd = New ADODB.Command
    
    
    SQL = "SELECT Ct_Date, Poste1, Ville, Code_pers " _
    & "FROM BDD_POPU " _
    & "WHERE Poste1 = 'Directeur' " _
    & "and and Ct_Date >= {ts'" & Début & "'} " _
    & "and and Ct_Date < {ts'" & Fin & "'} " _
    & "and Code_pers = { ts'" & lelogins & "'} " _
    & "  _ORDER BY Ct_Date"
    
    
    Debug.Print SQL
    With cmd
        .ActiveConnection = cn
        .CommandText = SQL
        Set MonRs = cmd.Execute
    End With
    MonRs.Close
    Set MonRs = Nothing
    Set MonRs = New ADODB.Recordset
    MonRs.Open cmd, , adOpenKeyset, adLockOptimistic, adCmdText
    MonRs.MoveFirst
         SQL = "DELETE * FROM " & TABLE_RESULTAT
         CurrentDb.Execute SQL
    Do While Not MonRs.EOF
      out_rst.AddNew
      For Each oField In MonRs.Fields
          out_rst.Fields(oField.Name).Value = oField.Value
      Next oField
      out_rst.Update
    MonRs.MoveNext
    Loop
    Set cn = Nothing
    Set cmd = Nothing
    Set out_rst = Nothing
    Set MonRs = Nothing
    End Function

    C'est la ligne rouge qui pose problème, lorsque je la met en commentaire le code marche sans problème.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    " _ORDER BY Ct_Date"
    C'est normal le _ devant ORDER ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Salut marot_r merci pour ta reponse,
    Le " _ " est une erreur de saisi dans mon éditeur vb je ne l'ai pas.

    et l'erreur demeure sur la ligne

    & "and Code_pers = { ts'" & lelogins & "'} " _

    Dés qu'elle est mise en commentaire tout va bien.


    Help please .

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    A l'aide je sèche depuis quelque temps

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Il y a un espace entre l'accolade ouvrante et le ts sur la ligne 26 alors qu'il n'y en a pas sur la ligne 25, est-ce voulu ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Membre régulier Avatar de zoopsys
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 68
    Points : 80
    Points
    80
    Par défaut
    En général pour créer ou tester des requêtes sur des bases Oracle, j'utilise SQL developer.
    http://www.oracle.com/technetwork/de...iew/index.html

    - Exécutes ton code pour afficher la valeur de la variable SQL
    - Copies la requête dans SQL developer (et tu peux aussi la copier dans ton post).

    J’espère pour toi que ta solution a été validée d'un point de vue architecture.

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonjour,
    je ne connais pas cette syntaxe avec les accolades: à quoi servent-elles ? Cependant, je remarque une chose :
    et l'erreur demeure sur la ligne

    & "and Code_pers = { ts'" & lelogins & "'} " _

    Dés qu'elle est mise en commentaire tout va bien.
    soit, mais comment ton code peut-il fonctionner avec 2 and ?
    & "and and Ct_Date >= {ts'" & Début & "'} " _
    & "and and Ct_Date < {ts'" & Fin & "'} " _
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Bonjour Messieurs et merci pour vos réponses.


    tee_grandbois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    je ne connais pas cette syntaxe avec les accolades: à quoi servent-elles ?
    C'est une syntaxe que m'a conseiller un collègue qui comme je le constate ne marche que sur les dates/heures.
    Si t'as une autre syntaxe, je suis preneur car c'est justement ce que je cherche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mais comment ton code peut-il fonctionner avec 2 and ?
    :
    Oui il marche avec ces 2 "and" quand je supprime cette ligne
    & "and Code_pers = { ts'" & lelogins & "'} " _
    en fait les 2 and signifient que Début<=Ct_Date<Fin.

    marot_r:
    Même en supprimant l'espace , ça marche pas.

    Je pense (au risque de me tremper) qu'il faut une syntaxe particulière pour le champ lelogins qui n'est pas un champ de date.


    Quelqu'un a t-il une syntaxe à me proposer ?

  9. #9
    Membre averti Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Points : 423
    Points
    423
    Par défaut
    bonjour !

    à quoi sert le "TS" devant ta variable ... est-ce parce que tu désire rajouter ces 2 lettres devant elle ??

    ensuite est-ce que ta variable retourne bien une valeur ? A tu testé avec un msgbox ? ou un print ?

    Essai comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    & "and Code_pers = 'ts' & """ & lelogins & """" _
    Parfois il faut faire le tour d'une roche 10 fois avant de s'apercevoir quelle est ronde.
    • Si vous trouvé mon post intéressant, n'oubliez pas de voter coté inférieur droit du message. Merci
    • Si votre Post est indiquez le....
    • Celuil là je devait le mettre ici ....hihi -->

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Salut robyseb

    Comme je l'ai dit plus haut, c'est un collègue qui m'a proposé cette syntaxe avec TS .

    J'ai éssayé avec et sans 'ts' mais ça marche toujours pas j'ai un message d'erreur sur cette ligne:,


    Set MonRs = cmd.Execute

    message d'erreur:Column not found

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonsoir,
    column not found est une piste : merci de nous faire connaitre les messages d'erreur que maintenant.
    1) peux-tu nous dire de quel type est ton champ Code_pers
    2) nous poster la valeur de la variable SQL
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  12. #12
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    re,
    & "and Code_pers = { ts'" & lelogins & "'} _"
    cette syntaxe est réservée pour les datetime en Transact-SQL comme indiqué ici: http://msdn.microsoft.com/fr-fr/library/ms187819.aspx section ODBC

    il faudrait formater lelogins comme un texte ou un numérique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    & "and Code_pers ='" & lelogins & "'" _
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    & "and Code_pers =" & lelogins & " _
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    ça y est ça marche


    le bon code c'est


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    & "and Code_pers ='" & lelogins & "'" _
    Merci à tous .

    tee_grandbois your are very strong


    A bientôt

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

Discussions similaires

  1. [AC-2003] Filtrer un sous-formulaire via une liste deroulante
    Par Shikam dans le forum IHM
    Réponses: 4
    Dernier message: 07/06/2010, 10h45
  2. [MySQL] Filtrer des informations via un formulaire
    Par Sianobel dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/07/2009, 12h29
  3. Réponses: 9
    Dernier message: 30/08/2006, 00h42
  4. Réponses: 3
    Dernier message: 02/01/2006, 11h53
  5. envoie de fichiers via les formulaires
    Par fabogranqi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 10/10/2004, 21h34

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