IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

on error sur requete SQL


Sujet :

VBA Access

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 915
    Par défaut on error sur requete SQL
    Bonjour,
    Je souhaiterais éviter l'affichage du message d'erreur d'Access quand l'utilisateur saisi une clé sur une table déjà connue en codant comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    On Error GoTo err
     
    c3sql5 = "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Arch_Prenom],[Arch_Tel],[Num_UG])" & _
         "values ("
        c3sql5 = c3sql5 & Chr(34) & Me.Arch_Titre & Chr(34)
        c3sql5 = c3sql5 & ", " & Chr(34) & Me.Arch_Nom & Chr(34)
        c3sql5 = c3sql5 & ", " & Chr(34) & Me.Arch_Prenom & Chr(34)
       ' c3sql5 = c3sql5 & ", " & Chr(34) & Me.Arch_Tel & Chr(34)
        If IsNull(Me.Arch_Tel) Or Me.Arch_Tel = "" Then
          c3sql5 = c3sql5 & ", " & "Null"
            Else
          c3sql5 = c3sql5 & ", " & Chr(34) & Me.Arch_Tel & Chr(34)    'TEL
        End If
        If IsNull(Me.Num_UG3) Or Me.Num_UG3 = "" Then
         c3sql5 = c3sql5 & ", " & "Null"
            Else
          c3sql5 = c3sql5 & ", " & Chr(34) & Me.Num_UG3 & Chr(34) ' Num UG
        End If
     
       c3sql5 = c3sql5 & ");"
     
      DoCmd.RunSQL c3sql5
     
      Me.Arch_Titre = ""
      Me.Arch_Nom = ""
      Me.Arch_Prenom = ""
      Me.Arch_Tel = ""
      Me.Num_UG3 = ""
      Me.ContinuerAA.Visible = True
     
      Forms!F_SEC!Liste79.Requery
     
    fin:
      Exit Sub
    err:
      MsgBox "Attention Identifiant déjà connu ou UG non renseignée !!!", _
      vbOKOnly + vbExclamation, _
                      "Création Acteurs Archives "
      Me.Arch_Nom.SetFocus
    Le problème est que le message d'Access s'affiche toujours et avant mon message d'erreur personnalisé .
    Si quelqu'un a une solution Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Cmd est une commande Access pas vba! CurrentDb.execute Sql est une commande Vba.

    Mais vue que ta requête ne peut absolument pas fonctionner alors un message d'erreur est le bienvenu.

    N'utilises jamais on error!

    Code une erreur est là : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Num_UG])" & _
         "values ("
    CmdestunecommandeAccesspasvba!CurrentDb.executeSqlestunecommandeVba.

    Maisvuequetarequêtenepeutabsolumentpasfonctionneralorsunmessaged'erreurestlebienvenu.
    https://www.developpez.net/forums/d1...l/#post9140859
    Dernière modification par Invité ; 16/06/2017 à 07h54.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 915
    Par défaut
    Merci pour ton aide.
    J'ai pas tout compris sur ton message mais j'ai
    essayé de coder comme ça en tenant compte de tes indications :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Dim cnn As DAO.Database
     
    On Error GoTo err
     
    cnn.Execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Arch_Prenom],[Arch_Tel],[Num_UG])" & _
         "values (" & _
        " Me.Arch_Titre & Chr(34)" & _
          ", " & Chr(34) & Me.Arch_Nom & Chr(34) & _
         ", " & Chr(34) & Me.Arch_Prenom & Chr(34) & _
        ", " & Chr(34) & Me.Arch_Tel & Chr(34) & _
           ", " & Chr(34) & Me.Num_UG3 & Chr(34) & _
       ");"
     
    fin:
      Exit Sub
    err:
      MsgBox "Attention Identifiant déjà connu ou UG non renseignée !!!", _
      vbOKOnly + vbExclamation, _
                      "Création Acteurs Archives "
      Me.Arch_Nom.SetFocus
    Le problème est que maintenant quoique je saisisse il se dirige toujours sur le message d'erreur. Peut tu me m'aider un peu plus ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    il faut ajouter un espace en fin de cette ligne entre "...UG]) et " & _
    (...[Num_UG])UN_ESPACE_ICI" & _
    comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cnn.execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Arch_Prenom],[Arch_Tel],[Num_UG]) " & _
    car actuellement "...[Num_UG])" est collé à "values..." de la ligne suivante d'où une erreur levée

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 915
    Par défaut
    Citation Envoyé par galoir Voir le message
    Bonjour,

    il faut ajouter un espace en fin de cette ligne entre "...UG]) et " & _
    (...[Num_UG])UN_ESPACE_ICI" & _
    comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cnn.execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Arch_Prenom],[Arch_Tel],[Num_UG]) " & _
    car actuellement "...[Num_UG])" est collé à "values..." de la ligne suivante d'où une erreur levée
    **************************************
    Merci pour ton aide je viens de modifier la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     cnn.Execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Num_UG],[Arch_Prenom],[Arch_Tel],[Num_UG]) " & _
         "values (" & _
            Chr(34) & Me.Modifiable28 & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Nom & Chr(34) & _
           ", " & Chr(34) & Me.Num_UG3 & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Prenom & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Tel & Chr(34) & _
           ", " & Chr(34) & Me.Num_UG3 & Chr(34) & _
       ");"
    et là j'ai l'erreur suivante :
    erreur 3063
    Destination de sortie "NUM_UG" répliquée
    SI tu peux m'aider merci

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    en effet, la colonne [Num_UG] apparaît deux fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    cnn.Execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Num_UG],[Arch_Prenom],[Arch_Tel],[Num_UG]) " & _
         "values (" & _
            Chr(34) & Me.Modifiable28 & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Nom & Chr(34) & _
           ", " & Chr(34) & Me.Num_UG3 & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Prenom & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Tel & Chr(34) & _
           ", " & Chr(34) & Me.Num_UG3 & Chr(34) & _
       ");"
    Correction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    cnn.Execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Num_UG],[Arch_Prenom],[Arch_Tel]) " & _
         "values (" & _
            Chr(34) & Me.Modifiable28 & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Nom & Chr(34) & _
           ", " & Chr(34) & Me.Num_UG3 & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Prenom & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Tel & Chr(34) & _
       ");"

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 915
    Par défaut
    Citation Envoyé par galoir Voir le message
    Bonjour,

    en effet, la colonne [Num_UG] apparaît deux fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    cnn.Execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Num_UG],[Arch_Prenom],[Arch_Tel],[Num_UG]) " & _
         "values (" & _
            Chr(34) & Me.Modifiable28 & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Nom & Chr(34) & _
           ", " & Chr(34) & Me.Num_UG3 & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Prenom & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Tel & Chr(34) & _
           ", " & Chr(34) & Me.Num_UG3 & Chr(34) & _
       ");"
    Correction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    cnn.Execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Num_UG],[Arch_Prenom],[Arch_Tel]) " & _
         "values (" & _
            Chr(34) & Me.Modifiable28 & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Nom & Chr(34) & _
           ", " & Chr(34) & Me.Num_UG3 & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Prenom & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Tel & Chr(34) & _
       ");"
    ****************************
    OUPS Pardon ça en effet j'aurais du le voir, je viens de modifier ça marche mais il ne traite pas le "ON ERROR" même si j'insère un identifiant déjà connu([Arch_Nom])

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    On Error GoTo err
     
       cnn.Execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Num_UG],[Arch_Prenom],[Arch_Tel]) " & _
         "values (" & _
            Chr(34) & Me.Modifiable28 & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Nom & Chr(34) & _
           ", " & Chr(34) & Me.Num_UG3 & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Prenom & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Tel & Chr(34) & _
       ");"
     
    fin:
      Exit Sub
    err:
      MsgBox "Attention Identifiant déjà connu ou UG non renseignée !!!", _
      vbOKOnly + vbExclamation, _
                      "Création Acteurs Archives "
      Me.Arch_Nom.SetFocus
    En fait il exécute la requete sans signaler d'erreur mais ne l'insère dans la table
    Si tu as une idée comment faire MERCI

  9. #9
    Invité
    Invité(e)
    Par défaut
    Je vois peut être deux autres problèmes mais n'ayant pas le sub en entier..., modif en rouge :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    ...
    Dim cnn As DAO.Database, s As String
     
    On Error GoTo MyErr
    
    Set cnn = Currentdb 
    
    s = "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Num_UG],[Arch_Prenom],[Arch_Tel]) " & _
         "values (" & _
            Chr(34) & Me.Modifiable28 & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Nom & Chr(34) & _
           ", " & Chr(34) & Me.Num_UG3 & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Prenom & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Tel & Chr(34) & _
       ");"
    
    cnn.Execute s, dbFailOnError
     
    fin:
    Set cnn=nothing
    Exit Sub
    
    MyErr:
    MsgBox "Attention Identifiant déjà connu ou UG non renseignée !!!", vbExclamation, "Création Acteurs Archives"
    Debug.Print "Erreur n°" & Err.Number & " -> " & Err.Desription
    Me.Arch_Nom.SetFocus
    Resume Fin

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 915
    Par défaut
    Citation Envoyé par galoir Voir le message
    Je vois peut être deux autres problèmes mais n'ayant pas le sub en entier..., modif en rouge :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    ...
    Dim cnn As DAO.Database, s As String
     
    On Error GoTo MyErr
    
    Set cnn = Currentdb 
    
    s = "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Num_UG],[Arch_Prenom],[Arch_Tel]) " & _
         "values (" & _
            Chr(34) & Me.Modifiable28 & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Nom & Chr(34) & _
           ", " & Chr(34) & Me.Num_UG3 & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Prenom & Chr(34) & _
           ", " & Chr(34) & Me.Arch_Tel & Chr(34) & _
       ");"
    
    cnn.Execute s, dbFailOnError
     
    fin:
    Set cnn=nothing
    Exit Sub
    
    MyErr:
    MsgBox "Attention Identifiant déjà connu ou UG non renseignée !!!", vbExclamation, "Création Acteurs Archives"
    Debug.Print "Erreur n°" & Err.Number & " -> " & Err.Desription
    Me.Arch_Nom.SetFocus
    Resume Fin
    ********************************************
    Merci pour ta réponse le problème persiste si je mets l'option "dbFailOnError" quel que soit ce je que je saisie il lance "on error" si je ne le mets pas il exécute la requete sans m'afficher d'erreur même si j'insère un identifiant déjà connu "Arch_Nom" mais ne l'insère pas dans la table.
    Voiçi le code entier de la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Private Sub Commande3_Click()
    Dim cnn As DAO.Database
    Set cnn = CurrentDb
     
    On Error GoTo err
       cnn.Execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Num_UG],[Arch_Prenom],[Arch_Tel]) " & _
         "values (" & _
            Chr(34) & Forms!SF_Act_Arch!Modifiable28 & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Arch_Nom & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Num_UG3 & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Arch_Prenom & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Arch_Tel & Chr(34) & _
       ");"
      Me.Arch_Titre = ""
      Me.Arch_Nom = ""
      Me.Arch_Prenom = ""
      Me.Arch_Tel = ""
      Me.Num_UG3 = ""
      Me.ContinuerAA.Visible = True
     
      Forms!F_SEC!Liste79.Requery
     
    fin:
      Exit Sub
    err:
      MsgBox "Attention Identifiant déjà connu ou UG non renseignée !!!", _
      vbOKOnly + vbExclamation, _
                      "Création Acteurs Archives "
      Me.Arch_Nom.SetFocus
      Resume fin
    End Sub
    Si tu vois merci

  11. #11
    Invité
    Invité(e)
    Par défaut
    Ca devrait le faire en ajoutant cnn.recordsAffected, en rouge les ajouts :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Private Sub Commande3_Click()
    Dim cnn As DAO.Database
    
    On Error GoTo err
    Set cnn = CurrentDb  
    
     cnn.Execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Num_UG],[Arch_Prenom],[Arch_Tel]) " & _
         "values (" & _        Chr(34) & Forms!SF_Act_Arch!Modifiable28 & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Arch_Nom & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Num_UG3 & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Arch_Prenom & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Arch_Tel & Chr(34) & _   ");", dbFailOnError
    
    If cnn.RecordsAffected then
      Me.Arch_Titre = ""
      Me.Arch_Nom = ""
      Me.Arch_Prenom = ""
      Me.Arch_Tel = ""
      Me.Num_UG3 = ""
      Me.ContinuerAA.Visible = True 
     Forms!F_SEC!Liste79.Requery
    Else
    MsgBox "Attention Identifiant déjà connu ou UG non renseignée !!!", _
      vbOKOnly + vbExclamation, _
                      "Création Acteurs Archives "
      Me.Arch_Nom.SetFocus
    Endif
    fin:
     Set cnn = nothing
      Exit Sub
    err:
    MsgBox "Erreur n°" & Err.Number & vbcrlf & Err.Description, vbcritical,"Création Acteurs Archives "
    Resume fin
    End Sub

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 915
    Par défaut
    galoir : "Ca devrait le faire en ajoutant cnn.recordsAffected"
    ****************************************************
    Merci pour ta réponse ça ne marche pas
    J'ai essayé ce code vu sur Office mais il m'affiche toujours le message d'erreur même sur une saisie correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    Private Sub Commande3_Click()
    Dim cnn As DAO.Database
    Set cnn = CurrentDb
    Dim strError As String
    Dim errLoop As Error
     
    On Error GoTo ErrorHandler
     
       cnn.Execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Num_UG],[Arch_Prenom],[Arch_Tel]) " & _
         "values (" & _
            Chr(34) & Forms!SF_Act_Arch!Modifiable28 & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Arch_Nom & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Num_UG3 & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Arch_Prenom & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Arch_Tel & Chr(34) & _
       ");"
     
        Me.Arch_Titre = ""
        Me.Arch_Nom = ""
        Me.Arch_Prenom = ""
        Me.Arch_Tel = ""
        Me.Num_UG3 = ""
        Me.ContinuerAA.Visible = True
     
        Forms!F_SEC!Liste79.Requery
    'fin:
     'Set cnn = Nothing
    ' Exit Sub
    ErrorHandler:
     
    '  MsgBox "Attention Identifiant déjà connu ou UG non renseignée !!!", _
    '  vbOKOnly + vbExclamation, _
    '                  "Création Acteurs Archives "
    '  Me.Arch_Nom.SetFocus
     
     
       ' Enumerate Errors collection and display properties of
       ' each Error object.
       For Each errLoop In Errors
          With errLoop
             strError = _
                "Error #" & .Number & vbCr
             strError = strError & _
                "  " & .Description & vbCr
             strError = strError & _
                "  (Source: " & .Source & ")" & vbCr
             strError = strError & _
                "Press F1 to see topic " & .HelpContext & vbCr
             strError = strError & _
                "  in the file " & .HelpFile & "."
          End With
          MsgBox strError
       Next
     
        Resume Next
    End Sub

    Si tu as une idée merci

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Enlève le on error et le message d'erreur te dira avec précision quel est le problème!

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 915
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Bonjour,
    Enlève le on error et le message d'erreur te dira avec précision quel est le problème!
    *************************************
    Non,j'ai enlevé on error ça change rien: la reguete d'insertion fonctionne mais je n'ai pas de message d'erreur si je saisie un identifiant déjà connu et toujours pareil dans ce cas là l'insertion dans la table ne se fait pas.

  15. #15
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    et comme ceci en utilisant l'artillerie lourde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    ...
    If DCount("*", "TAB_Act_Arch", "Arch_Nom=""" &  Me.Arch_Nom  & """") = 0 Then
             cnn.Execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Num_UG],[Arch_Prenom],[Arch_Tel]) " & _
               "values (" & _
             .....     
     
            Me.Arch_Titre = ""
            Me.Arch_Nom = ""
            Me.Arch_Prenom = ""
            Me.Arch_Tel = ""
            Me.Num_UG3 = ""
            Me.ContinuerAA.Visible = True
       Else
            MsgBox "Attention Identifiant déjà connu ou UG non renseignée !!!", _
               vbOKOnly + vbExclamation, "Création Acteurs Archives "
       End If
    ...
    Dernière modification par Invité ; 19/06/2017 à 21h37.

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 915
    Par défaut
    Citation Envoyé par galoir Voir le message
    Bonjour,

    et comme ceci en utilisant l'artillerie lourde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    ...
    If DCount("*", "TAB_Act_Arch", "Arch_Nom=""" &  Me.Arch_Nom  & """") = 0 Then
             cnn.Execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Num_UG],[Arch_Prenom],[Arch_Tel]) " & _
               "values (" & _
             .....     
     
            Me.Arch_Titre = ""
            Me.Arch_Nom = ""
            Me.Arch_Prenom = ""
            Me.Arch_Tel = ""
            Me.Num_UG3 = ""
            Me.ContinuerAA.Visible = True
       Else
            MsgBox "Attention Identifiant déjà connu ou UG non renseignée !!!", _
               vbOKOnly + vbExclamation, "Création Acteurs Archives "
       End If
    ...
    ****************************
    Merci ça marche mais ça veut dire que l'on ne peut pas utiliser "on error" dans ce cas là ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim bd As DAO.Database
    Set bd = CurrentDb
    bd.Execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Num_UG],[Arch_Prenom],[Arch_Tel]) " & _
         "values (" & _
            Chr(34) & Forms!SF_Act_Arch!Modifiable28 & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Arch_Nom & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Num_UG3 & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Arch_Prenom & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Arch_Tel & Chr(34) & _
       ");"
    Car moi je l'ai utilisé sur une autre application :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Private Sub Commande66_Click()
    On Error GoTo err
    DoCmd.RunCommand acCmdSaveRecord
    Me.RecordSource = Me.RecordSource
    Me.Sous_Formulaire_Insertions.Form.RecordSource = Me.Sous_Formulaire_Insertions.Form.RecordSource
    Texte35.Locked = True
    fin:
        Exit Sub
    err:
        MsgBox "Attention vous avez omis de saisir un carton ou ce Numéro d'Insertion existe déjà !", _
        vbOKOnly + vbExclamation, _
                      "Saisie Insertions !!! "
        Me.Texte27.SetFocus
        Resume fin
    End Sub
    Et là il fonctionne trés bien.
    Si tu as un retour sur ça merci de me tenir au courant
    Merci à toi pour ton aide

  17. #17
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    On error inhibe les messages d'erreurs, ça implique un gestions de ces erreurs pour informer ou pour effectuer des actions en fonction!

    Inhiber les messages d'erreur sens les gérer revient à dire fait ce que tu veut dangereux non?

    C'est pas par ce que tu as bonus de 50% a vie que tu conduis sens vigilance! Le on error c'est un ta police d'assurance (avec parcimonie).
    Dernière modification par Invité ; 20/06/2017 à 08h19.

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 915
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Bonjour,
    On error inhibe les messages d'erreurs, ça implique un gestions de ces erreurs pour informer ou pour effectuer des actions en fonction!

    Inhiber les messages d'erreur sens les gérer revient à dire fait ce que tu veut dangereux non?

    C'est pas par ce que tu as bonus de 50% a vie que tu conduis sens vigilance! Le on error c'est un ta police d'assurance (avec parcimonie).
    *********************************************************
    Ok mais tu ne réponds pas à ma question pourquoi avec ce code ça marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
     
    Dim bd As DAO.Database
    Set bd = CurrentDb
    bd.Execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Num_UG],[Arch_Prenom],[Arch_Tel]) " & _
         "values (" & _
            Chr(34) & Forms!SF_Act_Arch!Modifiable28 & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Arch_Nom & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Num_UG3 & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Arch_Prenom & Chr(34) & _
           ", " & Chr(34) & Forms!SF_Act_Arch!Arch_Tel & Chr(34) & _
       ");"
    et pourquoi avec ce code ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub Commande66_Click()
    On Error GoTo err
    DoCmd.RunCommand acCmdSaveRecord
    Me.RecordSource = Me.RecordSource
    Me.Sous_Formulaire_Insertions.Form.RecordSource = Me.Sous_Formulaire_Insertions.Form.RecordSource
    Texte35.Locked = True
    fin:
        Exit Sub
    err:
        MsgBox "Attention vous avez omis de saisir un carton ou ce Numéro d'Insertion existe déjà !", _
        vbOKOnly + vbExclamation, _
    Quand je dis "ça marche" c'est que le on error s'exécute bien si il y a erreur de saisie ici c'était le fait de ne pas saisir un numéro de carton, ou que le Numéro d'Insertion existait déjà
    Merci

  19. #19
    Invité
    Invité(e)
    Par défaut
    Je suis pas sur d'avoir compris!
    Tu savoir pourquoi on error fonctionne avec CurrentDb et pas avec docmd?

    Parce que CurrentDb est une commande vba et docmd un command Access!

    DoCmd.SetWarnings False
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    bd.Execute "insert into [TAB_Act_Arch] ([Arch_Titre],[Arch_Nom],[Num_UG],[Arch_Prenom],[Arch_Tel]) " & _
         "values ('" & Forms!SF_Act_Arch!Modifiable28 & _
           "', '" & Forms!SF_Act_Arch!Arch_Nom & _
           "','" &  Forms!SF_Act_Arch!Num_UG3 & _
           "','" & Forms!SF_Act_Arch!Arch_Prenom & _
           "','" & Forms!SF_Act_Arch!Arch_Tel &  _
       "');"
    Mais surmenants parce que le deuxième cas les données sont liés au formulaire lui même a la base et que l'insert 'update et le delete sont implicites et faire une requête insert par dessus génère invariablement un doublon!

    Mais pour être tout à fait franc les contrôles liés au UserRorm c'est pas vraiment ma tasse de thé même dans Access je ne fais jamais ça!

    Je gère des contrôles indépendant par requête Sql!
    Dernière modification par Invité ; 20/06/2017 à 23h08.

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    915
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 915
    Par défaut
    Merci pour ta réponse, non c'est le contraire avec CurrentDb ça marche pas et avec docmd ça marche, mais enfin je retiens que CurrentDb est une commande vba et docmd un commande Access; ça veut dire que On Error est une commande Access ?
    Pour ce qui est des contrôles liés au Formulaire(UserForm) dans mon cas aussi ce sont des contrôles indépendants en effet je partage ton avis on est plus libre avec ce genre de contrôles .
    Merci pour ton aide

Discussions similaires

  1. [MySQL]probleme introuvable sur requete sql
    Par SegmentationFault dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/11/2006, 00h12
  2. erreur sur requete sql
    Par boss_gama dans le forum ASP
    Réponses: 1
    Dernier message: 31/07/2006, 13h39
  3. [RegEx] regexp sur requete SQL
    Par wamania dans le forum Langage
    Réponses: 4
    Dernier message: 11/07/2006, 15h40
  4. doute sur requete SQL
    Par gwendk dans le forum ASP
    Réponses: 19
    Dernier message: 31/05/2006, 17h15
  5. Question performance sur requetes sql
    Par shinrei dans le forum ASP
    Réponses: 7
    Dernier message: 19/05/2006, 13h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo