Enregistrement,reprendre enregistrement précé

Fermé
RougeXIII Messages postés 241 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 mars 2020 - 26 mars 2012 à 14:45
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 - 30 mars 2012 à 16:14
Bonjour,

j'ai un formulaire me permettant d'ajouter du matériel informatique .
Dans ce formulaire j'ajoute sa localisation, son model , son type, etc..

Concrètement quand je vais sur le terrain je réinscrit toujours le même lieu (car j'ai 3 à 8 matériel par lieu)
Et j'aurais aimé savoir si il etait possible de reprendre l'enregistrement précédent effectué par cette zone de texte ?

Merci d'avance de votre aide.

A voir également:

13 réponses

OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
27 mars 2012 à 22:33
Bonsoir,
c'est possible mais il faudrait le coder. J'ai peut-être une solution plus simple.
Vous connaissez par avance le nombre et la liste des éléments matériels, je ferai ceci :
1) Créer une table qui contient votre liste de matériel
2) Dans le formulaire j'ajouterai une zone de liste déroulante qui afficherai le contenu de ma table. Ainsi à chaque fois que vous devrez choisir le matériel, il suffira de le choisir dans la liste en un simple clic.
Si jamais vous ne savez pas comment faire, je vous l'expliquerai.
0
RougeXIII Messages postés 241 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 mars 2020 2
28 mars 2012 à 10:06
Bonjour,

merci de la réponse, mais j'ai surment du mal m'exprimer.
Ce que je souhaite c'est faire l'inventaire d'un matériel. C'est à dire que mon formulaire est vierge ( et ma base de donné vide ) et je dois remplis tous les champs.
Et dans l'esprit de faciliter la saisie de ces matériels je souhaiterais que certaines zone de texte, reprenne les informations inscrit précédement . Car le lieu ( Bâtiment, Etage, pièce et service) son les même pour tous les matériels que je rencontre quand je vais dans le bureau de la DRH(par exemple) parce qu'elle à 2unité central,2 ecran, 1 imprimante. ( par exemple ) donc j'ai 5 matériel cela signifie que j'ai 5fois a remplire mon formulaire.
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
28 mars 2012 à 22:20
Ce n'est pas plus clair ... :-) Si votre base de données est vide comment reprendre l' "historique" de ce que vous auriez saisit ???

Vous dites qu'il y a plusieurs machines mais chacune peut ouvrir la même base de données ??? Donc travaillez-vous en client-serveur ?

Supposons que c'est le cas...

C'est donc possible mais vous n'échapperez pas à devoir coder un peu.
Avez-vous définit une clé primaire dans votre table ?

Je suppose que c'est le cas et j'appellerai celui-ci "PKService". Sur ce, exécutez les étapes suivantes :

1) Mettez le formulaire où vous désirez ajouter les dernières valeurs dernièrement ajoutées en mode création

3) Choisissez les propriétés de votre formulaire et cliquez sur l'onglet "Evènement"

4) Cliquez sur le bouton qui affiche trois petits points à côté de l'évènement "Avant insertion" (Before insert)

(5) Une fenêtre s'affiche et vous choisirez "Générateur de code" > En Office 2007)

6) Vous vous retrouvez dans l'outil de développement VBA où est affiché les lignes suivantes :
Option Compare Database

Private Sub Form_BeforeInsert(Cancel As Integer)

End Sub


7) Dans cette fenêtre vous choisirez, si ce n'est déjà fait, "Outils" > "References"

8) Vous cochez "Microsoft DAO 3.51 Object Library" et vous cliquez sur "Ok"

9) Nous allons maintenant aller rechercher le dernier record de votre table avec les lignes suivantes avant la ligne "End Sub"

On Error GoTo Err_
    
    Dim DB As DAO.Database
    Set DB = CurrentDb
    
    Dim strSQL As String
    '
    ' Ne connaissant pas le nom de votre table, je l'appellerai "MaTable"
    '
    strSQL = "SELECT PkService, Batiment, Etage, Piece, Service FROM MaTable "
    strSQL = strSQL & "WHERE PkService "
    strSQL = strSQL & "IN ("
    strSQL = strSQL & "SELECT Max(PkService) FROM MaTable)"
               
    Dim rst As DAO.Recordset
    Set rst = DB.OpenRecordset(strSQL, dbopendynset)
    
    If rst.RecordCount > 0 Then
        '
        '   Ne connaissant pas le nom que vous
        '   avez donné à vos controles,
        '   j'ai appellé ceux-ci "txtBatiment", "txtService"
        '
        Me.txtBatiment = rst!Batiment
        Me.txtEtage = rst!Etage
        
        ' Etc, etc, ...
        
    End If
    rst.Close
    
    Set rst = Nothing


Dès lors, à chaque fois que vous ajouterez un nouvel enregistrement, les valeurs ajoutées au dernier seront affichées dans votre formulaire.

Voilà ;-)

ps : Je teste toujours ce que je poste, cela fonctionne donc.
0
RougeXIII Messages postés 241 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 mars 2020 2
Modifié par RougeXIII le 29/03/2012 à 12:18
super vous avez compris ce que je souhaitais !

j'ai donc essayé le VBA que vous m'avez fournis en remplaçant avec mes donner

Private Sub Form_BeforeInsert(Cancel As Integer)
On Error GoTo Err_

Dim DB As DAO.Database
Set DB = CurrentDb

Dim strSQL As String
'
' Le nom de ma table est "Lieux"
'
strSQL = "SELECT ID_Localisation, Batiment, Etage, Pièce, Service FROM Lieux "
strSQL = strSQL & "WHERE ID_Localisation "
strSQL = strSQL & "IN ("
strSQL = strSQL & "SELECT Max(ID_Localisation) FROM Lieux)"

Dim rst As DAO.Recordset
Set rst = DB.OpenRecordset(strSQL, dbopendynset)

If rst.RecordCount > 0 Then
'
' Le nom des mes contrôles sont :"txt_batiment","txt_etage","txt_piece","txt_service"
'
Me.txt_batiment = rst!Batiment
Me.txt_etage = rst!Etage
Me.txt_piece = rst!piece
Me.txt_service = rst!Service


End If
rst.Close

Set rst = Nothing


End Sub


Et j'ai le méssage d'erreur : Etiquette non définie

Voici quelque info supplémentaire : - mon formulaire regroupe mes 3 tables (Lieux, Materiel, information Fournisseur)
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
29 mars 2012 à 21:44
Si vous avez tapé exactement ce que vous affichez l'erreur se trouve ici :

Me.txt_piece = rst!piece

car dans votre SQL le champ s'appele "Pièce" avec un accent !
C'est pourquoi je vous conseille ceci :
1) Ne jamais mettre d'espace dans les noms des tables ou des champs d'une base.
2) Ne jamais mettre d'accent non plus

Si votre champ s'appelle "Pièce", essayez ceci :

Me.txt_piece = rst("Pièce")


ou, si je me base sur le contenu de votre requête :

Me.txt_piece = rst(3)


Le 2, représente l'index dans l'ordre dans lequel vous sélectionnez vos champs.
Index 0 : ID_Localisation
Index 1 : Batiment
Index 2 : Etage
Index 3 : Pièce
Index 4 : Service

;-)
0

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

Posez votre question
RougeXIII Messages postés 241 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 mars 2020 2
Modifié par RougeXIII le 30/03/2012 à 11:48
J'ai retourné les lignes de tous les sens mais rien à faire :( j'ai toujours le même message d'erreur
et la ligne "On Error GoTo Err_" en surbrillance.

je vous met ci dessous la base de donnée. Pour que celavous semble plus clair.

http://dl.free.fr/getfile.pl?file=/ucLOXcBK

(ps : je vais essayer d'etre connecté ce soir pour voir sa ensemble )
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
30 mars 2012 à 12:44
Ok j'ai trouvé,
enlevez le On Error Goto Err_
et avant le End Sub, ajoutez ceci :
Exit Sub

Err_:
Msgbox Err.Description
Err.clear
0
RougeXIII Messages postés 241 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 mars 2020 2
30 mars 2012 à 13:07
Merci de votre réponse mais j'ai toujours un message d'erreur...

"Erreur d'execution '3001' :
Argument non valide"

et il me met en surbrillance cette ligne : "Set rst = DB.OpenRecordset(strSQL, dbopendynset) "
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
30 mars 2012 à 15:00
Avez-vous faire référence à la libraire "Microsoft DAO.3.51 Objects" ?
Parce que sinon ça ne peut pas fonctionner ... Ne vous inquiétez pas cette une librairie standard à Office, cela existe depuis la version 2 !
0
RougeXIII Messages postés 241 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 mars 2020 2
30 mars 2012 à 15:09
Mince elle ne s'etait pas activé précédement!
je viens de mettre "Microsoft DAO.3.6 Objects" et sa ne fonctionne toujours pas
=(
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
30 mars 2012 à 15:41
Postez le code complet du bouton, pour que je puisse vérifier ligne par ligne ce que vous avez mit svp.
Pour info, je ne répondrai peut-être plus avant 21h30, 22h.
0
RougeXIII Messages postés 241 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 mars 2020 2
30 mars 2012 à 15:47
Ce n'est pas pour une bouton c'est pour un Formulaire.

Je rapelle que plus haut dans la conversation j'ai mis un link de ma base de donné si vous souhaitez essayer.

ci-dessous ce que j'ai marqué pour mon Formulaire :


' cette commande VBA à pour but: à chaque fois que vous ajouterez un nouvel enregistrement, les valeurs ajoutées au dernier seront affichées.


Private Sub Form_BeforeInsert(Cancel As Integer)

Dim DB As DAO.Database
Set DB = CurrentDb

Dim strSQL As String
'
' Selection des Tables & champs qui sont en source de mes zones de texte
'
strSQL = "SELECT ID_Localisation, Batiment, Etage, Pièce, Service FROM Lieux "
strSQL = strSQL & "WHERE ID_Localisation "
strSQL = strSQL & "IN ("
strSQL = strSQL & "SELECT Max(ID_Localisation) FROM Lieux)"

Dim rst As DAO.Recordset
Set rst = DB.OpenRecordset(strSQL, dbopendynset)

If rst.RecordCount > 0 Then
'
' Me."Nom des champs" = rst!"Source de la zone"

Me.txt_batiment = rst!Batiment
Me.txt_etage = rst!Etage
Me.txt_piece = rst!Pièce
Me.txt_service = rst!Service


End If
rst.Close

Set rst = Nothing
Exit Sub

Err_:
MsgBox Err.Description
Err.Clear

End Sub
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
30 mars 2012 à 16:10
A la ligne : Set rst = DB.OpenRecordset(strSQL, dbopendynset)

C'est dbOpenDynaset
0
OlivrT Messages postés 323 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 24 mai 2012 36
30 mars 2012 à 16:14
Et pour être nickel, remettez en dessous de :
Private Sub Form_BeforeInsert(Cancel As Integer)

On Error Goto Err_

A la ligne suivante de Err.Clear, ajoutez Resume Exit_

Et la ligne précédente de Exit Sub Exit_:

Il faut toujours mettre une gestion d'erreur c'est plus propre.
0