Requetes sous access

aaliyan Messages postés 104 Date d'inscription samedi 12 mars 2005 Statut Membre Dernière intervention 30 avril 2007 - 19 avril 2007 à 09:35
ba3ouda Messages postés 12 Date d'inscription vendredi 11 août 2006 Statut Membre Dernière intervention 2 novembre 2008 - 26 avril 2007 à 12:38
Bonjour, j'aimerais savoir, si c'est possible, lorsque l'on a pas trouvé de champs dans une requete select, si c'est possible d'ajouter une valeur dans une table. Plus concrètement, voilà mon code :

          sql = "select trig from utilisateur where nom=" & Var1
          Set rs = db.OpenRecordset(sql)
     'Si on a trouvé on fait un update
          Var1 = rs.Fields("trig")          sql "update fiche set trig_dem '" & Var1 & "' where titre = '" & Replace(Fichier, "'", "''") & "'"
   'Sinon un insert
.....
          db.Execute sql, dbFailOnError
          db.Close

Le problème c'est que lorsque l'on fait un rs.OpenRecordset, cela plante car la requetee ne trouve rien. Merci pour votre aide.

28 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
19 avril 2007 à 12:43
Salut Nicko11,

Je pense que c'est une erreur d'interprétation de notre ami..Regarde mon post de 10h51 et sa réponse de 10h55....
Il veut vérifier dans un champ si Var existe...
Je suis partis dans un délire avec les requêtes, alors qu'avec une clé primaire c'est beaucoup plus simple.....Zut et crottre na... pleins de post inutile pour moi si j'avais mieux compris sa question...

Bien ton avatar...nicko110..c'est plus sympa...

A+
Exploreur

 
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
19 avril 2007 à 13:06
Si t'as un pb avec ta requête et que tu es sous access.
Fais un debug.print SQL avant de faire ton recordset
Récupère la ligne que tu crées et colle la dans une requête sous access.
Regarde quelles sont les erreurs et les choses à modifier pour que ça marche sous access. Une fois que c'est fait, tu n'as plus qu'à récupérer les corrections et les appliquer dans ton code. Sinon t'y es encore la semaine prochaine... Surtout si tu écoutes les conseils de l'Exploreur... :p
PS: Tant pis et pas Tampis ;)
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
19 avril 2007 à 13:42
"Oui, c'est ca que je veux faire", mais ca quoi ca je lui posait une question aussi avant LOL.

Moi j'aimerais que ce soir clair une fois pour toute car comme tu dis plein de posts pour rien au final (et c'est pas de ta faute Exploreur).

Et donc, si c'est un pb de record, ta solution est la plus simple et la plus rapide.

Pour l'avatar, en fait, j'adore Final Fantasy (le XII est bien meme si certaine enigmes son mal fichues, on s'ecarte la LOL), mais je vais p'tet changer car il est tout maigrichon (Bibi personnage de FFIX). La tien est stylé et unique, dont on te repert direct.
0
aaliyan Messages postés 104 Date d'inscription samedi 12 mars 2005 Statut Membre Dernière intervention 30 avril 2007
19 avril 2007 à 15:42
Je n'ai aucune erreur avec ce code, mais rien ne s'insert dans ma table :

          For Each champ In bdd.Tables("Fiche").Columns
             If champ = Chemin Then GoTo Fini
             Next
          sql = "insert into fiche (titre) values ('" & Var & "')"
          db.Execute sql
          db.Close
0

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

Posez votre question
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
19 avril 2007 à 15:54
Donc la pour etre sur que l'on soit en phase, je reprends ce que tu fais,

si un champ de la base nommé Fiche s'appelle comme le contenu de ta varible Chemin (je dis ca car on ne vois pas ce que vaut Chemin), tu va à l'etiquette Fini.
Si aucun champ ne se nomme ainsi, tu executes une requete sql.

Si on est ok ca va, sinon on sait mal compris.

Pour ton pb de requete, as tu essayé de faire (au lieu de db.Execute sql),

Docmd.runSQL sql

A+
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
19 avril 2007 à 15:58
Si ca ne fonctionne pas, je te conseille d'aller dans la feuille principale de ta base et d'aller dans "Requete",

Aller dans Creer une requete en mode création et une fois ouvert, tu vas affichage puis mode SQL,

tu recopie ta requete et tu executes,

Access te donnera plus de precision si tu as une erreur de synthase sur ta requete.
0
aaliyan Messages postés 104 Date d'inscription samedi 12 mars 2005 Statut Membre Dernière intervention 30 avril 2007
20 avril 2007 à 09:20
          sql = "SELECT code_theme FROM theme WHERE lib_theme = '" & Wd.domaine.Value & "'"

          Set rs1 = CurrentDb.OpenRecordset(sql)     
          'Création s'il n'existe pas
          While (rs1.EOF = False)
             If rs1("code_theme").Value = Wd.domaine.Value Then GoTo Fini1
          Wend
          sql = "INSERT INTO theme(lib_theme) values ('" & Wd.domaine.Value & "')"
         
          CurrentDb.Execute sql, dbFailOnError
          CurrentDb.Close
          rs1.Close
         
Fini1:

Ce code teste si le champ domaine est présent dans theme et si non il l'ajoute.
Ma valeur domaine est contenue dans une combobox dans un document word. Et là, ça plante, car il ne trouve pas ma valeur. L'erreur est propriété ou méthode non gérée par cet objet.
0
ba3ouda Messages postés 12 Date d'inscription vendredi 11 août 2006 Statut Membre Dernière intervention 2 novembre 2008
26 avril 2007 à 12:38
Il faut faire un test avant c est pour cela qu on doit utiliser le Count de sql
alors voila pour ton code
sql = "select count(*) as nbre from utilisateur where nom=" & Var1
          Set rs = db.OpenRecordset(sql)
If rs.Fields("nbre")=0 then
MsgBox" traitement pas d'enregistrement"
Else
MsgBox"traitement en cas d'existence d'enregistrement"
End If
0
Rejoignez-nous