Problème d'enregistrement sur une table

Fermé
Tgm45 Messages postés 24 Date d'inscription lundi 1 août 2022 Statut Membre Dernière intervention 2 novembre 2022 - 17 oct. 2022 à 09:31
yg_be Messages postés 22729 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 17 oct. 2022 à 11:49

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.

A voir également:

3 réponses

yg_be Messages postés 22729 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
17 oct. 2022 à 09:50

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
Tgm45 Messages postés 24 Date d'inscription lundi 1 août 2022 Statut Membre Dernière intervention 2 novembre 2022
17 oct. 2022 à 10:09

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
yg_be Messages postés 22729 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
17 oct. 2022 à 10:22

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

0
Tgm45 Messages postés 24 Date d'inscription lundi 1 août 2022 Statut Membre Dernière intervention 2 novembre 2022
17 oct. 2022 à 11:13

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
Tgm45 Messages postés 24 Date d'inscription lundi 1 août 2022 Statut Membre Dernière intervention 2 novembre 2022
17 oct. 2022 à 11:13

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

0
yg_be Messages postés 22729 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
17 oct. 2022 à 11:15

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

0
Tgm45 Messages postés 24 Date d'inscription lundi 1 août 2022 Statut Membre Dernière intervention 2 novembre 2022 > yg_be Messages postés 22729 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024
17 oct. 2022 à 11:19

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
yg_be Messages postés 22729 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > Tgm45 Messages postés 24 Date d'inscription lundi 1 août 2022 Statut Membre Dernière intervention 2 novembre 2022
17 oct. 2022 à 11:49

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

0