{Access} Utilisation de requete Update sous vb

Résolu/Fermé
jph71390 - 28 déc. 2009 à 23:46
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 - 29 déc. 2009 à 14:15
Bonjour,
Je suis sur access que depuis une semaine et je suis sur un petit projet et je suis confronter a une difficulté de puis 2 jours. je dispose d'une table prêt ( à trois champ : id-prêt, id-utilisateur, id-tiers, montant et date) et d'un formulaire qui me permet de modifier ces différents champs.

Donc je voulais au départ faire une liste déroulante de recherche qui affiche les différents champ l utilisateur choisi l'un d'eux, cette liste retourne l' id-prêt, sa j y suis arriver. A

Après sus mon formulaire j ai 4 autres champs qui me permettent de rentrer les nouvelles valeurs pour id-utilisateur, id-tiers, montant et date et la je voudrais que l 'utilisateur n'est plus qu'a appuyer sur le bouton modifier pour que les champ soit automatiquement modifier et c la que je tourne en rond.
voici mes différentes tentatives :
1)
Dim req As String
Dim rs As Recordset
Dim mabase As Database
Set mabase = CurrentDb()
' Exécution de la requête
req = "Update PRÊT Set PRÊT.IDENTIFIANT_TIERS = '" & txtNomTier & "', PRÊT.IDENTIFIANT_UTILISATEUR = '" & ValeurNumUtilisateur & "', PRÊT.MONTANT_PRÊT = '" & txtMontantAvoir & "', PRÊT.DATE_PRÊT = '" & txtDateAvoir & "' Where PRÊT.IDENTIFIANT_PRÊT = '" & txtNumAvoir & "'"
Set rs = mabase.OpenRecordset(req)

2)
Dim sdl As String
Dim rs As DAO.Recordset
sql = "Update PRÊT Set PRÊT.IDENTIFIANT_TIERS = '" & txtNomTier & "', PRÊT.IDENTIFIANT_UTILISATEUR = '" & ValeurNumUtilisateur & "', PRÊT.MONTANT_PRÊT = '" & txtMontantAvoir & "', PRÊT.DATE_PRÊT = '" & txtDateAvoir & "' Where PRÊT.IDENTIFIANT_PRÊT = '" & txtNumAvoir & "';"
Set rs = CurrentDb.OpenRecordset(sql)

3)
Set db = CurrentDb
Set req = db.OpenRecordset("PRÊT")
req.Edit
req("IDENTIFIANT_TIERS") = txtNomTier
req("IDENTIFIANT_UTILISATEUR") = ValeurNumUtilisateur
req("MONTANT_PRÊT") = txtMontantAvoir
req("DATE_PRÊT") = txtDateAvoir
req.Update
req.Close

Avec cette dernière méthode j'arrive a faire un mise jour mais sur la première ligne de ma table je n'arrive pas a lui dire d'aller à l'id-prêt qui retourné par la liste de recherche

Cordialement merci de votre aide
jph
A voir également:

13 réponses

Salut

Je connais pas Access, mais je peux te garantir que tes requêtes update ne te renvoient pas un recordset (il y a donc peu de chances qu'OpenRecordset arrive à faire exécuter un update).
il doit exister une instruction genre ExecuteCommand pour faire executer tes requetes update.
0
Salut,
ok merci je vais chercher sa

++
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
29 déc. 2009 à 10:19
bonjour

tu peux faire:

docmd.runsql(sql)
ou sql est egal a ta requete
0
Salut,
ok j'essayerai ceci vers midi car la je suis pas sur mon pc et je n'ai pas accès a mon fichier je vous tient au courant et merci encore

++
0

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

Posez votre question
Salut je viens tester avec ceci et voici ce que j obtiens
Dim sdl As String
sql = "Update PRÊT Set PRÊT.IDENTIFIANT_TIERS = '" & txtNomTier & "', PRÊT.IDENTIFIANT_UTILISATEUR = '" & ValeurNumUtilisateur & "', PRÊT.MONTANT_PRÊT = '" & txtMontantAvoir & "', PRÊT.DATE_PRÊT = '" & txtDateAvoir & "' Where PRÊT.IDENTIFIANT_PRÊT = '" & txtNumAvoir & "';"
DoCmd.RunSQL (sql)

et il m a mit une erreur qui est :
type de de donnée incompatible dans l'expression du critère

Voila désoler mais je ne comprend pas quelqu'un peut m'aider s'il vous plait merci

++
0
blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
29 déc. 2009 à 12:36
Salut,

sûrement un champ numérique que tu as mis entre quote, alors que celles-ci sont réservées aux chaines...

ValeurNumUtilisateur ?
txtMontantAvoir ?
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
29 déc. 2009 à 12:36
deja ton dim né pas bon:
dim sql as string
sql = "Update PRÊT Set PRÊT.IDENTIFIANT_TIERS = [txtNomTier], PRÊT.IDENTIFIANT_UTILISATEUR =ValeurNumUtilisateur , PRÊT.MONTANT_PRÊT =txtMontantAvoir, PRÊT.DATE_PRÊT = txtDateAvoir Where PRÊT.IDENTIFIANT_PRÊT = txtNumAvoir"


essai ca voir

je comprend pas pourquoi tu concatenne tout tu execute ta requete depuis vb dc je suppose que tu l'execute depuis un bouton situé sur le formulaire dc pas besoin de concatenner peur etre il faudra les mettre entre [ ]
0
Lu,
oui désoler j aurai du préciser que tout ce qui txt...... sont des champ present sur mon formulaire et ValeurNumUtilisateur est une variable global contenant mon id-utilisateur car pour accéder a ce formulaire il faut s authentifier et je garde le numéro ds cette variable, blux.

Je vais essayer tout de suite cette syntaxe merci moiced59
++
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
29 déc. 2009 à 13:10
ok tiens nous o courant
0
Re alors c super sa marche merci beaucoup dim sql as string
sql = "Update PRÊT Set PRÊT.IDENTIFIANT_TIERS = [txtNomTier], PRÊT.IDENTIFIANT_UTILISATEUR =ValeurNumUtilisateur , PRÊT.MONTANT_PRÊT =txtMontantAvoir, PRÊT.DATE_PRÊT = txtDateAvoir Where PRÊT.IDENTIFIANT_PRÊT = txtNumAvoir"

par contre jute une petite dernière chose pourrait tu m expliquer ou me donner l adresse d'un tuto qui explique comment fonctionne exactement pourquoi on doit mettre des crochets ou rien ou guillemet et dans quel cas aussi ^^ et aussi c'est comment enlever le message d alerte qui apparait : " Vous allez mettre à jour une ligne(s). dès que vous cliquerez sur oui, il vous sera impossible de ......"

encore merci
++
0
blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
29 déc. 2009 à 13:47
On met des [] lorsque l'on fait référence à un nom qui a un blanc à l'intérieur, afin d'éviter qu'access ne croie que c'est un séparateur...

[champ 1] et non champ 1

On met entre quote (l'apostrophe simple, touche 4 du clavier) les données qui sont de type chaine. Les numériques n'ont pas besoin de cela, et pour les dates, il faut mettre des # au début et à la fin...

SELECT * FROM [table 1] WHERE champ1 = 'toto' AND [champ suivant] = 12 AND champ_date = #01/01/2010#;

0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
29 déc. 2009 à 13:29
alors des crochets: reference a un champ du formulaire
rien : reference a une variable
"" : concatenne du texte brut exemple select * from personne where nom = pierre !!! where nom = "pierre"
supprimer message d'alerte :
au debut du code vb:
docmd.setwarnings false
a la fin du code
docmd.setwarnings true

voila
0
OK merci beaucoup de ton aide
je te souhaite de passé de bonen fête de fin d 'année et une bonne journée et merci encore
++
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
29 déc. 2009 à 13:50
les ' ' ne fonctionne pas sous sql access !!!
0
blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
29 déc. 2009 à 13:56
depuis quelle version ?
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
29 déc. 2009 à 14:15
G rien dis ca fonctionne !!!!
je pensais que non dsl ;)
0