1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    septembre 2017
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : septembre 2017
    Messages : 52
    Points : 15
    Points
    15

    Par défaut Empêchement d'impression du rapport si deux champs identique

    Bonjour,
    À partir d'un formulaire, j'ai un bouton qui execute la Private Sub cmd_FicheProd (voir code dessous). J'aimerais que la Sub commande fasse toutes ces tâches sauf dans le cas où dans ce même formulaire, le champ Date de terminaison et le champ Date d'expédition sont identique. À ce moment, j'aimerais empêcher l'ouverture du rpt_FicheProductionAupel et d'un boite de message affiche un message.


    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
    Private Sub cmd_FicheProd_Click()
    If Me.lst_TypeBordure.Column(0) = "9" Then
          MsgBox "Motif de bordure invalide!", vbCritical, "Bordure"
          Exit Sub
      End If
    If Me.lst_CouleurReliure.Column(0) = "35" Then
          MsgBox "Couleur de la spirale invalide!", vbCritical, "Spirale"
          Exit Sub
      End If
    Dim sqlString, DateTerminaisonCalc As String
    Dim rs, rs2, rs3 As Recordset
     
    sqlString = "SELECT tbl_Commande.DateSignature, tbl_Tache.DateFinReel, tbl_Commande_Produit.ProduitID, tbl_Tache.TypeTacheID, tbl_Tache.MachineID, tbl_Commande.ID_Commande " & _
                    "FROM (tbl_Commande_Produit INNER JOIN tbl_Tache ON tbl_Commande_Produit.ID_CommandeProduit = tbl_Tache.ID_CommandeProduit) INNER JOIN tbl_Commande ON tbl_Commande_Produit.CommandeID = tbl_Commande.ID_Commande " & _
                    "WHERE (((tbl_Commande.DateSignature) Is Null) AND ((tbl_Commande_Produit.ProduitID)=" & NoProduit & ") AND ((tbl_Tache.TypeTacheID)=19) AND ((tbl_Tache.MachineID)=34)) OR (((tbl_Tache.DateFinReel) Is Null) AND ((tbl_Commande_Produit.ProduitID)=" & NoProduit & ") AND ((tbl_Tache.TypeTacheID)=19) AND ((tbl_Tache.MachineID)=34));"
    Set rs = CurrentDb.OpenRecordset(sqlString, dbOpenDynaset, dbSeeChanges)
     
    If rs.RecordCount = 0 Then
        sqlString = "SELECT tbl_Commande.DateExpedition, tbl_Commande_Produit.ProduitID, tbl_Commande.DateTerminaison " & _
                        "FROM tbl_Commande_Produit INNER JOIN tbl_Commande ON tbl_Commande_Produit.CommandeID = tbl_Commande.ID_Commande " & _
                        "WHERE (((tbl_Commande_Produit.ProduitID)=" & NoProduit & "));"
        Set rs2 = CurrentDb.OpenRecordset(sqlString, dbOpenDynaset, dbSeeChanges)
     
        If rs2.RecordCount > 0 Then
            If Nz(rs2.Fields("[DateExpedition]"), 0) <> 0 Then
                If Nz(rs2.Fields("[DateTerminaison]"), 0) = 0 Then
                    tempDate1 = CalcDateTerminaison(NoProduit)
                    If tempDate1 = 0 Then
                        tempDate2 = "0"
                    Else
                        tempDate2 = "#" & Month(tempDate1) & "-" & Day(tempDate1) & "-" & Year(tempDate1) & "#"
                    End If
                    sqlString = "UPDATE tbl_Commande_Produit INNER JOIN tbl_Commande ON tbl_Commande_Produit.CommandeID = tbl_Commande.ID_Commande SET tbl_Commande.DateTerminaison = " & tempDate2 & " " & _
                                    "WHERE (((tbl_Commande_Produit.ProduitID)=" & NoProduit & "));"
                    CurrentDb.Execute sqlString, dbFailOnError
                End If
                sqlString = "UPDATE tbl_Produit SET tbl_Produit.ImpressionFicheProd = 1 " & _
                                "WHERE (((tbl_Produit.ID_Produit)=" & NoProduit & "));"
                CurrentDb.Execute sqlString, dbFailOnError
     
                DoCmd.OpenReport "rpt_FicheProductionAupel", acViewPreview, , "[tbl_Produit].[ID_Produit]=" & NoProduit, , "Produit"
                DoCmd.RunCommand (acCmdZoom100)
            Else
                MsgBox "Il n'y a pas de date d'expédition!", vbCritical, "Date d'expédition"
            End If
            End If
        rs2.Close
    Else
        MsgBox "Certaine(s) date(s) nécessaire à la création de la fiche de production sont manquantes!", vbCritical, "Date manquante"
    End If
     
    rs.Close
     
     
    End Sub

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 793
    Points : 16 178
    Points
    16 178

    Par défaut

    Bonjour.

    Ça devrait être quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
           if not isnull(rs2![DateExpedition]) and not isnull(rs2![DateTerminaison]) Then 
     
               if rs2![DateExpedition]<>rs2![DateTerminaison] then
                  DoCmd.OpenReport "rpt_FicheProductionAupel", acViewPreview, , "[tbl_Produit].[ID_Produit]=" & NoProduit, , "Produit"
                  DoCmd.RunCommand (acCmdZoom100)
                end if
     
            End If
    • isnull() est l'équivalent de Nz(TonChamp, 0)=0.
    • rs![TonChamp] est équivalent à rs.fields("TonChamp").


    A+


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    septembre 2017
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : septembre 2017
    Messages : 52
    Points : 15
    Points
    15

    Par défaut

    Merci pour ce code. J'aimerais être averti pourquoi le rapport ouvre pas avec un msg box genre vbCritical

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 793
    Points : 16 178
    Points
    16 178

    Par défaut

    Bonjour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
               if rs2![DateExpedition]<>rs2![DateTerminaison] then
                     DoCmd.OpenReport "rpt_FicheProductionAupel", acViewPreview, , "[tbl_Produit].[ID_Produit]=" & NoProduit, , "Produit"
                     DoCmd.RunCommand (acCmdZoom100)
                  else
                     msgbox "Pas de rapport !",vbcritical
                end if
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    septembre 2017
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : septembre 2017
    Messages : 52
    Points : 15
    Points
    15

    Par défaut

    Citation Envoyé par Dano60 Voir le message
    Merci pour ce code. J'aimerais être averti pourquoi le rapport ouvre pas avec un msg box genre vbCritical
    Est ce que tu m'expliquer la raison de l'ajout à la ligne 2 en terme débutant.

    Merci de ton aide!!!!

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 793
    Points : 16 178
    Points
    16 178

    Par défaut

    Bonjour.

    Ligne 2 ? C'est ton instruction pour l'ouverture du rapport, pas un de mes ajouts.

    Je vais répondre à ce qui me semble être ta question.

    1. Après m'être assuré que les valeurs ne sont pas nules (isnull(rs2![DateExpedition]) and not isnull(rs2![DateTerminaison])).
      Quand on compare n'importe quoi et null on obtient null ce qui est interprété comme faux.
      Mais les nulls ont des comportements inattendus parfois donc il est bon de vérifier et de traiter explicitement les valeurs nulls.
      Ça évite les mauvaises surprises.
    2. Je teste si les dates sont différentes (rs2![DateExpedition]<>rs2![DateTerminaison])
    3. Si oui (then), j'appelle le code d'ouverture de rapport.
    4. Si non (else), j'affiche un message en spécifiant qu'il doit être agrémenté du symbole critique.


    Si ce n'était pas cela, merci de copier la ligne qui te pose un problème.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    septembre 2017
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : septembre 2017
    Messages : 52
    Points : 15
    Points
    15

    Par défaut

    Merci pour l'explication numéro 1.

    J'essai tout ça demain et te laisse des nouvelles.

    Merci et bonne soirée!!!!

  8. #8
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    septembre 2017
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : septembre 2017
    Messages : 52
    Points : 15
    Points
    15

    Par défaut

    Merci marot r,

    Ça fonctionne très bien!!!!!

    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Deux champs identiques dans la même table
    Par amne26 dans le forum Modélisation
    Réponses: 2
    Dernier message: 22/09/2008, 21h29
  2. Afficher valeur deux champs identiques
    Par Benzz dans le forum PHP & MySQL
    Réponses: 8
    Dernier message: 10/05/2008, 16h30
  3. sélectionner dans une table deux champs identiques
    Par zabdaniel dans le forum PHP & MySQL
    Réponses: 8
    Dernier message: 27/03/2008, 18h49
  4. deux champs identiques
    Par Shredder dans le forum PHP & MySQL
    Réponses: 4
    Dernier message: 26/06/2006, 14h22
  5. Requete croisant deux champs identiques
    Par sabotage dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/08/2005, 12h59

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