Pb d'execution de requete UPDATE sous ACCESS
Fermé
kiwijinshi
Messages postés
12
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
30 juillet 2007
-
3 avril 2007 à 11:45
blux Messages postés 25968 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 avril 2024 - 13 sept. 2007 à 13:04
blux Messages postés 25968 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 avril 2024 - 13 sept. 2007 à 13:04
A voir également:
- Update access
- Windows update bloqué - Guide
- Windows update 0x80070643 - Guide
- Asus live update - Télécharger - Utilitaires
- American megatrends bios update ✓ - Forum Windows
- Desactiver windows update - Guide
5 réponses
blux
Messages postés
25968
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 avril 2024
3 284
3 avril 2007 à 12:45
3 avril 2007 à 12:45
Salut,
à aucun moment, tu ne définis de requête correcte et à aucun moment tu n'exécutes une requête...
Tu pourrais faire comme ça :
à aucun moment, tu ne définis de requête correcte et à aucun moment tu n'exécutes une requête...
Tu pourrais faire comme ça :
Dim StrSql as String Dim Req as QueryDef StrSql = "UPDATE Table1 AS Tab1 " StrSql = StrSql + " SET Tab1.Dossier = " & VAR_DOSSIER & " " StrSql = StrSql + " WHERE (Tab1.Dossier=0 And " StrSql = StrSql + " Tab1.NumRef = " & VAR_NUMREF & ");" Set Req = CurrentDb.CreateQueryDef("", StrSql) Req.Execute dbFailOnErrorEt je suis sûr que ça irait mieux...
blux
Messages postés
25968
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 avril 2024
3 284
3 avril 2007 à 14:21
3 avril 2007 à 14:21
Ben, je savais pas, mais pour moi, VARNUMREF, avec un nom comme ça, c'était numérique...:-)
Plutôt que des guillemets triples, mets donc des simple-quote (apostrophe), c'est encore plus lisible et ça ne dénature pas le texte (pour autant qu'il ne contienne pas de simple-quote...
A+ Blux
Plutôt que des guillemets triples, mets donc des simple-quote (apostrophe), c'est encore plus lisible et ça ne dénature pas le texte (pour autant qu'il ne contienne pas de simple-quote...
StrSql = StrSql + " Tab1.NumRef = '" & VARNUMREF & "');"--
A+ Blux
"Les cons, ça ose tout. C'est même à ça qu'on les reconnait"
kiwijinshi
Messages postés
12
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
30 juillet 2007
3 avril 2007 à 15:39
3 avril 2007 à 15:39
Excuse-moi mais j'ai une autre question de mise en forme... :
UPDATE Table1 AS Tab1 SET Tab1.Dossier = 1
WHERE ((Tab1.Time)=#12/01/2007 11:03#)
Ca sélectionne pas... avec les #..# la requête se lance mais il n'y a pas de détection de la date dans la colonne Time de la Table1.
J'ai essayé avec ".." et '..' et aussi sans rien, mais dans ces cas, la requête ne se lance même pas.
Time est bien un type Date/Heure de format jj/mm/aaaa\ hh:nn (codification ACCESS).
Comment faire accepter une variable de type date dans du SQL ?? Il me semblait que c'était bien des # # pourtant... !
UPDATE Table1 AS Tab1 SET Tab1.Dossier = 1
WHERE ((Tab1.Time)=#12/01/2007 11:03#)
Ca sélectionne pas... avec les #..# la requête se lance mais il n'y a pas de détection de la date dans la colonne Time de la Table1.
J'ai essayé avec ".." et '..' et aussi sans rien, mais dans ces cas, la requête ne se lance même pas.
Time est bien un type Date/Heure de format jj/mm/aaaa\ hh:nn (codification ACCESS).
Comment faire accepter une variable de type date dans du SQL ?? Il me semblait que c'était bien des # # pourtant... !
blux
Messages postés
25968
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 avril 2024
3 284
3 avril 2007 à 16:00
3 avril 2007 à 16:00
Les dates ne seraient pas à mettre en format US (#mm/dd/yyyy#) ?
kiwijinshi
Messages postés
12
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
30 juillet 2007
3 avril 2007 à 16:11
3 avril 2007 à 16:11
Sous SQL si, mais peu importe vu que je teste ma requête avec des chiffres :
UPDATE Table1 AS Tab1 SET Tab1.Dossier = 1
WHERE ((Tab1.Time)=#12/01/2007 11:03#)
Et je ne peux pas me limiter à la date, il me faut l'heure et minutes aussi. Quoiqu'il en soit la variable est bien lue ; quand je passe les paramètre Time de Table1 en type Texte (String) et pareil pour ma variable en la mettant entre côtes au lieu des ## ca fonctionne...
Mais j'aimerai ne pas avoir à passer en format texte pour qu'il y ait un contrôle de forme au niveau des interfaces d'ACCESS lorsque l'utilisateur saisit une date (pour pas qu'il aille marquer TOTO dans le champ date...)
UPDATE Table1 AS Tab1 SET Tab1.Dossier = 1
WHERE ((Tab1.Time)=#12/01/2007 11:03#)
Et je ne peux pas me limiter à la date, il me faut l'heure et minutes aussi. Quoiqu'il en soit la variable est bien lue ; quand je passe les paramètre Time de Table1 en type Texte (String) et pareil pour ma variable en la mettant entre côtes au lieu des ## ca fonctionne...
Mais j'aimerai ne pas avoir à passer en format texte pour qu'il y ait un contrôle de forme au niveau des interfaces d'ACCESS lorsque l'utilisateur saisit une date (pour pas qu'il aille marquer TOTO dans le champ date...)
blux
Messages postés
25968
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 avril 2024
3 284
3 avril 2007 à 16:23
3 avril 2007 à 16:23
Tu sais qu'un format date comprend aussi les secondes ?
Faudrait aussi les tester ou faire une comparaison en éclatant ta date avec datepart...
Faudrait aussi les tester ou faire une comparaison en éclatant ta date avec datepart...
kiwijinshi
Messages postés
12
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
30 juillet 2007
4 avril 2007 à 09:58
4 avril 2007 à 09:58
Les secondes sont bien intégrées dans la table, même si celle-ci est au format jj/mm/aaaa\ hh:nn
En fait, il suffit que les secondes soient à zero et la transition se fait automatiquement (je n'ai pas essayé avec des secondes différent de zero car le cas ne va pas se présenter...)
Pour tester vérifier l'insertion valide d'un champ date au format
jj/mm/aaaa hh:nn
ou
jj/mm/aaaa hh:nn:ss
dans ma table ACCESS, j'exécute la requête dans le mode Edition/Création de requête et je rentre la valeur de ma variable de temps à la main, dans la fenêtre qu'ACCESS m'ouvre à cet effet.
De cette façon, la saisie est bien prise en compte !
C'est pas normal alors que lorsque je met la valeur de ma variable entre ## plutot que le nom de ma variable, ca n'ait pas le même effet !?
Il doit y avoir un problème d'écriture... pourtant les champs de date doivent bien être saisis entre ## :( :( :(
En fait, il suffit que les secondes soient à zero et la transition se fait automatiquement (je n'ai pas essayé avec des secondes différent de zero car le cas ne va pas se présenter...)
Pour tester vérifier l'insertion valide d'un champ date au format
jj/mm/aaaa hh:nn
ou
jj/mm/aaaa hh:nn:ss
dans ma table ACCESS, j'exécute la requête dans le mode Edition/Création de requête et je rentre la valeur de ma variable de temps à la main, dans la fenêtre qu'ACCESS m'ouvre à cet effet.
De cette façon, la saisie est bien prise en compte !
C'est pas normal alors que lorsque je met la valeur de ma variable entre ## plutot que le nom de ma variable, ca n'ait pas le même effet !?
Il doit y avoir un problème d'écriture... pourtant les champs de date doivent bien être saisis entre ## :( :( :(
kiwijinshi
Messages postés
12
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
30 juillet 2007
3 avril 2007 à 14:13
3 avril 2007 à 14:13
L'application de la requête est différente, mais le problème reste le même ...
"Erreur d'exécution '3061' : Trop peu de paramètres. 1 attendu."
En fait, pour reprendre ton option, VARDOSSIER est bien prise en compte, mais pas VARNUMREF car il s'agit d'une variable de type String.
Dim StrSql as String
Dim Req as QueryDef
StrSql = "UPDATE Table1 AS Tab1 "
StrSql = StrSql + " SET Tab1.Dossier = " & VARDOSSIER & " "
StrSql = StrSql + " WHERE (Tab1.Dossier=0 And "
StrSql = StrSql + " Tab1.NumRef = " & VARNUMREF & ");"
Set Req = CurrentDb.CreateQueryDef("", StrSql)
Req.Execute dbFailOnError
Pour détail : j'ai enregistré la requête ainsi créée sous le nom INSERT2 et voilà ce qu'elle contient ;
UPDATE ImportIndisposATraiter AS Tab1 SET Tab1.Dossier = 1
WHERE (((Tab1.Dossier)=0) AND ((Tab1.NumRef)=[Reference1]));
Avec "Reference1" la valeur de VARNUMREF. Il faut en fait réussir à mettre des " " autour de la valeur de VARNUMREF dans le code, donc déclarer la ligne ainsi :
StrSql = StrSql + " Tab1.NumRef = """ & VARNUMREF & """);"
En tt cas merci pour la remise en forme du code, c chouette ca permet de débugger + facilement ;)
J'marque le pb comme résolu ! Au plaisir !!
"Erreur d'exécution '3061' : Trop peu de paramètres. 1 attendu."
En fait, pour reprendre ton option, VARDOSSIER est bien prise en compte, mais pas VARNUMREF car il s'agit d'une variable de type String.
Dim StrSql as String
Dim Req as QueryDef
StrSql = "UPDATE Table1 AS Tab1 "
StrSql = StrSql + " SET Tab1.Dossier = " & VARDOSSIER & " "
StrSql = StrSql + " WHERE (Tab1.Dossier=0 And "
StrSql = StrSql + " Tab1.NumRef = " & VARNUMREF & ");"
Set Req = CurrentDb.CreateQueryDef("", StrSql)
Req.Execute dbFailOnError
Pour détail : j'ai enregistré la requête ainsi créée sous le nom INSERT2 et voilà ce qu'elle contient ;
UPDATE ImportIndisposATraiter AS Tab1 SET Tab1.Dossier = 1
WHERE (((Tab1.Dossier)=0) AND ((Tab1.NumRef)=[Reference1]));
Avec "Reference1" la valeur de VARNUMREF. Il faut en fait réussir à mettre des " " autour de la valeur de VARNUMREF dans le code, donc déclarer la ligne ainsi :
StrSql = StrSql + " Tab1.NumRef = """ & VARNUMREF & """);"
En tt cas merci pour la remise en forme du code, c chouette ca permet de débugger + facilement ;)
J'marque le pb comme résolu ! Au plaisir !!
kiwijinshi
Messages postés
12
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
30 juillet 2007
3 avril 2007 à 14:27
3 avril 2007 à 14:27
C'était précisé dans le premier post ^^ pas de pb c'est du string pq code avec chiffres + lettres.
Thx pour les apostrophes, j'suis pas bien familiarisé avc VBA encore ;)
Thx pour les apostrophes, j'suis pas bien familiarisé avc VBA encore ;)
blux
Messages postés
25968
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
16 avril 2024
3 284
>
Jibus
13 sept. 2007 à 13:04
13 sept. 2007 à 13:04
Pas forcément, ça permet de rendre le VBA plus lisible, même si sous ACCESS le délimiteur de string peut être indifféremment le guillemet (") ou l'apostrophe (')...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour à tout
je crée un requête sql sur visual basic version 6.0 est la suite
dim strupdat as string
strupdat="update TRouteurs set Password='"& txtNMP.text &"' where NomRout='" & BMListRout.list(i) &"'"
Cn.execute strupdat
txtNMP.txt c'est un zone de texte
NomRout c'est une ligne de base de donnee access de la table TRouteurs
BMListRout est une listbox contient les nom des routeurs.
cette reqette ne marche plus sur vb6
quel est la solution coorect
J'espère que mon problème est suffisamment détaillé et clair ?!
merci
je crée un requête sql sur visual basic version 6.0 est la suite
dim strupdat as string
strupdat="update TRouteurs set Password='"& txtNMP.text &"' where NomRout='" & BMListRout.list(i) &"'"
Cn.execute strupdat
txtNMP.txt c'est un zone de texte
NomRout c'est une ligne de base de donnee access de la table TRouteurs
BMListRout est une listbox contient les nom des routeurs.
cette reqette ne marche plus sur vb6
quel est la solution coorect
J'espère que mon problème est suffisamment détaillé et clair ?!
merci