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 :

Export d'une requête SQL provenant d'une base Access vers un fichier Excel


Sujet :

ASP

  1. #1
    Futur Membre du Club
    Étudiant
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 8
    Points
    8
    Par défaut Export d'une requête SQL provenant d'une base Access vers un fichier Excel
    Bonjour tout le monde,

    Après x heures de recherche de modélisation de ma page et de programmation à tout va, j'ai perdu le bout du fil et je rame....

    Je vous explique mon souhait, j'ai une page où je choisis par le biais d'une liste le type d'exploitation de système de serveurs (ex: Linux, Windows 2K3, Windows 2000...), et en cliquant sur le bouton appuyer ça me valide mon formulaire et on accède à notre fameuse page qui récupère la valeur donnée par le formulaire et l'intègre à notre requête SQL, ensuite la requête devrait être interprétée par mon serveur et qu'il me ressorte le résultat de cette requête sous forme d'un fichier excel pour du reporting.

    Ce qu'il me manque c'est de la cohésion et une certaine compréhension de mon problème dans mon code ASP afin d'avancer dans ma tâche.

    Je vous remercie d'avance messieurs pour l'aide apportée !

    Cordialement,

    Kév'


    ps: voici le code de la page.

    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 item
    db_SQL = "SELECT Serveur, OS FROM THardware WHERE OS='"&OS&"' AND AEteSupprime=No"
     
    set oRSt = server.CreateObject("ADODB.RecordSet")
    db_conn="DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=C:\Inetpub\wwwroot\Bdd\ServeursGy.mdb;" 
     
    Response.ContentType="Application/xls"
    Response.AddHeader "Content-Disposition", "filename=ReportingServeursGy.xls;" ' le nom du fichier
     
    oRSt.open db_SQL, db_conn, 3, 1 
    if not oRst.EoF then %>
    	<table><tr>
    	<%
    		for each item in oRst.fields
    			response.write "<td>" & item.name & "</td>"
    		next %>
    	</tr>
    	<%
    	do while not oRst.EoF
    		response.write "<tr>"
    		for each item in oRst.fields
    			response.write "<td>" & item.value & "</td>"
    		next
    		response.write "</tr>"
    		oRst.MoveNext
    	Loop %>
    	</table>
    	<%
    else %>
    	<table><tr><td>Rien à exporter</td></tr></table><%
    end if 
    set oRst = nothing
    %>

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    522
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 522
    Points : 522
    Points
    522
    Par défaut
    Salut,

    Quel est le problème exactement ? Bug, plantage ?
    J'ai du mal à savoir ce que tu cherches.

  3. #3
    Futur Membre du Club
    Étudiant
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 8
    Points
    8
    Par défaut
    Ca me plante littéralement, en fait ca me renvoit comme si la page n'existait pas et pas de fichier créer. Donc un problème dans mon code mais je n'arrive pas à voir d'où cela vient.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    522
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 522
    Points : 522
    Points
    522
    Par défaut
    Tu peux mettre le message exact ?

  5. #5
    Futur Membre du Club
    Étudiant
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 8
    Points
    8
    Par défaut
    Rectification l'ami, ca ne me met pas de messages d'erreur mais ca renvoit directement "Rien à exporter" dans mon fichier excel, comme s'il n'arrivait pas à interpréter ma requête et enregistrer le résultat dans mon fichier, bizarre.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    522
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 522
    Points : 522
    Points
    522
    Par défaut
    Ca sera simple à débuger alors. Exécute la requête suivante sur ton manager SQL (Access dans ton cas il me semble).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db_SQL = "SELECT Serveur, OS FROM THardware WHERE OS='"&OS&"' AND AEteSupprime=No"
    Et vérifie que tu as bien qq chose en sortie.

  7. #7
    Futur Membre du Club
    Étudiant
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 8
    Points
    8
    Par défaut
    Sous Access quand j'écris la requete ca me sort correctement les résultats escomptés.

    Donc je suis toujours dans le vague là arf

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

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

    db_SQL = "SELECT Serveur, OS FROM THardware WHERE OS='"&OS&"' AND AEteSupprime=No"
    De quel type est le champs aEteSupprime ?

    Booleen ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db_SQL = "SELECT Serveur, OS FROM THardware WHERE OS='"&OS&"' AND AEteSupprime=false"
    String ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db_SQL = "SELECT Serveur, OS FROM THardware WHERE OS='"&OS&"' AND AEteSupprime='No'"

  9. #9
    Futur Membre du Club
    Étudiant
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 8
    Points
    8
    Par défaut
    Coucou roro,

    le champ AEteSupprime est de type Oui/Non sous access une case à cocher (coch""=Yes, non cochée=No). voilà pour ton information.

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

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

    Donc c'est un booléen. Essaye avec ma première propo, ça devrait le faire

  11. #11
    Futur Membre du Club
    Étudiant
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 8
    Points
    8
    Par défaut
    Ok j'ai testé ta solution sous Access ca marche, mais en l'incorporant dans mon code toujours la même histoire : Rien à Exporter ...

    Je pense que mon code dans la mise en forme et la récupération des valeurs doit être mauvais.

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 480
    Points : 1 978
    Points
    1 978
    Par défaut
    Ya pas grand-chose dans le code qui risque de planter. Pour tes tests, mets en commentaire les deux lignes suivantes, pour voir le résultat directement dans ton sniffer :
    Response.ContentType="Application/xls"
    Response.AddHeader "Content-Disposition", "filename=ReportingServeursGy.xls;
    ça te permettra de déboguer plus rapidement. rajoute également :
    (ça à l'air de rien, mais c'est terriblement efficace ;-)
    au passage, tu n'as pas de on error resume next, dans ta page ? si oui, vires-le.

    Enfin, au lieu de :
    "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=C:\Inetpub\wwwroot\Bdd\ServeursGy.mdb;"
    Mets plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db_conn="DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=" & Server.mapPath("Bdd\ServeursGy.mdb")
    Avec tout ça ...

  13. #13
    Futur Membre du Club
    Étudiant
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 8
    Points
    8
    Par défaut
    Bonjour tout le monde en cette nouvelle journée,

    Merci roro pour ton aide mais je rencontre toujours des problèmes après les tests faits avec ton code.

    D'une part j'ai bien mis en com' les Response concernant le fichier excel donc ok cela s'affiche en html.

    La requete s'affiche bien, par contre j'ai rencontré un probleme quand j'ai voulu changer mon path, quand j'ai mis le tien à la place ca m'a fait buggé (affichage d'une page comme quoi la page n'existait pas, donc probleme de chemin) alors j'ai remis celui d'origine qui marche bien.

    Mais toujours le probleme comme quoi il ne veut pas afficher le résultat de ma requete donc le probleme vient se cibler sur cette partie :

    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
     
     
    if not oRst.EoF then %>
    	<table><tr>
    	<%
    		for each item in oRst.fields
    			response.write "<td>" & item.name & "</td>"
    		next %>
    	</tr>
    	<%
    	do while not oRst.EoF
    		response.write "<tr>"
    		for each item in oRst.fields
    			response.write "<td>" & item.value & "</td>"
    		next
    		response.write "</tr>"
    		oRst.MoveNext
    	Loop %>
    	</table>

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    522
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 522
    Points : 522
    Points
    522
    Par défaut
    C'est quoi ce message que tu cites souvent : la page n'existe pas.
    A tout hasard, tu ne serais pas sur IE pour tes tests, et tu n'aurais pas l'option "Afficher messages d'erreur simplifiés" d'activer ? Cette option t'empêche de voir le détail des erreurs d'une page ASP.

  15. #15
    Futur Membre du Club
    Étudiant
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 8
    Points
    8
    Par défaut
    Merci Tekpaf je ne connaissais pas cette option, et je ne comprenais pas pourquoi ce ne m'affichait plus des erreurs explicites pour ASP.

    Donc voilà on va y voir un peu plus clair, donc j'ai bien remis le path que m'a donné roro, et ca me marque cela comme erreur


    Microsoft OLE DB Provider for ODBC Drivers error '80004005'

    [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x50c Thread 0x11bc DBC 0x15b5d84 Jet'.

    /bdd/test2.asp, line 14


    line 14:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    oRst.open db_SQL, db_conn, 3, 1

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    522
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 522
    Points : 522
    Points
    522
    Par défaut
    Je ne suis pas un pro d'Access. Tu peux voir plus d'infos par là :
    http://support.microsoft.com/kb/295297

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

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

    2 choses :

    1/ l'utilisation de server.mapPath : Si la racine de ton site est c:/inetPub/wwwroot, la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Server.mapPath("Bdd\ServeursGy.mdb")
    Renverra :
    c:/inetPub/wwwroot/Bdd/ServeursGy.mdb
    C'est indispensable si tu doit heberger ton site sur un serveur distant : il est probable que la base de données se trouvera dans un autre repertoire que celui de ta machine de dev.
    Dans l'immédiat, tu peux le mettre de côté et y revenir après. Donc garde, pour le developpement :
    "DRIVER={Microsoft Access Driver (*.mdb)}; " & "DBQ=C:\Inetpub\wwwroot\Bdd\ServeursGy.mdb;"
    2/ Pour ton premier problème : "rien a exporter" : la condition oRst.EoF est vérifiée, ça veux dire que ton recordset est vide, et que donc aucun enregistrement ne remplit la condition . Ouvre ta BdD Access et vérifie tes enregistrements. Vides le cache de ton navigateur (beaucoups de surprises de ce côté là). Utilises d'autres navigateurs (Firefox, pour ne pas le citer, ou Opera). Encore une fois, il n'y a pas d'erreur dans ton code, donc l'erreur vient des données (ou d'un élément qu'on n'a pas ici).

  18. #18
    Futur Membre du Club
    Étudiant
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 8
    Points
    8
    Par défaut
    Merci roro pour ton aide.

    Donc comme je travaille actuellement sur une VM test j'ai laissé comme tu m'as dit avec le Server.mapPath.

    Ce qui me parait bizarre quand je fais admettons ma requete sous Access il me renvoit les bon enregistrements, donc ca ne vient pas de là. De plus j'ai vide mon cache et j'ai installée firefox pour faire mes tests toujours la meme chose qui revient l'ami.

    Microsoft OLE DB Provider for ODBC Drivers error '80004005'

    [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x6ec Thread 0x1490 DBC 0x15b7024 Jet'.

    /bdd/test2.asp, line 14
    ca réfère à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    oRst.open db_SQL, db_conn, 3, 1
    Par contre à quoi correspond les 2 derniers chiffres, comment décompose - t - on cette ligne ?

    on ouvre la variable de connection, on y exécute la variable contenant la requete SQL, et le 3 , 1 à quoi correspondent - ils ?

    Kiss et merci pour tout le débat et l'aide apporté, vous êtes bien sympas !

    Amicalement,
    Kév'

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

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

    Pour ton erreur, fait ça doit te renvoyer ce que tu avais avant, c'est à dire le chemin de ta base de données.Vérifies-le .

    Pour le reste, le 3 correspond au type de curseur (3=curseur statique) et le 1 correspond au type de verrou (1=readOnly) .Voir les constantes lockTypeEnum et cursorTypeEnum)

    Ce qui me parait bizarre quand je fais admettons ma requete sous Access il me renvoit les bon enregistrements
    C'est ça qui me le troue le plus, en fait. Tu fais un copier-coller de ta requête affichée par
    response.write(db_SQL) ?

  20. #20
    Futur Membre du Club
    Étudiant
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Points : 8
    Points
    8
    Par défaut
    Voilà après avoir fait mes 2 response.write avant :

    oRst.open db_SQL, db_conn, 3, 1
    J'ai changé aussi mon Server.mapPath("ServeursGy.mdb") car ca m'affichait 2 fois /bdd/bdd.

    Donc ca me donne ceci au final l'ami roro :

    SELECT Serveur, OS FROM THardware WHERE (OS='LINUX' AND AEteSupprime=False)DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\Inetpub\wwwroot\Bdd\ServeursGy.mdb

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [SQL] Choix dans une liste déroulante issue d'une requête SQL
    Par Moustic74 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/06/2007, 14h06
  2. Réponses: 6
    Dernier message: 23/04/2007, 15h21
  3. [SQL] Comment automatiser une requête SQL alimentée par un formulaire HTML?
    Par tse_tilky_moje_imja dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/06/2006, 23h46
  4. [SQL] Recherche d'une requête SQL
    Par kilkikou dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/06/2006, 16h00
  5. [MySQL] Remplissage d'une liste déroulante à partir d'une requête SQL
    Par gaucher dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 11/05/2006, 15h46

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