Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBscript dans asp non .net

8 réponses
Avatar
Beaurin Gauthier
Bonjour ;)
Je travail en ce moment sur un site intranet en asp non .net et utilise du
VBscript.
Ne trouvant pas de catégories correspondantes je poste ici .
J'utilise une base de données Acces que j'indique dans un fichier global.asa
tel qu'ici :
**code de global.asa**

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
sub session_onstart

Session("stagiairesDDE_ConnectionString") =
"DSN=stagiairesDDE;DBQ=\\web-mk-stagiaire\nouveau\dbsite.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=512;PageTimeout=5;"
Session("stagiairesDDE_ConnectionTimeout") = 15
Session("stagiairesDDE_CommandTimeout") = 30
Session("stagiairesDDE_RuntimeUserName") = ""
Session("stagiairesDDE_RuntimePassword") = ""
end sub
</SCRIPT>

**fin de global.asa**

Dans mes pages asp, je cherche donc a lire dans cette base de données ainsi

** page asp **
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Session("stagiairesDDE_ConnectionString"),
Session("stagiairesDDE_RuntimeUserName"),
Session("stagiairesDDE_RuntimePassword")
Set rsCustomers = conn.Execute(strSQL)
** fin de page asp**

Mais la page que j'obtiens indique qu'il ne trouve pas l abase de données
-_-" . Si quelqu'un voit une erreur ou une aberration, je l'en remercierai ;)

(ps : je suis assez limité niveau configuration et donc je ne peux
configurer ISS ou autre...)

8 réponses

Avatar
jbongran
Beaurin Gauthier wrote:
Bonjour ;)
Je travail en ce moment sur un site intranet en asp non .net et
utilise du
VBscript.
Ne trouvant pas de catégories correspondantes je poste ici .
J'utilise une base de données Acces que j'indique dans un fichier
global.asa
tel qu'ici :
**code de global.asa**

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
sub session_onstart

Session("stagiairesDDE_ConnectionString") > "DSN=stagiairesDDE;DBQ=web-mk-stagiairenouveaudbsite.mdb;DriverId%;FIL=MS
Access;MaxBufferSizeQ2;PageTimeout=5;"
Session("stagiairesDDE_ConnectionTimeout") = 15
Session("stagiairesDDE_CommandTimeout") = 30
Session("stagiairesDDE_RuntimeUserName") = ""
Session("stagiairesDDE_RuntimePassword") = ""
end sub
</SCRIPT>

**fin de global.asa**

Dans mes pages asp, je cherche donc a lire dans cette base de données
ainsi

** page asp **
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Session("stagiairesDDE_ConnectionString"),
Session("stagiairesDDE_RuntimeUserName"),
Session("stagiairesDDE_RuntimePassword")
Set rsCustomers = conn.Execute(strSQL)
** fin de page asp**

Mais la page que j'obtiens indique qu'il ne trouve pas l abase de
données -_-" . Si quelqu'un voit une erreur ou une aberration, je
l'en remercierai ;)

(ps : je suis assez limité niveau configuration et donc je ne peux
configurer ISS ou autre...)


En principe, soit on utilise un DSN, soit un Driver (odbc ou OLE), mais les
deux mixés dans la même connectionstring, j'ai un doute.
http://www.connectionstrings.com/

Il est aussi possible de creer un fichier .udl (creer un document texte et
le renommer en par exemple testaccess.udl.)
Double cliquer sur ce fichier, et commencer par l'onglet de droite afin de
spécifier le pilote à utiliser, puis suivre les onglets vers la droite.
Une fois la configuration finie, fermer l'assistant, puis ouvrir le fichier
testaccess.udl avec le bloc-notes, il contient la connectionstring adéquate,
même si ce n'est pas toujours la plus "punchy" ;-)

Avatar
jbongran
jbongran wrote:
[...]
Double cliquer sur ce fichier, et commencer par l'onglet de droite
Il fallait lire "commencer par l'onglet de gauche"

Désolé de cette erreur.

Avatar
Beaurin Gauthier
Mon fichier global.asa a désormais cette tête gràce au .udl

***global.asa***

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
sub session_onstart

Session("stagiairesDDE_ConnectionString") = "DSN=MS Access
Database;DBQ=(adresse ip du
serveur)nor-intra02web-MK-stagiairewwwrootnouveaudbsite.mdb;DefaultDir=(adresse
ip du
serveur)nor-intra02web-MK-stagiairewwwrootnouveau;DriverId%;FIL=MS
Access;MaxBufferSize 48;"
Session("stagiairesDDE_ConnectionTimeout") = 15
Session("stagiairesDDE_CommandTimeout") = 30
Session("stagiairesDDE_RuntimeUserName") = ""
Session("stagiairesDDE_RuntimePassword") = ""
end sub
</SCRIPT>

***fin de global.asa***

et mon fichier asp celle ci

***asp***

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Session("stagiairesDDE_ConnectionString"),
Session("stagiairesDDE_RuntimeUserName"),
Session("stagiairesDDE_RuntimePassword")
Set rsCandidature = Conn.Execute(sql)

***asp***

avec rsCandidature comme recordset.

Lorsque je teste, le navigateur me sort :
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no default
driver specified

Merci d'avance

(pour rajouter des détails, le serveur est un serveur intranet dont je n'ai
que les droit d'écriture. Je dispose de Frontpage 2003 (sic -_-), MS script
Editor (version incluse dans office 2003) et la page asp est dans un sous
dossier de clui qui contien global.asa et la base de données en .mdb)
Avatar
Beaurin Gauthier
Je me rends compte que j'ai pas été très clair :o

D'abord, merci jbongran :)

Ensuite, petite réexplication. Mon site intranet est dans un dossier dans
lequel se situ le fichier default.asp (page d'accueil), global.asa (dont vous
avez l'intégrale ci dessus) la base de données (dbsite.mdb) et des dossiers.
Dans un de ces dossiers, j'ai créé un formulaire html qui renvoit ses
informations vers une page asp qui envoir tout sa à la base de données. J'ai
donc une requète sql, et je récupère les données dans un recordset, bref, un
classique. Mais je n'arriva pas à faire communiquer la base de données avec
mon site.

Remerci d'avance :)

(j'ai commencé l'asp il y a une semaine, désolé de ce noobise :s :D)



Mon fichier global.asa a désormais cette tête gràce au .udl

***global.asa***

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
sub session_onstart

Session("stagiairesDDE_ConnectionString") = "DSN=MS Access
Database;DBQ=(adresse ip du
serveur)nor-intra02web-MK-stagiairewwwrootnouveaudbsite.mdb;DefaultDir=(adresse
ip du
serveur)nor-intra02web-MK-stagiairewwwrootnouveau;DriverId%;FIL=MS
Access;MaxBufferSize 48;"
Session("stagiairesDDE_ConnectionTimeout") = 15
Session("stagiairesDDE_CommandTimeout") = 30
Session("stagiairesDDE_RuntimeUserName") = ""
Session("stagiairesDDE_RuntimePassword") = ""
end sub
</SCRIPT>

***fin de global.asa***

et mon fichier asp celle ci

***asp***

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Session("stagiairesDDE_ConnectionString"),
Session("stagiairesDDE_RuntimeUserName"),
Session("stagiairesDDE_RuntimePassword")
Set rsCandidature = Conn.Execute(sql)

***asp***

avec rsCandidature comme recordset.

Lorsque je teste, le navigateur me sort :
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no default
driver specified

Merci d'avance

(pour rajouter des détails, le serveur est un serveur intranet dont je n'ai
que les droit d'écriture. Je dispose de Frontpage 2003 (sic -_-), MS script
Editor (version incluse dans office 2003) et la page asp est dans un sous
dossier de clui qui contien global.asa et la base de données en .mdb)


Avatar
jbongran
Beaurin Gauthier wrote:
Mon fichier global.asa a désormais cette tête gràce au .udl

***global.asa***

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
sub session_onstart

Session("stagiairesDDE_ConnectionString") = "DSN=MS Access
Database;DBQ=(adresse ip du
serveur)nor-intra02web-MK-stagiairewwwrootnouveaudbsite.mdb;DefaultDir=(adresse
ip du
serveur)nor-intra02web-MK-stagiairewwwrootnouveau;DriverId%;FIL=MS
Access;MaxBufferSize 48;"
Session("stagiairesDDE_ConnectionTimeout") = 15
Session("stagiairesDDE_CommandTimeout") = 30
Session("stagiairesDDE_RuntimeUserName") = ""
Session("stagiairesDDE_RuntimePassword") = ""
end sub
</SCRIPT>

***fin de global.asa***

et mon fichier asp celle ci

***asp***

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Session("stagiairesDDE_ConnectionString"),
Session("stagiairesDDE_RuntimeUserName"),
Session("stagiairesDDE_RuntimePassword")
Set rsCandidature = Conn.Execute(sql)

***asp***

avec rsCandidature comme recordset.

Lorsque je teste, le navigateur me sort :
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Driver Manager] Data source name not found and no
default driver specified

Merci d'avance

(pour rajouter des détails, le serveur est un serveur intranet dont
je n'ai que les droit d'écriture. Je dispose de Frontpage 2003 (sic
-_-), MS script Editor (version incluse dans office 2003) et la page
asp est dans un sous dossier de clui qui contien global.asa et la
base de données en .mdb)


Erreur du débutant: vouloir remplir toutes les cases et champs possibles ;-)
Si tu utilises un dsn, alors seul le nom du dsn suffit, tout le reste ou
presque est superflu puisque déja déclaré dans le DSN.
De plus, si tu veux utiliser un DSN dans le contexte ASP (c'est à dire dans
le contexte de IIS) il faut que ce DSN soit un DSN system, pas un DSN
utilisateur.

Ta base de données est sur un autre serveur que le serveur web ?
Si ce n'est pas le cas, simplifie ta chaine de connexion comme suit :
' Global.asa
'Retourne le chemin physique de la base de données
dbPath = Server.MapPath("/nouveau/dbsite.mdb")
'Chaine de connexion dans une variable application
Session("stagiairesDDE_ConnectionString") =
"Provider=Microsoft.Jet.OLEDB.4.0;Password=motdepasse;User
ID=utilisateur;Data Source=" & dbPath & ";Persist Security Info=True"

' Page Asp
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Session("stagiairesDDE_ConnectionString")
sql = "Select * from lenomdelatable"
Set rsCandidature = Conn.Execute(sql)
Do while Not Rs.EoF
' retourne première colonne du recordset suivi d'un retour a la ligne
Response.Write Rs(0).Value & "<br>" & vbCrLf
Loop
Rs.Close
Set Rs = Nothing
Conn.Close
Set Conn = Nothing

Quelques exemples possibles (cliquer sur les exemple commençant par
Database, puis en bas de chaque exemple, cliquer sur "view the asp code"):
http://asp101.com/samples/

Avatar
Beaurin Gauthier
Merci, sa marche bien pour ma page.

Par contre, sa marche pas sur d'autres pages avec un copier/coller du set
conn et du conn.open.

Je vais réessayer, mais dans l'absolu, sa reste bizarre :)
Avatar
jbongran
Beaurin Gauthier wrote:
Merci, sa marche bien pour ma page.

Par contre, sa marche pas sur d'autres pages avec un copier/coller du
set conn et du conn.open.

Je vais réessayer, mais dans l'absolu, sa reste bizarre :)


Essayes de faire un response.Write des variables de session avant de t'en
servir, en général c'est très efficace pour comprendre ce qui se passe (ou
ce qui ne se passe pas ;-)
N'hésites pas si tu coinces.

Avatar
Beaurin Gauthier

Essayes de faire un response.Write des variables de session avant de t'en
servir, en général c'est très efficace pour comprendre ce qui se passe (ou
ce qui ne se passe pas ;-)
N'hésites pas si tu coinces.


En fait, c'était juste un problème de time out :3.
Sinon, j'ai un autre petit problème. La base de données refuse tous mes
ordres DML (insert update et delete) même avec access en libre droit pour
tout le monde.
Pour les updates, il me dit "operation use an updateable query".
Si j'utilise un objet Command, comme je connais pas tous les arguments, sa
me retourne une erreur. (avec le mini intellesense de MS script editor, je
sais qu'il faut mettre un "name", un "type", une "direction", une "size", et
un "value" mais je sais pas quoi mettre dedand°°)
Pour les delete, il me dit simplement qu'il ne peut pas les faire >_>.
Merci d'éclairer ma lanterne de newbie :)