bernett
Messages postés62Date d'inscriptionjeudi 3 juin 2004StatutMembreDernière intervention20 janvier 2006
-
23 juin 2004 à 13:28
bernett
Messages postés62Date d'inscriptionjeudi 3 juin 2004StatutMembreDernière intervention20 janvier 2006
-
24 juin 2004 à 10:57
J'utilise une connexion ADO pour enregistrer les données d'un formulaire excel dans une table Access.
La connexion fonctionne mais la requête ne marche pas !
Le message affiché est :" Variable Objet ou Variable de bloc With non définie"
Siqq'un a la solution à mon problème je le remercie beaucoup!
Voici ma requête :
sub ...
dim cnx as adodb.connection
dim rst as adodb.recordset
dim cmd as adodb.command
set cnx=new aadodb.connection
set rst=new adodb recordset
HFanny
Messages postés699Date d'inscriptionmercredi 19 février 2003StatutMembreDernière intervention13 mai 201120 23 juin 2004 à 13:31
Je suppose que valeur est une variable que tu as rensigné préalablement.
Si c'est le cas, il faut que tu la concatènes à la requête avec des &
Par ailleurs, il faut que tu entoures cette variable de cotes si ton champ n'est pas numérique.
cmd.commandText = "Update Table1 Set Table1.Champ1= '" & valeur &"'"
bernett
Messages postés62Date d'inscriptionjeudi 3 juin 2004StatutMembreDernière intervention20 janvier 2006 23 juin 2004 à 15:43
Merci Carnez, maintenant j'ai un autre message d'erreur :
"Cette opération n'est pas autorisée sur un objet ayant une référence vers une connexion non valide ou fermée"
carnez
Messages postés120Date d'inscriptionjeudi 31 octobre 2002StatutMembreDernière intervention 2 août 2004 23 juin 2004 à 16:02
alors là, c'est amusant : ta requête pourrait fonctionner, mais ta connexion ne marche pas !!!
j'aurais fait ceci :
j'établis une connexion, mais si elle était encore active, je la ferme
une fois établie, je l'affiche, ou j'affiche une erreur
puis je lance la commande SQL
à ce propos, si valeur est une variable, il faut bien indiquer :
Table1.Champ1= '" & valeur &"'"
dim cnx as NEW adodb.connection
dim rst as NEW adodb.recordset
dim cmd as NEW adodb.command
with cnx
if .state = 1 then .close
.provider = "Microsoft.jet.oledb.4.0"
.connectionString ="..."
.open
if .state = 0 then
msgbox "Connexion loupée !!!!"
else
msgbox "Connexion établie"
endif
end with
with cmd
.commandText = "Update Table1 Set Table1.Champ1= "valeur" "
.CommandText = adCmdTxt
.execute
end with
au moins, tu sauras si ta connexion fonctionne réellement
carnez
Messages postés120Date d'inscriptionjeudi 31 octobre 2002StatutMembreDernière intervention 2 août 2004 23 juin 2004 à 16:22
pourtant, c'est pas sorcier, on devrait y arriver
"Table1.champ1 = '(simple côte pour annoncer une variable texte)"(double côte pour fermer la string) & (perluette de continuation) Valeur(variable définie en string) & "double côte)'(simple côte)"(double côte)
auparavant, tu pourrais faire un
debug.print valeur et dis moi ce qu'elle a dans le ventre
bernett
Messages postés62Date d'inscriptionjeudi 3 juin 2004StatutMembreDernière intervention20 janvier 2006 23 juin 2004 à 17:09
Voila ou j'en suis resté, si qqu'un trou ve l'erreur ! Bravo!
dim cnx as NEW adodb.connection
dim rst as NEW adodb.recordset
dim cmd as NEW adodb.command
set cnx=new adodb.connection
set cmd=new adodb.command
dim x as string
x="mars"
with cnx
if .state = 1 then .close
.provider = "Microsoft.jet.oledb.4.0"
.connectionString ="..."
.open
if .state = 0 then
msgbox "Connexion loupée !!!!"
else
msgbox "Connexion établie"
endif
end with
with cmd
.CommandType = adCmdTxt
.commandText = "Update Table1 Set Table1.Champ1= '" & x & "'"
.execute 'erreur à cette ligne'
end with
carnez
Messages postés120Date d'inscriptionjeudi 31 octobre 2002StatutMembreDernière intervention 2 août 2004 23 juin 2004 à 17:32
c'est vrai qu'on devient chèvre !!!!
reprenons de puis le début :
1- propriétés de ton champ Champ1 ?
2- y a t'il des enregistrements dans ta table Table1 ?
3- tu veux bien mettre la même valeur dans tous les enregistrements de ta table Table1 ?
4- qu'indique le msgbox (loupée ou établie ?)
si tout ça est cohérent, essaie :
with rs ' c'est un NEW ADODB.recordset
if .state = 1 then .close
.open "select * from table1", cnx, adopenkeyset, adlocoptimistic
do until .eof
![champ1] = x
.update
.movenext
loop
end with
rs.close
set rs = nothing