Update champ access

drjey Messages postés 40 Date d'inscription mardi 18 mai 2004 Statut Membre Dernière intervention 7 septembre 2006 - 6 sept. 2005 à 15:28
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 - 7 sept. 2005 à 15:08
je cherche a mettre dans main.cityid l'id de la ville a laquelle le reccord correspond dans la table town.id

je recois ce message d'erreur:

Error Type:
Microsoft VBScript runtime (0x800A01C2)
Wrong number of arguments or invalid property assignment: 'con.Execute'
indexing2.asp, line 15

mon code:

<%
Dim temp, doing

Set con = server.createobject("adodb.connection")
con.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\DataBase.mdb"

set rec = server.createobject("adodb.recordset")
rec.activeconnection = con


rec.open "select * from towns"


do while not rec.EOF
con.Execute "update main set cityid=" & rec("id") & " where main.city=""" & rec("town") & """", con,3,1,1
rec.MoveNext
loop



response.write (DONE)
%>

3 réponses

cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
6 sept. 2005 à 17:39
Salut,



Ce sont les arguments qui suivent ton con.Execute qui sont mauvais (tu confonds avec ceux d'un RecordSet ). Je te rappelle comment est formé le conn.Execute :



Connexion.Execute ([commande], [nb], [options])



commande : La chaine SQL

nb : (Optionnel) le nombre de ligne sur
lesquels effectuer le traitements (et/ou le nb de ligne à être renvoyé
dans le cas de la création d'un recordset associé), en gros : ne sert à
rien .

options : (Optionnel) Utilisé pour
spécifier les options des énumérations ExecuteOptions et CommandType,
en gros, ne sert à rien car c'est beaucoup trop rare et trop compliqué
pour être utilisé souvent.

PS : les parenthèses sont optionnelles (c'est mieux de les mettre, mais théoriquement ça marche sans )



Donc dans ton cas :

con.Execute "update main set cityid=" & rec("id") & " where main.city='" & rec("town") & "'"



Dernière précision : pas besoin de tripler les " pour le main.city, en SQL, tu peux (et même doit, je crois) utiliser les ' . (uniquement pour les chaines de caractères, pour le reste, nombres, dates, tu ne mets rien.)


A+++

Nurgle
Il est plus aisé d'être sage pour les autres que pour soi-même !
0
drjey Messages postés 40 Date d'inscription mardi 18 mai 2004 Statut Membre Dernière intervention 7 septembre 2006
7 sept. 2005 à 07:32
J'ai remplace mon con.execute par le tien, mais il me donne un message d'erreur que je ne suis pas sur de comprendre.

Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error (missing operator) in query expression 'main.city='paris''.
/IB2B/indexing2.asp, line 16
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
7 sept. 2005 à 15:08
ah...ça c'est une erreur de SQL.

Normalement tu dois avoir (une fois les valeurs des variables rentrées dans la chaine) :



update main set cityid= 00 where main.city='Paris'

(par exemple...)



Donc toi tu as un problème de guillements !! tu as bien mis le & "'"
(deux guillements doubles avec au milieu un guillement simple) à la fin



con.Execute "Update main Set cityid ="
& rec("id") & " Where main.city='" & rec("town") & "'"







A+++

Nurgle
Il est plus aisé d'être sage pour les autres que pour soi-même !
0
Rejoignez-nous