Générer fichier sous ASP 3 [Résolu]

Signaler
Messages postés
64
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
8 mars 2012
-
Messages postés
64
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
8 mars 2012
-
Bonjour,

Je suis encore débutant en ASP, j'en fais depuis 3mois maxi...
Je dois creer un script qui doit me permettre de générer un fichier CSV à l'aide d'une requête SQL pour récupérer des infos d'une base de données.
Seulement j'ai un soucis lorsque je tente de lancer le script, l'autorisation d'écriture m'est refusée code d'erreur "800a0046". Je ne vois pas d'où vient cette erreur...
J'ai utilisé un FSO pour la création de mon fichier, mais je ne sais même pas si la suite de mon code est bon puisque je n'arrive même pas à dépasser cette partie de mon script.

Dim FSO, fic

' instanciation ton objet FSO
Set FSO = CreateObject("Scripting.FileSystemObject")

fic = Server.MapPath("../dossier/fichier.csv")

Set Ftxt =  FSO.createTextFile(fic ,true) 'true=ecrase

Merci de votre aide...

9 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Messages postés
64
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
8 mars 2012

Ok, je viens de comprendre cette variable Connect n'a aucune raison d'exister, il y a déjà un objet "ADODB.Connection" déclaré dans le fichier connexion.asp qui porte un autre nom. C'est cette varaible là qu'il fallait utiliser, il n'y a plus de problème de connection.

Merci de m'avoir aidé et bonne continuation !

NIRVANA is never enough ! It' in the spirit !
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut


Microsoft VBScript runtime error '800a0046'

-->

Permission denied

C'est un probleme de permission

Ton fichier existe-t-il deja.
As-tu le droit d'écrire dans le répertoire?
C'est peut etre pas le meme utilisateur.

BON  Courage
Messages postés
64
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
8 mars 2012

Le fichier n'existe pas encore pour le moment et je suis sur une session admin. On m'a dit que IIS restreint les droits pour raisons de sécurité, je suis allé voir pour paramétrer ça mais je n'ai rein trouvé...
Messages postés
64
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
8 mars 2012

Merci pour ton lien,  je vais examiner tout ça, seulement je n'ai pas le code sous la main ici, je te tiens au courant dès demain.

En tout cas merci beaucoup !!!!
Messages postés
64
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
8 mars 2012

Je suis revenu sur le tuotrial et effectivement, ça m'a autorisé, l'écriture pour mon fichier.
Merci beaucoup.
Messages postés
64
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
8 mars 2012

Rebonjour,

Désolé de déranger à nouveau, mais je suis plutôt perdu sur ce script.

J'ai l'erreur suivante
Type d'erreur :

ADODB.Recordset (0x800A0E7D)
/marge/testcsv.asp, line 40

La connection est fermée ou non valide dans ce contexte.

Voici mon code en entier :

<!-- #INCLUDE file= "connexion.asp" -->

<%

Dim ReqSQLUn , ReqSQLDeux, sql, tableun, tabledeux, Connect

Set Connect = Server.CreateObject("ADODB.Connection")

Set ReqSQLUn = Server .CreateObject("ADODB.RecordSet")

Set ReqSQLDeux = Server.CreateObject("ADODB.RecordSet")

Dim FSO, fic, Ftxt

' Instanciation objet FSO
Set FSO = CreateObject("Scripting.FileSystemObject")

fic = Server.MapPath("../dossier/fichier.csv")

Set Ftxt =  FSO.createTextFile(fic ,true) 'true= ecrase
 
sql = "SELECT categorie, table, table2 FROM liste_produits"

ReqSQLUn.Open sql, Connect
if ReqSQLUn.EOF <gras>false and ReqSQLUn.BOF</gras> false Then

    do until ReqSQLUn.EOF

        tableun = ReqSQLUn("table")

        tabledeux = ReqSQLUn("table2")

        ' maintenant qu on sait quelle table on va inclure dans la prochaine requete on peut passer a la suite
        sql "SELECT * FROM " & tableun & " , " & tabledeux & " WHERE" & tableun & ".Marque" & " " & tabledeux & ".Marque"

        ReqSQLDeux.Open sql , Connect

        ' on determine si on a des enregistrements
        if ReqSQLDeux.EOF  <gras>false AND ReqSQLDeux.BOF </gras> false Then

            do until ReqSQLDeux.EOF

                ' et la tu écris chaque ligne dans ta ressource FSO

                Fso.WriteLine(ReqSQLDeux("Designation") & ";" & ReqSQLDeux("Marque") & ";" & ReqSQLDeux("Prix"))

                ' et on passe au suivant jusqu a ce que la requete finisse

                ReqSQLDeux.MoveNext

            loop

        End If         

        ReqSQLDeux.Close  

        ' on ferme la requete ( elle sera réouverte a la prochaine ligne de ReqSQLUn )

        ReqSQLUn.Movenext

    loop 

End if

ReqSQLUn.Close

Fso.Close

Ftxt.Close

Set sql = Nothing

Set ReqSQLUn = Nothing

%>

<!-- #INCLUDE file="deconnexion" -->

Merci pour votre aide, je dois finir ça pour venredi, seulement quand a bossé qu'en ASP.NET, revenir sur ASP3 ça fait bizarre...

Merci pour votre aide.
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut

Il te faut peut etre deux variables connections
sur la meme base.

Set Connect = Server .CreateObject("ADODB.Connection")
Set Connect2 = Server.CreateObject("ADODB.Connection")

Bon courage
Messages postés
64
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
8 mars 2012

Salut,

J'ai essayé de mettre, deux variables de connections respectivement pour les 2 variables requêtes SQL, mais ça ne fonctionne pas. Le problème doit venir d'ailleurs mais je trouve ça étrange.