Générer fichier sous ASP 3

Résolu
shadowfox666 Messages postés 64 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 8 mars 2012 - 1 oct. 2007 à 14:45
shadowfox666 Messages postés 64 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 8 mars 2012 - 2 oct. 2007 à 14:10
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

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 36
1 oct. 2007 à 20:42
3
shadowfox666 Messages postés 64 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 8 mars 2012
2 oct. 2007 à 14:10
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 !
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 36
1 oct. 2007 à 20:29
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
0
shadowfox666 Messages postés 64 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 8 mars 2012
1 oct. 2007 à 20:34
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é...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
shadowfox666 Messages postés 64 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 8 mars 2012
1 oct. 2007 à 20:50
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 !!!!
0
shadowfox666 Messages postés 64 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 8 mars 2012
2 oct. 2007 à 09:41
Je suis revenu sur le tuotrial et effectivement, ça m'a autorisé, l'écriture pour mon fichier.
Merci beaucoup.
0
shadowfox666 Messages postés 64 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 8 mars 2012
2 oct. 2007 à 11:09
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.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 36
2 oct. 2007 à 13:02
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
0
shadowfox666 Messages postés 64 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 8 mars 2012
2 oct. 2007 à 13:12
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.
0