Votre question

ASP, reqte mise à jour. de l'aide!!!

Tags :
  • Microsoft
  • Programmation
Dernière réponse : dans Programmation
5 Juin 2006 11:44:16

:-(
Salut tout le monde, SVP si quelqu'un peut m'aider à

résoudre ce problème. J'ai cherché partout sur internet et

forum mais sans aucune solution.
Le probleme est tres simple, je fait une application web

en ASP, et quand j'execute une requete mise à jour ça me

donne l'erreur suivante (seulement sous win XP) :

Microsoft JET Database Engine error '80004005'

L'opération doit utiliser une requête qui peut être mise à

jour.

Mais sous win98 ça passe sans le moindre problème.

SVP si qqun aurait une idée??????!!!!!! :-( :-( :-(

Autres pages sur : asp reqte mise jour aide

a c 145 L Programmation
5 Juin 2006 11:47:20

Citation :
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
[Microsoft][ODBC Microsoft Access 97 Driver] The Microsoft Jet database engine cannot open the file '(unknown)'. It is already opened exclusively by another user, or you need permission to view its data.


Peut-être est-ce un problème d'utilisateur ou de DSN.
Le soucis ne doit pas provenir de ton système d'exploitation mais de la configuration de la machine ou de la base de données (droits utilisateurs, type d'authentification, ...)
5 Juin 2006 11:53:06

non j'ai attribué tous les droits de lecture et ecriture au dossier du du site, au dossier de la base de données, à la base de données meme et aussi à la table mais tjrs le meme prob
Contenus similaires
a c 145 L Programmation
5 Juin 2006 11:56:46

Précise donc de quel type de base il s'agit (access, sqlserver2000, sqlserver2003, ...) et comment tu t'y connectes.

Et ce n'est pas une question de droits d'écriture dans un répertoire, mais bien dans la base (l'utilisateur est enregistré? il est autorisé à manipuler les données? la connexion à la DB fonctionne bien depuis ton poste?)

D'un point de vue général, si le script fonctionne bien sur un poste et pas sur un autre, ce n'est pas le script qui est en cause mais bien la configuration (de la base ou du poste)
5 Juin 2006 12:01:40

la base de données Access2000

Et voici le script de connexion :

<%

dim ConnectionString
dim ADO

ConnectionString="Provider=Microsoft.jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath ("\news\database\project.mdb")
Set ADO=Server.CreateObject("ADODB.Connection")

ADO.ConnectionString=ConnectionString
ADO.Open
%>
a c 145 L Programmation
5 Juin 2006 12:11:42

Pas très orthodoxe ça...
Pourquoi tu n'utilises pas un driver access?
  1. <%
  2. Set Conn = Server.CreateObject("ADODB.Connection")
  3. Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};" & " DBQ=" & Server.MapPath("/news/database/project.mdb")
  4. %>
5 Juin 2006 12:17:52

merci je vais essayer et vous tiendrai au courant
5 Juin 2006 12:25:27

le probleme persiste toujours avec le message d'erreur suivant :

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][Pilote ODBC Microsoft Access] L'opération doit utiliser une requête qui peut être mise à jour.

a c 145 L Programmation
5 Juin 2006 12:42:29

donne ta requète complète, j'ai oublié ma boule de cristal
5 Juin 2006 12:59:57

:-P pas de prob pour la boule de cristal.


'''''voici le code de tte la page :


<%@language=VBScript CodePage="1256"%>

<!--#include file="connection.txt"-->

<%
section=request.form("section")
subject=request.form("subject")
body=request.form("body")
%>

<%
Function AddF()

addSQL= "insert into "& section&" (subject,body) values ('"&subject&"','"&body&"')"
ADO.execute(addSQL)
%>
<body>
<p><font face="Simplified Arabic" size="3">Merci..Ajout réussi</font></p>

<%
End Function
%>
<%
If subject="" or body="" then
response.write "Vous n'avez pas saisi tous les champs, retournez et complétez la saisie."
Else
AddF()
End If
%>



<p align="center"><b>Ajout d'informations</b></p>
<form method="POST" action="add_news.asp">
<p><b>Section : <select size="1" name="section">
<option value="general_news">Akhbar moutanawi3a</option>
<option value="tech_news">Akhbar ti9niya</option>
</select></b></p>
<p><b>Titre : <input type="text" name="subject" size="20"></b></p>
<p><b>Contenu :</b></p>
<p><b> <textarea rows="11" name="body" cols="78"></textarea></b></p>
<p><input type="submit" value="Ajouter" name="add"></p>
</form>

<%
ADO.close
Set ADO=Nothing
%>
</body>
a c 145 L Programmation
5 Juin 2006 13:10:15

Je repère quelques trucs génant imho:
1) je ne vois pas la création de ADO ni son ouverture (que je soupçonne êtres dans connection.txt)

2) je verrais plutôt:
addSQL= "insert into "& section&" (subject,body) values ('"&subject&"','"&body&"')"
ADO.execute addSQL,n
if (n <> 1) then
response.write "Erreur d'insertion"
end if

3) met un "on error resume next" en tête de script pour que les erreurs s'affichent sans stopper ton script, ça te permettra de mieux débugger.
5 Juin 2006 13:12:44

oui effectivement pour la création de ADO en voici le contenu du fichier connection.txt :


<%

dim ConnectionString
dim ADO

ConnectionString="Provider=Microsoft.jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath ("\news\database\project.mdb")
Set ADO=Server.CreateObject("ADODB.Connection")

ADO.ConnectionString=ConnectionString
ADO.Open
%>
a c 145 L Programmation
5 Juin 2006 14:29:01

J'ai un très fort doute sur ton MapPath, et plus particulièrement sur l'utilisation des \: je mettrais des /
5 Juin 2006 17:55:28

non le MapPath est juste puisque j'arrive à consulter la table et afficher le contenu, c'est seulement en executant une requete de mise à ajour (ajout ou modification) que l'erreur apparait
a c 145 L Programmation
5 Juin 2006 18:10:22

alors je cale... si ton utilisateur a bien les droits en écriture sur la table, je ne vois vraiment pas...

Vérifie les privilèges (pour être sur) mais sinon...
5 Juin 2006 18:15:14

merci beaucoup CrazyCat pour ta patience.

dernière chose pourrais tu m'indiquer comment attribuer les privilèges ou configuration de l'iis pour voir que ce que je fais est bien juste ou non.

merci beaucoup.
5 Juin 2006 19:29:31

ça y est probleme resolu.
c'etait juste un attribut auquel j'ai pas fait attention.
Merci beaucoup.
4 Juillet 2007 10:42:43

Salut !
De quel attribut s'agit il ? En fait j'ai le même problème sur une base Access2000.

Je veux mettre à jour une table à partir des données d'une autre table.
Lorsque je fais ma requete j'ai le message d'erreur "L'opération doit utiliser une requête qui peut être mise à jour", pourtant si j'affiche la requete en mode "feuille de données" elle récupère bien les bonnes données dans la table source, mais ne fait pas la mise à jour dans la table cible.

Si par contre je fais une requete de mise à jour sur les même champs, en définissant des valeurs fixes (SET F1=28), la mise à jour se fait bien.

Donc je peux lire la table source et ecrire dans la table cible... mais la mise à jour de l'une vers l'autre génère cette "erreur mystère" lol.

J'ai pu trouver des informations sur cette erreur à l'adresse suivante:
http://support.microsoft.com/kb/463266/fr

Conformément aux recommandations de cette page, j'ai recherché et supprimé les doublons de ma table, définis la colonne contenant les numéros identifiants comme index unique et clé primaire, pour la table source comme pour celle de destination. Les deux tables sont accessibles en lecture et en écriture, mais le message d'erreur persiste et je ne vois plus trop ou chercher.

Voici la requete que j'utilise:

UPDATE [TableB] SET F1 = (SELECT Champ1 FROM TableA_bis WHERE TableA_bis.Champ1 = TableB.F1), F2 = (SELECT Champ2 FROM TableA_bis WHERE TableA_bis.Champ2 = TableB.F2), F8 = (SELECT Champ8 FROM TableA_bis WHERE TableA_bis.Champ8 = TableB.F8)
WHERE EXISTS (SELECT * FROM TableA_bis WHERE TableA_bis.Champ11 = TableB.F11);

Si quelqu'un à une idée... :ange: 

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS