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

ASP Discussion :

probleme avec une requete SQL


Sujet :

ASP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Par défaut probleme avec une requete SQL
    bonjour

    je souhaite faire une selection apartir de ma base access , pour me renvoyé les numeros payement entre deux date

    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
     
    <%
    	 dbPath = Server.MapPath("./bd3.mdb")
         ' Création de l'objet permettant la connexion
          Set Conn = Server.CreateObject("ADODB.Connection")
         ' Connexion
          Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};" _
          & " DBQ=" & dbPath
    	  sql="select payement.numpayement from payement where datepayement between '01/05/2009' and '01/06/2009' "
          set Rs= server.CreateObject("ADODB.Recordset")
          Rs.open sql, conn,3,3
    	  if rs.eof then
    	  response.write "nosuccé"
    	  else
          do while  not rs.eof
    	   response.write rs.fields("numpayement")
    	  loop
    	  end if
    	  	Rs.Close
    Set Rs=Nothing
    	  Conn.close : Set Conn=nothing 
    	%>
    et voici l'erreur affiché apres l'execution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
     
    [Microsoft][Pilote ODBC Microsoft Access] Type de données incompatible dans l'expression du critère.
     
    /intranet2/test.asp, line 10

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 250
    Par défaut
    Essaye en encadrant tes dates avec des #

  3. #3
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Effectivement, c'est une solution d'entourer la date par des # mais ne pas oublier que la date doit être inscrite au format MM/DD/YY

    ex: #06/30/2009#


    ERE

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 250
    Par défaut
    mais ne pas oublier que la date doit être inscrite au format MM/DD/YY
    C'est à vérifier.
    Un de mes collègues rencontre justement ce problème chez un de nos client avec un dev en VB.
    Sur la même base de données, sur une table, les requêtes doivent obligatoirement être au format français, sur une autre table, elles doivent être au format US.
    C'est un problème que l'on avait déjà eu sur des bases différentes sur un même serveur, mais pas encore sur la même base.

    La solution de Microsoft : supprimer la base et la recréer pour voir si le problème existe toujours. Il est évident qu'avec une base de plus de 150 tables et de 15Go de données, cette solution n'est pas applicable.

  5. #5
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Intéressant ! De mon côté je n'ai jamais eu de souci avec ça, mais à toujours faire de la même façon ...

    Et pour ma réflexion:
    Il est évident qu'avec une base de plus de 150 tables et de 15Go de données (...)
    . Est ce bien raisonnable d'avoir encore Access avec une telle volumétrie ?

    ERE

  6. #6
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 250
    Par défaut
    Heureusement qu'il ne s'agit pas d'Access, c'est du SQLServer 2005 (ça reste du Microsoft).

    Je pense qu'avec cette volumétrie Access aurait exploser depuis longtemps. Je n'ose même pas imaginer les temps d'ouverture d'une telle base.

    Ceci dit les dates posent aussi problème avec Access. Du temps ou je travaillas avec , je me rappelle avoir souvent été emmerdé notamment avec les paramètres régionaux des machines. Si les dates en durs devaient être au format US, il fallait souvent jongler avec les valeurs Date et les fonctions de conversions.

  7. #7
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Tu me rassures pour la base !

    Bien noté pour les paramètres régionaux !

    ERE

  8. #8
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Par défaut re
    merci pour vos reponce
    merci sevyc64 , j'ai fai ce que tu ma conseillé
    mai j'ai un autre probleme c que je veu paramettré les dates c'est a dire l'utilisateur choisie un mois apartir d'une liste deroulente pour faire des statistique apartir de la base ( je devellope un intranet pour une clinique , et je veu faire des statistiques genre; combien de malade hospitalisé .....)

    mai le probleme la requette ne me renvoye pas les bonnes resultats
    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
    <%
    	 dim d1
    	 dim d2
    	 d1=cdate("1/5/2009")
    	 d2=DateAdd("d",30,d1)
     
    	 response.write d1&"<br>"
    	 response.write d2&"<br>"
    	 dbPath = Server.MapPath("./bd3.mdb")
         ' Création de l'objet permettant la connexion
          Set Conn = Server.CreateObject("ADODB.Connection")
         ' Connexion
          Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};" _
          & " DBQ=" & dbPath
    	  sql="select count(motif) as nbr, sum(montant) as somme from payement where motif like'H' and datepayement between #"& d1 &"# and #"& d2 &"#"
          set Rs= server.CreateObject("ADODB.Recordset")
          Rs.open sql, conn,3,3
    	  if rs.eof then
    	  response.write "nosuccé"
    	  else
    	  response.write rs("nbr")&"<br>"
    	  response.write rs("somme")&"<br>"
    	  end if
    	  	Rs.Close
           Set Rs=Nothing
           sql="select datepayement, numpayement from payement where motif ='H' and datepayement between #"& d1 &"# and #"& d2 &"#"
          set Rs= server.CreateObject("ADODB.Recordset")
          Rs.open sql, conn,3,3
    	  do while  not rs.eof
    	  response.write rs.fields("datepayement")&"&nbsp;&nbsp;"&rs.fields("numpayement")&"<br>"
    	  rs.movenext
    	  loop
    	  Rs.Close
          Set Rs=Nothing
    	  Conn.close : Set Conn=nothing 
    	%>
    voici le resultat de l'execution
    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
    01/05/2009
    31/05/2009
    21
    468789
    19/05/2009  38
    19/05/2009  39
    19/05/2009  51
    19/05/2009  52
    19/05/2009  53
    19/05/2009  67
    19/05/2009  68
    19/04/2009  30
    19/05/2009  31
    19/05/2009  75
    19/05/2009  76
    19/05/2009  77
    19/05/2009  78
    19/05/2009  83
    19/05/2009  85
    19/05/2009  89
    23/05/2009  93
    23/05/2009  106
    26/05/2009  110
    30/05/2009  115
    27/05/2009  114
    j'ai une resultat qui correspond au mois d'avril


  9. #9
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 250
    Par défaut
    A vérifier, mon utilisation d'Access est lointaine, mais il me semble que les requette devraient s'écrirent ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sql="select count(motif) as nbr, sum(montant) as somme from payement where motif like'H' and datepayement between '#"& d1 &"#' and '#"& d2 &"#'"
    ....
    sql="select datepayement, numpayement from payement where motif ='H' and datepayement between '#"& d1 &"#' and '#"& d2 &"#'"

  10. #10
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Par défaut re
    merci sevyc64

    j'ai essaye mai sa me donne la meme erreurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Erreur de compilation Microsoft VBScript error '800a0401' 
     
    Fin d'instruction attendue 
     
    /iisHelp/common/500-100.asp, line 11 
    Dim objASPError, blnErrorWritten, strServername, strServerIP, strRemoteIP Dim strMethod, lngPos, datNow, strQueryString, strURL
    --------------------------------------------------------------------------^
     
    Microsoft OLE DB Provider for ODBC Drivers error '80040e07' 
     
    [Microsoft][Pilote ODBC Microsoft Access] Type de données incompatible dans l'expression du critère. 
     
    /intranet2/Test.asp, line 17

  11. #11
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 250
    Par défaut
    Et avec ceci, tu as aussi une erreur ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sql="select count(motif) as nbr, sum(montant) as somme from payement where motif like'H' and datepayement between " & d1 & " and " & d2
    ....
    sql="select datepayement, numpayement from payement where motif ='H' and datepayement between " & d1 & " and " & d2

  12. #12
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Par défaut
    Bonjour

    Sous Access

    sql="select count(motif) as nbr, sum(montant) as somme from payement where motif like'H' and datepayement between #"& d1 &"# and #"& d2 &"#"
    ....
    sql="select datepayement, numpayement from payement where motif ='H' and datepayement between #"& d1 &"# and #"& d2 &"#"
    (sans les quotes) devrait marcher a condition de mettre les dates au format MM/DD/YYYY (chez moi, en tout cas, je fais comme ça pour les dates).

    Pour le résultat concernant le mois d'avril, je ne sais pas trop. Essaie peut-être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           sql="select datepayement, numpayement from payement where motif ='H' and datepayement >= #"& d1 &"# and datepayement<= #"& d2 &"#"
    (Pour Access, taille maxi = 2 Go (comprenant les objets systèmes), mais 15 Go ! non. Une telle volumétrie justifie de passer à des serveurs de BdD plus "évolués")


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  13. #13
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Par défaut re
    merci roro

    je vai essayé

    a+

  14. #14
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Par défaut re
    mais comment je convertie ma date du format (dd/mm/yy) au format (mm/dd/yy)

  15. #15
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d = format(date1, "MM/dd/yy")
    ERE

  16. #16
    Modérateur
    Avatar de roro06
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    1 480
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Par défaut
    Je n'ose même pas imaginer les temps d'ouverture d'une telle base.
    Pour l'anecdote, Access a des performances étonnantes (en lecture en tout cas) même sur des grosses bases. Des select sur plusieurs tables en inner join ou en left join sur plusieurs centaines de milliers d'enregistrements, pour peu que les index soient correctement définis, m'ont bluffé. J'en ai une en prod, mise à jour toutes les nuits, taille entre 1 et 1,5 Go, Il n'est actuellement pas question d'en changer. Par contre, ça implique un compactage systématique (et donc coupure du service dans la nuit, etc ...)On n'a rien sans rien ! .


    N'oubliez pas de consulter les FAQ ASP et les cours et tutoriels ASP

    " La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
    (J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

    Chuck Norris comprend JC Van Damme.

  17. #17
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Par défaut re
    j'ai pa une erreur mais j'ai auccun resultat

    voici le resultat d'execution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    01/05/2009
    31/05/2009
    0

  18. #18
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 250
    Par défaut
    Ton champ datepayement est-il bien déclaré de type Date dans ta base de données ?

  19. #19
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Par défaut
    oui , je vien de le verifié

  20. #20
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 50
    Par défaut re
    enfin mon probleme est resolue

    il fau que le format de date soit "MM/DD/YYYY"

    et pour convertir la date du format DD/MM/YYYY au Format MM/DD/YYYY

    j'ai trouvé cette fonction ecrie en ASP

    voici le 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
    Function FormatDate(DateValue)
        Dim strYYYY
        Dim strMM
        Dim strDD
     
            strYYYY = CStr(DatePart("yyyy", DateValue))
     
            strMM = CStr(DatePart("m", DateValue))
            If Len(strMM) = 1 Then strMM = "0" & strMM
     
            strDD = CStr(DatePart("d", DateValue))
            If Len(strDD) = 1 Then strDD = "0" & strDD
     
            FormatDate = strMM & "/" & strDD & "/" & strYYYY
     
    End Function
    merci a tous le monde

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

Discussions similaires

  1. [XL-2010] Probleme avec une requete SQL
    Par efo007 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 08/04/2014, 08h30
  2. Probleme avec une requete sql
    Par kraven30 dans le forum Requêtes
    Réponses: 8
    Dernier message: 01/02/2011, 16h47
  3. Probleme avec une requete sql dans VB6 pour un champ date
    Par jacko842 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2009, 08h31
  4. probleme avec une requete sql
    Par kroma23 dans le forum Bases de données
    Réponses: 18
    Dernier message: 10/01/2009, 14h28

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