Rechercher : dans
Par :

[access] ajout d'enregistrement requete

Dernière réponse le 28 mar 2008 à 14:28:04 fl0, le 30 mar 2007 à 16:44:15 
 Signaler ce message aux modérateurs

Salut a tous

voila ce que je veut faire
a partir d'un formulaire ou je remplit des champ textes (nom,prenom,service) lorseque j'appui sur un bouton ajout que ca me creéé un enregistrement dans ma table utilisateur

voila mon code


Sql = "INSERT INTO Utilisateurs ( Nom, Prenom, Service )"
Sql = Sql & " VALUES (""" & Form_ajout!txtnom & """, """ & Form_ajout!txtprenom & """, """ & Form_ajout!lstservice & """)"

DoCmd.DeleteObject acQuery, "confirmationajout"
CurrentDb.CreateQueryDef "confirmationajout", Sql

Set Qry = CurrentDb.QueryDefs("confirmationajout")


jusqu'ici ca marche bien
ca la creer et quand je lance la requete comfirmajout que j'ai creer si dessus ca me créé un enregistrement
Mais quand je veut la lancer automatiquement dans VBa

Set rs = Qry.OpenRecordset

Set Qry = Nothing
Set rs = Nothing

la il ni veut pas

croyez vous que cela vienne des messages d'access
genre "vous etes sur le point d'ajouter un enregistrement etes vous sur? "
Si oui dite moi comment les annulé

Merci a ceux qui m'on lu
et merci d'avance pour votre aide

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « [access] ajout d'enregistrement requete » dans :
SQL - Sous-requêtes VoirExpression des sous-requêtes Effectuer une sous-requête consiste à effectuer une requête à l'intérieur d'une autre, ou en d'autres termes d'utiliser une requête afin d'en réaliser une autre (on entend parfois le terme de requêtes en...

1

blux, le 30 mar 2007 à 17:05:32

Salut,

il y a beaucoup mieux pour ajouter un record.

Dim MaTable as RecordSet
Set MaTable = CurrentDb.OpenRecordset("Utiisateurs", dbOpenDynaset)
On Error Resume Next
With MaTable
    .AddNew
    !Nom = Form_ajout!txtnom
    !Prenom = Form_ajout!txtprenom
    !Service = Form_ajout!lstservice
    .Update
    .Requery
End With
If Err.Number <> 0 Then
    MsgBox Err.Description, , Err.Number
    GoTo Fin:
End If
MaTable.Close
Set MaTable = Nothing
Fin:
End Sub
Ca te fait pas de vilains messages d'ajout (comme ça, tu peux les gérer toi-même...)
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

2

fl0, le 2 avr 2007 à 08:53:31

Salut

Merci c'est cool mais il y a un petit probleme il me dit qu'il y a une incompatibilité de type et il me surligne cette ligne

Set MaTable = CurrentDb.OpenRecordset("Utilisateurs", dbOpenDynaset)

Répondre à fl0

3

blux, le 2 avr 2007 à 10:13:34

Soit il te manque une référence à DAO (menu outils/références dans la fenêtre de code, cocher les 'manquantes'), soit tu ne mets pas de type à matable (Dim MaTable), ça devrait passer, mais c'est plus bourrin !
A+ Blux

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

Répondre à blux

4

fl0, le 2 avr 2007 à 11:04:15

Merci Blux g choisi la methode bourin ca marche comme il faut
merci de ton aide

Répondre à fl0

5

blux, le 2 avr 2007 à 11:19:58

Regarde quand même les histoires de références, un jour ou l'autre, tu vas tomber dessus sans contournement possible...
A+ Blux

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

Répondre à blux

6

fl0, le 2 avr 2007 à 11:47:47

Oui je m'en suis deja servi mais depuis le debut je ne declare aucune variables je c que ce n'est pas bien mais vu que je ne voi pas la difference
en tout cas merci de tes conseils

Répondre à fl0

7

blux, le 2 avr 2007 à 12:39:34

Ca prend (beaucoup) plus de place en mémoire, c'est pas (trop) bien géré, pis c'est pas beau...
A+ Blux

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

Répondre à blux

8

fl0, le 5 avr 2007 à 15:04:53

Meme operation mais pour supprimé un enregistrement

Répondre à fl0

9

blux, le 5 avr 2007 à 15:54:03

.delete après avoir trouvé le bon record en parcourant le recordset avec .movenext ou un positionnement par index...
A+ Blux

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

Répondre à blux

10

fl0, le 6 avr 2007 à 09:22:59

Salut et merci de ton aide

en fait ce qu'il faut que je fasse c'est la meme chose que pour ajouter maisa la place de .addnew il faut que je mette .delete
c'est ca

Répondre à fl0

11

blux, le 6 avr 2007 à 09:25:15

Faut quand même se placer sur le record à supprimer...
A+ Blux

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

Répondre à blux

12

fl0, le 6 avr 2007 à 09:42:05

Set MaTable = CurrentDb.OpenRecordset("Utilisateurs", dbOpenDynaset)
On Error Resume Next
With MaTable

la j'ouvre ma table mais apres comment je lui dit de se sur placer le record que je veut

.delete
!Nom
si je marque ca il me dit qu'il attend un = apres le !Nom

Répondre à fl0

13

blux, le 6 avr 2007 à 09:53:14

Relis le message 9...
A+ Blux

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

Répondre à blux

14

fl0, le 6 avr 2007 à 10:12:53

Tu pense bien que si j'insiste c'est parceque je ne comprend rien a l'aide microsoft

mais
est ce que tu croit que ca ca pourrait marcher

Set MaTable = CurrentDb.OpenRecordset("Utilisateurs", dbOpenDynaset)
On Error Resume Next
With MaTable
.cleprimaire.delete
if not recordset.EOF
.movenext
else
.moveprevious
end if

.Update
.Requery
End With
If err.Number <> 0 Then
MsgBox err.Description, , err.Number
GoTo Fin:
End If
MaTable.Close
Set MaTable = Nothing


Fin:

Répondre à fl0

16

blux, le 6 avr 2007 à 10:34:55

Pour supprimer :

Set MaTable = CurrentDb.OpenRecordset("Utilisateurs", dbOpenDynaset) 
matable.movefirst
while not matable.eof
    if matable!champ = valeurquejecherche then
        matable.delete
        matable.requery
        goto suite:
    endif
    matable.movenext
wend
suite:
matable.close
set matable = nothing
Ca c'est bourrin, si tu veux un accès immédiat à ta donnée (et qu'elle est indéxée), tu joues avec index et .seek
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

17

fl0, le 6 avr 2007 à 10:48:51

Ton truc maTable.delete j'espere que ca ne supprime pas la table

Répondre à fl0

19

blux, le 6 avr 2007 à 11:10:01

:-/
A+ Blux

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

Répondre à blux

18

fl0, le 6 avr 2007 à 10:51:51

Merci blux ca marche je pense que je t'ai umpeu pris la tete mais merci de ta patience

Répondre à fl0

15

fl0, le 6 avr 2007 à 10:34:53

En faite je fait autrement parceque la ca me soule

CurrentDb.Execute "DELETE FROM Utilisateurs WHERE Nom ='Robert'"

mon permier souci c'est que je ne veut pas supprimer tout le temp le pauvre robert mais ca je peut me debrouiller je veut supprimer l'enregistrement qui aura a la place de robert ce que je metterai dans un texte

mais mon probleme c'est que lorseque je fait la requete apres il l'execute mais il ne a ferme pas

Répondre à fl0

20

fl0, le 10 avr 2007 à 10:00:32

Salut

mon probleme ressemble aux autres est ce que tu as une technique pour mettre a jour un enregistrement ou je doit me debrouiller en supprimant l'enregistrement et en l'ajoutant apres?

Répondre à fl0

21

blux, le 10 avr 2007 à 10:28:29

Je compresn plus rien, entre les message qui disent que ça te saoule, mais que tu fais quand même et les autres, je suis perdu...

Ton nouveau problème, c'est de modifier une record ?

alors, tu utiliseras .edit et .update pour valider tes mises à jour.

L'accès à ton record se fera comme d'hab, un recordset et des movenets ou seek...
A+ Blux

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

Répondre à blux

22

fl0, le 10 avr 2007 à 11:48:20

Non non j'ai pris ta technique je la trouve pas mal
ce que je voulais faire ne marchais pas bien
merci de ton aide

Répondre à fl0

23

fl0, le 11 avr 2007 à 13:48:01

Salut

y a t'il moyen de mettre a jour juste un champ d'un enregistrement

c'est ce que tu me dit avec .edit c'est ca ?

Répondre à fl0

24

blux, le 11 avr 2007 à 14:03:28

Oui
A+ Blux

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

Répondre à blux

25

fl0, le 11 avr 2007 à 14:21:27

Desolé pour la longueur

j'ai trouvé un exemple dans l'aide microsoft le probleme c'est que je n'y comprend rien

Sub EditX()

Dim dbsNorthwind As Database
Dim rstEmployees As Recordset
Dim strOldFirst As String
Dim strOldLast As String
Dim strFirstName As String
Dim strLastName As String

Set dbsNorthwind = OpenDatabase("Northwind.mdb")
Set rstEmployees = _
dbsNorthwind.OpenRecordset("Employees", _
dbOpenDynaset)

' Store original data.
strOldFirst = rstEmployees!FirstName
strOldLast = rstEmployees!LastName

' Get new data for record.
strFirstName = Trim(InputBox( _
"Enter first name:"))
strLastName = Trim(InputBox( _
"Enter last name:"))

' Proceed if the user entered something for both fields.
If strFirstName <> "" and strLastName <> "" Then
' Update record with new data.
EditName rstEmployees, strFirstName, strLastName

With rstEmployees
' Show old and new data.
Debug.Print "Old data: " & strOldFirst & _
" " & strOldLast
Debug.Print "New data: " & !FirstName & _
" " & !LastName
' Restore original data because this is a
' demonstration.
.Edit
!FirstName = strOldFirst
!LastName = strOldLast
.Update
End With

Else
Debug.Print _
"You must input a string for first and last name!"
End If

rstEmployees.Close
dbsNorthwind.Close

End Sub

Sub EditName(rstTemp As Recordset, _
strFirst As String, strLast As String)

' Make changes to record and set the bookmark to keep
' the same record current.
With rstTemp
.Edit
!FirstName = strFirst
!LastName = strLast
.Update
.Bookmark = .LastModified
End With

End Sub

si tu peut m'eclairer umpeu ca serais genial

Répondre à fl0

26

blux, le 11 avr 2007 à 14:37:01

Parcourir une table et modifier un champ d'un article :

Dim MaTable as RecordSet
Set MaTable = CurrentDb.OpenRecordset("Utilisateurs", dbOpenDynaset)
MaTable.MoveFirst
while not eof.matable
if !champ = celuiquejecherche then
matable.edit
!champ1 = valeurquejemodifie
matable.Update
matable.Requery
endif
matable.movenext
wend
MaTable.Close
Set MaTable = Nothing
End Sub
A+ Blux

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

Répondre à blux

27

fl0, le 11 avr 2007 à 14:38:41

Merci je vais essayer je croit que tu ma encore carrement donné la solution

Répondre à fl0

28

fl0, le 11 avr 2007 à 14:58:28

Je ne peut pas changer la clé primaire ou j'ai juste a changer champ1 par champ

Répondre à fl0

29

blux, le 11 avr 2007 à 15:09:01

Si ta clé primaire est en relation avec d'autres tables, alors, pas de modification de sa valeur de manière simple...

ou j'ai juste a changer champ1 par champ
Que veux-tu faire au juste ?
A+ Blux

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

Répondre à blux

32

fl0, le 11 avr 2007 à 15:24:30

Dans le code que tu ma donné
a la place de champ1 (la ou je met ma valeur modifie)
je met champ

Répondre à fl0

30

fl0, le 11 avr 2007 à 15:09:10

Il me dit qu'il y a une erreur au niveau
if !Nom = ....
erreur de compilation
il me dit reference incorrect ou non qualifié

Répondre à fl0

31

fl0, le 11 avr 2007 à 15:14:39

J'ai ersolu mon probleme j'ai mis MaTable!Nom

mais il ne veut pas de .edit il me dit

"erreur de compilation
membre de methode ou de données introuvable"

Répondre à fl0

33

blux, le 11 avr 2007 à 15:33:56

J'ai recopié le code d'un message précédent, supprime matable.edit
A+ Blux

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

Répondre à blux

34

fl0, le 11 avr 2007 à 15:36:35

J'ai mis avec des majuscules
MaTable.edit
maintenant il me met l'erreur
incompatibilité de type au niveau de
Set MaTable = CurrentDb.OpenRecordset("Utilisateurs", dbOpenDynaset)

Répondre à fl0

35

blux, le 11 avr 2007 à 16:27:52

T'as supprimé matable.edit ?
A+ Blux

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

Répondre à blux

36

fl0, le 11 avr 2007 à 16:28:40

Oui

Répondre à fl0

37

blux, le 11 avr 2007 à 16:40:00

T'as déclaré matable en quoi ?
A+ Blux

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

Répondre à blux

38

fl0, le 11 avr 2007 à 16:41:05

Dim MaTable As Recordset

Répondre à fl0

39

blux, le 11 avr 2007 à 16:53:44

T'as pas une référence manquante à DAO (menu outils/références dans le fenêtre de code) ?
A+ Blux

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

Répondre à blux

40

fl0, le 11 avr 2007 à 16:55:38

J'ai mis microsoft DAO 3.6 Object Library

Répondre à fl0

41

blux, le 11 avr 2007 à 16:56:30

Ca manquait ?

Si c'est le cas, ça doit être bon...
A+ Blux

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

Répondre à blux

42

fl0, le 11 avr 2007 à 16:57:16

Non ca ne manquais pas

Répondre à fl0

43

fl0, le 12 avr 2007 à 08:36:35

Salut

c'est bon Blux
j'ai reussi en fait il ne faut pas declarer MaTable en Recordset et il faut bien laisser MaTable.Edit pour modifier et ensuite faire un .update
Pour info ca marche tres bien avec les cle primaire

Merci de ton aide

Répondre à fl0

44

fl0, le 12 avr 2007 à 11:26:16

Ca continu a planter il tourne en boucle donc la solution que j'ai choisi c'est un
goto Fin:
a la fin du if
et j'ai mis le
fin:
avant MaTable=nothing

Répondre à fl0

45

blux, le 12 avr 2007 à 12:45:05

Tu peux me coller le code ici ?
A+ Blux

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

Répondre à blux

46

fl0, le 12 avr 2007 à 13:45:35

Set MaTable = CurrentDb.OpenRecordset("Utilisateurs", dbOpenDynaset)
MaTable.MoveFirst
While Not MaTable.EOF
If MaTable!Nom = Form_Modification!txtnomu Then
MaTable.Edit
MaTable!Nom = Form_Modification!txtnouveaunom
MaTable.Update
MaTable.Requery
MsgBox ("operation reussi")
GoTo Fin:
End If
MaTable.MoveNext
Wend
Fin:
MaTable.Close
Set MaTable = Nothing

Répondre à fl0

47

blux, le 12 avr 2007 à 13:55:18

Tu peux faire plus propre avec DO...LOOP qui te permet grâce à un EXIT DO de sortir de la boucle avant la vérification de la condition...

Do while Not matable.eof
    if MaTable!Nom = Form_Modification!txtnomu Then
        MaTable.Edit
        MaTable!Nom = Form_Modification!txtnouveaunom
        MaTable.Update
        MaTable.Requery
        MsgBox ("operation reussi")
        exit do
    endif
    matable.movenext
Loop
MaTable.Close
Set MaTable = Nothing
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

48

fl0, le 12 avr 2007 à 16:09:17

Ok je vais faire ca merci

Répondre à fl0

49

adelzeg, le 4 jui 2007 à 18:10:00

Bonjour,

j ai un probleme avec ACCESS. en faite j ai une table avec des codepart identiques pour des dates différentes.
Je voudrais sélectionner pour chaque codepart la derniere date.

c urgent svp

Répondre à adelzeg

50

blux, le 4 jui 2007 à 22:06:03

Salut,

merci de créer un nouveau message, celui-ci étant hors sujet pour ce post...
A+ Blux

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

Répondre à blux

51

 Apprenti, le 28 mar 2008 à 14:28:04

Bonjour,
Voulez-vous m'aider à ajouter des enregistrements sur ma base de données !

Répondre à Apprenti