Problème d'enregistrement sur une table

Tgm45 Messages postés 26 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -

Bonjour,

J'ai un soucis pour enregistrer des données sur une table que je ne comprends pas. Je fais un logiciel de suivi de matériels et comme la base de données regroupe 12k outils, j'ai ma base de données divisé en deux. Une partie pour les fiches modèle qui regroupe le nom du matériel, la photo, la référence article, le type de contrôle. Et ensuite j'ai les fiches outils qui sont rattachés au fiche modèle leur correspondant et la date de buté du prochain contrôle. On y retrouve leur numéro de série, leur position et une case commentaires.

Lorsque qu'on reçoit de nouveau matériels, on doit créer une fiche modèle avant de créer l'outil si jamais on à pas déjà se modèle. Cette partie fonctionne nickel mais lorsque je souhaite créer un outil, le code s'exécute mais rien n'ai inscrit dans ma table. Pourtant j'ai aucun message d'erreur qui s'affiche. Le code est le même que pour la création de fiche modèle, d'où mon incompréhension. 

Voici le code que j'ai pour créer un outil :

Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Outils",dbOpenDynaset)
rs.FindFirst "[Clé_modèle] = " & Me.Clé_modèle.Value & " AND [SN] = " & Chr(34) & Me.SN.Value & Chr(34)

If rs.NoMatch = False then
MsgBox "Un outil possédant les mêmes références outils et le même SN existe déjà. Vous ne pouvez enregistrer cet outil.", vbOKOnly, "Doublon"
Goto fin:
End if

MsgBox "Outil créer"
DoCmd.Close,,acSaveYes

Fin:

Tout s'exécute sans erreur mais rien n'est rentrée dans ma table. Si quelqu'un à une solution, je suis preneur.

3 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

    bonjour,

    Le code ne crée jamais rien, il affiche simplement l'un ou l'autre message.

    Je ne comprends ni pourquoi ni comment tu as "coupé" ta base en deux.

    0
  2. Tgm45 Messages postés 26 Statut Membre
     

    Quand je dit coupé en deux c'est juste que j'ai une table pour les fiches modèle et une pour les outils. Je me suis mal exprimé.

    Tu me dit que sa affiche juste juste un des 2 messages mais sur ma création de fiche modèle, ma ligne se créér bien dans ma table.

    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      Ce code ne crée certainement pas d'enregistrement dans une table.

      0
  3. Tgm45 Messages postés 26 Statut Membre
     

    J'ai fait sa comme code du coup avec se que j'ai trouvé sauf qu'il me met "erreur de compilation : Étiquette non défini" que je ne comprends pas.

    Private Sub CmdValider_Click()
     
    
    ' On teste si les butées ont toutes été remplies
    
    If ((NbControles > 0 And IsNull(Me.Texte21.Value)) Or (NbControles > 1 And IsNull(Me.Texte22.Value)) Or (NbControles > 2 And IsNull(Me.Texte23.Value)) Or (NbControles > 3 And IsNull(Me.Texte24.Value)) Or (NbControles > 4 And IsNull(Me.Texte25.Value)) Or (NbControles > 5 And IsNull(Me.Texte26.Value)) Or (NbControles > 6 And IsNull(Me.Texte27.Value)) Or (NbControles > 7 And IsNull(Me.Texte28.Value))) Then
    
        MsgBox "Le renseignement des dates de butées est obligatoire", vbOKOnly, "Erreur de saisie"
    
        GoTo fin:
    
    End If
    
     
    
    'On réactualise certaines cases au cas où...
    
    Actualisation_date Controle1, 1, Periode1
    
    Actualisation_date Controle2, 2, Periode2
    
    Actualisation_date Controle3, 3, Periode3
    
    Actualisation_date Controle4, 4, Periode4
    
    Actualisation_date Controle5, 5, Periode5
    
    Actualisation_date Controle6, 6, Periode6
    
    Actualisation_date Controle7, 7, Periode7
    
    Actualisation_date Controle8, 8, Periode8
    
     
    
    ' On fait aussi quelques tests
    
    If IsNull(Me.SN) Or IsNull(Me.Position) Then
    
        MsgBox "Le renseignement des champs SN et Position est obligatoire", vbOKOnly, "Erreur de saisie"
    
        GoTo fin:
    
    End If
    
    
    Dim rs As DAO.Recordset
    
    Dim i As Integer
    
    Set rs = CurrentDb.OpenRecordset("Outils", dbOpenDynaset)
    
    
    rs.FindFirst "[Clé_modèle] = " & Me.Clé_modèle.Value & " AND [SN] = " & Chr(34) & Me.SN.Value & Chr(34)
    
    If rs.NoMatch = False Then
    
        MsgBox "Un outil possédant les mêmes références outils et le même SN existe déjà. Vous ne pouvez enregistrer cet outil.", vbOKOnly, "Doublon"
    
        GoTo fin:
    
    End If
    
    
    With rs
    
    For i = Me.Clé_modèle.Value To Me.SN.Value
    
    rs.AddNew
    
    rs("Outils").Value = i
    
    
    rs.Update
    
    Next
    
    End With
    
    MsgBox "Outil créer"
    
    End Sub
    
    
    fin:
     
    
    End Sub
    0
    1. Tgm45 Messages postés 26 Statut Membre
       

      J'ai oublié de préciser qu'il me surligne le premier "Goto fin:"

      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      Ne vois-tu pas que tu as un "end sub" superflu?

      0
      1. Tgm45 Messages postés 26 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         

        Effectivement, je ne l'avais pas vu merci. Du coup il m'affiche pu l'erreur, le code s'exécute mais même résultat, j'ai rien qui est créer sur ma table.

        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Tgm45 Messages postés 26 Statut Membre
         

        Au lieu de "trouver" du code, il est parfois préférable de se former.

        0