Actualisation données type Vrai/Faux par requête SQL

toutoune72 Messages postés 6 Date d'inscription mercredi 22 septembre 2004 Statut Membre Dernière intervention 18 novembre 2004 - 17 nov. 2004 à 17:24
toutoune72 Messages postés 6 Date d'inscription mercredi 22 septembre 2004 Statut Membre Dernière intervention 18 novembre 2004 - 18 nov. 2004 à 17:32
Bonjour,
je suis plutot novice en Access et je dois actualiser une table qui contient un champ de type vrai/faux.
En gros, s'il y a l'expression "Turbidité" dans le champ "usine de traitement" d'une autre table, je souhaite cocher le champ "Persence_usine" de ma table de résultat.

J'avais tapé les lignes ci-dessous mais ca ne marche pas : je ne vois pas la case de mon champ "Presence_Usine" se cocher.

If InStr(rs![usine de traitement], "Turbidité") > 0 Then
t![Presence_Usine] = Vrai
endif

si quelqu'un peut m'expliquer que taper de facon simple, je vous en serais très reconnaissante.

Estelle

10 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
17 nov. 2004 à 19:19
Salut toutoune72
Si le type du champ est booléen, essaye True/False au lieu de Vrai/Faux.
Sinon, avant ces ligne d'exemple, as-tu géré la scrutation de rs avec les rs.MoveFirst et une boucle avec rs.MoveNext ?

Vala
Jack
NB : Je ne répondrais pas aux messages privés
0
gandalflegris007 Messages postés 211 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 11 juin 2007
17 nov. 2004 à 20:08
Salut toutoune72,

jack à raison, Access n'étant absolument pas français, il faux utiliser True/False dans les tables Access.

Si tu utilises des formulaires Access reliés à ta table, tu peux aussi utiliser (et des fois ça fonctionne mieux même) -1 pour coché, 0 pour non coché.

Dernière chose, le instr dans ta requête peut fonctionner, mais il est préférable d'utiliser la commende like qui se rapproche plus du sql.

Dans le cas que tu as exposé, et sauf si tu as des contraintes pariculières, une requête sql justement peut tout faire automatiquement :
mais pour cela tu doit avoir un champ commun dans les 2 tables, une sorte de lien
Imaginons que tu as un champ non usine dans les 2 tables, la requête suivante fait l'affaire :
UPDATE Table1 INNER JOIN Table2 ON Table1.[nom usine] = Table2.[nom usine] SET Table1.[Presence usine] = True
WHERE (((Table2.[usine de traitement])="Turbidité"));

En espérant avoir répondu à ta question,
Bon courage,
Guich
0
toutoune72 Messages postés 6 Date d'inscription mercredi 22 septembre 2004 Statut Membre Dernière intervention 18 novembre 2004
18 nov. 2004 à 13:49
en fait, je vous ai copié un test avec vra/faux mais j'avais initialement saisi les lignes avec True/False
pour ce qu'il y avait avant, voici :

Dim db As Database
Set db = CurrentDb

Dim rs As Recordset
Set rs = db.OpenRecordset("point d'eau")

Dim t As Recordset
Set t = db.OpenRecordset("Résultats_Turbidité")

rs.MoveFirst

While Not rs.EOF

t.AddNew

If rs![usine de traitement] <> "" Then
If InStr(rs![usine de traitement], "Turbidité") > 0 Then
t![Presence_Usine] = True
End If


Estelle
0
gandalflegris007 Messages postés 211 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 11 juin 2007
18 nov. 2004 à 14:09
Salut toutoune72,

Attention, le fait de modifier un enregistrement d'une table implique de mettre à jour cet enregistrement.

Tu fais ton t.addnew ==> OK
t!....=....
t!....=....
t.update

et là tu peux passer au suivant.

Essaie ça et dis nous si ça marche.

Guich
0

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

Posez votre question
gandalflegris007 Messages postés 211 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 11 juin 2007
18 nov. 2004 à 14:13
Tu peux expliquer clairement ce que tu cherches à faire et quelles sont tes contraintes :

dans ton 1er post tu parlais de mettre à jour un enregistrement et là tu fais un addnew.

Est ce que t'es obligée de passer par du code VB ou est-ce que c'est parce que tu connais pas SQL.
Parce qu'avec une simple requête SQL, elle fait tout pour toi, recherche de tous les éléments avec Turbidité et ajoute ou modifie un enregistrement dans une autre table.

Si tu veux des tuyaux, hésite pas à demander.

Bon courage
Guich
0
toutoune72 Messages postés 6 Date d'inscription mercredi 22 septembre 2004 Statut Membre Dernière intervention 18 novembre 2004
18 nov. 2004 à 16:23
bon ok, je suis passée par du VB car je n'arraivais aps à faire tout ce que je voulais par des requête

sinon je n'ai pas écrit ce qu'il y a dessous, mais j'ai bien spécifié le : t.update

Estelle
0
toutoune72 Messages postés 6 Date d'inscription mercredi 22 septembre 2004 Statut Membre Dernière intervention 18 novembre 2004
18 nov. 2004 à 16:26
ps : j'ai oublié de préciser que je vide au prélable ma table et cherche à remplir les champs avec les nouvelles valeurs interprétées

Estelle
0
gandalflegris007 Messages postés 211 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 11 juin 2007
18 nov. 2004 à 16:34
Ca te dérange pas de m'envoyer ta BD Access par mail que je saisisse mieux ton pb et que je te file directement une solution opérationnelle ?

Si c'est ok, je te filerai mon @mail par MP

Guich
0
toutoune72 Messages postés 6 Date d'inscription mercredi 22 septembre 2004 Statut Membre Dernière intervention 18 novembre 2004
18 nov. 2004 à 16:56
elle est super bordelique (je crois que ce sont des non-informaticiens comme moi qu'il l'ont faite)
mais je suis ok, je ferai une copie de ma BD avec uniquement ce qui concerne mon pb

Estelle
0
toutoune72 Messages postés 6 Date d'inscription mercredi 22 septembre 2004 Statut Membre Dernière intervention 18 novembre 2004
18 nov. 2004 à 17:32
mon mail

[mailto: toutoune72@yahoo.fr]
0
Rejoignez-nous