Un nouvel enregistrement sous Access2000

Fermé
Pitou - 14 mai 2003 à 16:45
blux Messages postés 26556 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 29 décembre 2024 - 15 mai 2003 à 15:37
Salut à tous,
Bon je vous expose mon problème. Sous Access2000 j'ai un formulaire contenant des informations dans des champs et j'aimerai que quand on clique sur un bouton après avoir modifié une ou plusieurs de ces infos, Access crée un nouvel enregistrement dans la table correspondante et non pas qu'il écrase celui que l'on a modifié. C'est sans doute un problème facile à résoudre mais cela me débloquerait pour beaucoup de cas je crois. Comment dire à Access de sauvegarder un nouvel enregistrement dans une table?
Merci beaucoup d'avance.

7 réponses

blux Messages postés 26556 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 29 décembre 2024 3 319
15 mai 2003 à 08:50
Salut,

ben faut faire du vba

Sur le bouton, il faut rajouter du code.

Genre :

Dim Db As Database
Dim Rs As Recordset
Set Db=CurrentDb
Set Rs = Db.OpenRecordset("matable", dbOpenDynaset)
With Rs
.AddNew
!champ1dematable = mavaleur1duformulaire
!champ2dematable = mavaleur2duformulaire
....
.Update
.Requery
End With
Rs.Close
Db.Close
Set Rs = Nothing
Set Db = Nothing
Fin:
End Sub

Mais attention, il faudra annuler les modifs de l'enregistrement en cours (touche ESC) sinon, ACCESS considérera qu'il s'agit aussi d'une modif.

A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

PS : ACCESS 2000, c'est pas bien, ACCESS 97, c'est mieux. Hein mon oeuf ?!
0
Merci beaucoup de m'être venu en aide même si j'ai finalement résolu mon problème à l'aide d'une requête d'insertion (moins classe que le VB mais ça marche aussi). A la fin de ton message tu dis qu'il faut annuler les changements sur le formulaire pour qu'ils ne soient pas pris en comte et tu as tout a fait raison puisque je suis devant ce problème depuis ce matin. La touche Echap ne fonctionne pas et de toute façon j'aurai aimé savoir s'il n'était pas possible de le faire avec du code pour éviter à l'utilisateur des actions auxquelles il ne comprendrait pas grand chose. J'ai bien essayé avec un DoCmd. Close acForm, "mon formulaire", acSaveNo mais il garde quand même les infos en mémoire car je suis obligé de réouvrir le sous-formulaire pour alimenter les paramètres de ma requête... (ce qui est d'ailleurs un autre problème puisque je ne comprends pas non plus pourquoi la requête ne parvient pas à accéder aux champs du sous-formulaire alors qu'elle y arrive sur le formulaire le contenant). Voila ça fait beaucoup de choses et sûrement même trop donc je vais continuer à chercher de mon côté en esérant que tu ais le courage de répondre à une tartine pareille. Merci beaucoup
0
blux Messages postés 26556 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 29 décembre 2024 3 319
15 mai 2003 à 14:22
vba, vba, vba... !!!

Tu pourrais prendre le problème autrement :

Tu as ton formulaire. Tu crées un bouton "dupliquer" qui lors de l'appui, crée un nouvel enregistrement dans ta base, se positionne dessus et permet à l'utilisateur d'en modifier certaines rubriques.

Avantage :

Ne touche pas à l'enregistrement initial (très important)

Inconvénient :

faut faire du vba :-)

A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
Je vois que tu es du genre rapide et efficace!!! 4h que je me prends la tête la dessus et tu me résous ça en 10mn j'en serai presque vexé! En tout cas je te remercies de nouveau et croit moi c'est sincère. Et puis si en passant t'as une idée sur le fait que mes requêtes n'arrivent à lire dans des sous-formulaires que lorsqu'ils sont ouvert indépendemment (c'est à dire seuls par moi à la main et non pas dans leur formulaire parent puisque dans ce cas les requêtes détectent ce formulaire parent mais pas le sous-formulaire) n'hésitent surtout pas :) Je suis saoulant mais grace à toi je vois le bout parce que en 1 mois 1/2 de travail sur access j'ai encore du mal je l'avoue. Et ne croit pas que le VBA m'effraie c'est juste que j'en suis rendu aux vieilles combines maisons pour faire marcher ce truc. Voila merci encore et peut-être à très bientôt (ne te sent quand même pas obligé de répondre si vite à chaque fois hein?)
A+
0

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

Posez votre question
blux Messages postés 26556 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 29 décembre 2024 3 319
15 mai 2003 à 15:04
C'est quoi que tu veux lire dans ta requête ?
C'est pour paramétrer un where ?

Pour atteindre le contenu d'une zone dans un formulaire, c'est :

forms.nomduformulaire.nomducontrole.value

pis dépêche-toi pour les questions, je suis en vacances ce soir et c'est pas sûr que je repasse sur le forum avant un moment... :-)

A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
Tu m'étonnes que je fais vite... C'est dans mon intéret je crois! :)
Ma requête est censée récupérer les valeurs des champs du formulaire pour aller les insérer dans la table. Ce sont les "VALUES" du "INSERT" en fait. Et quand j'utilise la syntaxe Forms![nom du sous-formulaire]![nom du controle] il me répond que celui-ci n'est pas ouvert alors qu'il l'est. Par contre si j'utilise la même syntaxe pour un champ du formulaire contenant le sous-formulaire ça marche. Et ça marche aussi si j'ouvre le sous-formulaire tout seul. Voila. Je suis dans les temps?
0
blux Messages postés 26556 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 29 décembre 2024 3 319
15 mai 2003 à 15:37
forms![nomduformulaireprincipal]![nomdusousformulaire]![nomducontroledans lesousformulaire].value ?

gniark, gniark, y'avait un piège :->

A+ Blux "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0