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 :

cacul entre deux date


Sujet :

VBA Access

  1. #1
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 241
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 241
    Points : 213
    Points
    213
    Par défaut cacul entre deux date
    Bonjour,

    Je dois réaliser un formulaire Access qui permettrait à mes collègues de travail de connaitre le nombre de produit tombés dans une porte et ceci entre deux dates.

    Je m'explique un peu plus :
    Le formulaire serait composé de 5 colonnes :
    1 colonne PORTE
    1 colonne DESTINATION
    1 colonne Heure Debut
    1 colonne Heure Fin
    1 colonne Nbre Produit

    Les agents référenceront uniquement les colonnes Heure Debut et heure Fin. Dés qu'ils auront réferencé l'heure de début et l'heure de fin, le nombre de produit s'afficherait automatiquement

    (Cf tableau ci-dessous)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    PORTE	DESTINATION	Heure debut	Heure fin	   nombre produit
    63      Paris	         23:00 	          01:00	
    63	 Paris	         01:00           02:30	
    62	 Lyon	         22:00	         23:30	
    62	 Lyon	         23:00	         01:30	
    61	 Paris	         00:00	         02:00	
    60	 Nantes	         23:30	         02:20	
    60	 Nantes	         02:21	         04:00

    En sachant que pour une même porte (63 par exemple), je peux avoir plusieurs départ (Paris dans ce cas précis).
    Le nombre de produits tombé dans le premier départ pour Paris serait calcule entre 23:00 et 01:00.
    Et pour le deuxième départ pour Paris, l'heure de début serait l'heure de fin du premier départ soit 01:00.

    J'ai commencé à élaborer mes requetes access mais je bloque. Je pense que je dois créer un code vba. Et là je bloque...
    J'aimerais avoir une piste pour pouvoir commencer ...
    Ne faut il pas que je crée des variable dates..???

    Merci d'avance pour votre aide

  2. #2
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 241
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 241
    Points : 213
    Points
    213
    Par défaut
    Bonjour,
    Suite à ma demande de calcul en tre deux date sous access,

    J'ai crée ce code vba
    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
    58
    59
    60
    61
    62
    63
    64
    65
    Option Compare Database
     
    Dim Vdatedebut As Date
    Dim Vdatefin As Date
     
    Dim txt_ChaineSQL As String
    Dim strSQLSELECT As String
    Dim strSQLFROM As String
    Dim strSQLWHERE As String
    Dim strSQLGROUPBY As String
    Dim strSQLHAVING As String
    Dim strSQLORDERBY As String
     
    Dim objSpeech As Object
    Dim strPhrase As String
    Dim intPitch As Integer
     
     
    Private Sub Cmd_vrac_Click()
     
    'Vdatedebut = Texte_datedebut
    'Vdatefin = Texte_DateFin
     
     
    With Me.Listevrac
    .RowSourceType = "Table/Requête"
    .ColumnCount = 5 ' nombre de colonne que dois avoir le formulaire
    .BoundColumn = 1 ' la colonne de reference
     
     
    strSQLSELECT = "SELECT CVDate(Fix(([EventTime]-5/24))) AS journee, T_vracs.PORTE, T_vracs.PFC_Destinataire, Count(dbo_vwItemEventHistory.ItemID) AS CompteDeItemID, dbo_vwItemEventHistory.EventTime"
     
    strSQLFROM = "FROM ((dbo_vwItemEventHistory INNER JOIN dbo_vwParts ON dbo_vwItemEventHistory.PartID = dbo_vwParts.ID) INNER JOIN [table_Affich-general] ON dbo_vwParts.DisplayName = [table_Affich-general].[Chute (format access)]) INNER JOIN T_vracs ON [table_Affich-general].[Nom Porte principale] = T_vracs.PFC_Destinataire"
     
    strSQLWHERE = "WHERE (((dbo_vwItemEventHistory.ItemEventTypeID) = 4) And ((dbo_vwItemEventHistory.ResultTypeID) = 23) And (([table_Affich-general].Allée) = 'vrac'))"
     
    strSQLGROUPBY = "GROUP BY CVDate(Fix(([EventTime]-5/24))), T_vracs.PORTE, T_vracs.PFC_Destinataire, dbo_vwItemEventHistory.EventTime"
     
    'strSQLHAVING = "HAVING (((dbo_vwItemEventHistory.EventTime) >=" & Vdatedebut & " And (dbo_vwItemEventHistory.EventTime) <=" & Vdatefin & "))"
    strSQLHAVING = "HAVING (((dbo_vwItemEventHistory.EventTime) >= #17/03/2014 05:00# And (dbo_vwItemEventHistory.EventTime) <=#18/03/2014 05:00#))"
     
     
    strSQLORDERBY = "ORDER BY CVDate(Fix(([EventTime]-5/24))) DESC;"
     
     
    txt_ChaineSQL = strSQLSELECT & vbCrLf & _
                    strSQLFROM & vbCrLf & _
                    strSQLWHERE & vbCrLf & _
                    strSQLGROUPBY & vbCrLf & _
                    strSQLHAVING & vbCrLf & _
                    strSQLORDERBY
     
      MsgBox txt_ChaineSQL
     
    Debug.Print txt_ChaineSQL
     
     
     
     
    .RowSource = txt_ChaineSQL
    .Requery
     
    End With
     
    End Sub
    or dans ce code, sur la ligne 39, strSQLHAVING, lorsque j'insere les date sous forme la forme d'une variable, je n'ai aucune donnée qui s'affiche sur ma listebox de mon formulaire. Et lorsque j'insere en dur les date, les données s'affichent.
    J'ai affiché les deux lignes de codes , l'une avec les variables et la seconde avec les dates en dure

    je souhaiterais que les date soient des variables car elles sont referencées dans des textebox qui sont dans mon formuaire

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonjour,

    T'as fait l'essentiel, de petits détails :

    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
    58
    59
    60
    Option Compare Database
     
    Dim Vdatedebut As Date
    Dim Vdatefin As Date
     
    Dim txt_ChaineSQL As String
    Dim strSQLSELECT As String
    Dim strSQLFROM As String
    Dim strSQLWHERE As String
    Dim strSQLGROUPBY As String
    Dim strSQLHAVING As String
    Dim strSQLORDERBY As String
     
    Dim objSpeech As Object
    Dim strPhrase As String
    Dim intPitch As Integer
     
     
    Private Sub Cmd_vrac_Click()
     
    'Vdatedebut = Texte_datedebut
    'Vdatefin = Texte_DateFin
     
     
    With Me.Listevrac
    .RowSourceType = "Table/Requête"
    .ColumnCount = 5 ' nombre de colonne que dois avoir le formulaire
    .BoundColumn = 1 ' la colonne de reference
     
     
    strSQLSELECT = "SELECT CVDate(Fix(([EventTime]-5/24))) AS journee, T_vracs.PORTE, T_vracs.PFC_Destinataire, Count(dbo_vwItemEventHistory.ItemID) AS CompteDeItemID, dbo_vwItemEventHistory.EventTime"
     
    strSQLFROM = "FROM ((dbo_vwItemEventHistory INNER JOIN dbo_vwParts ON dbo_vwItemEventHistory.PartID = dbo_vwParts.ID) INNER JOIN [table_Affich-general] ON dbo_vwParts.DisplayName = [table_Affich-general].[Chute (format access)]) INNER JOIN T_vracs ON [table_Affich-general].[Nom Porte principale] = T_vracs.PFC_Destinataire"
     
    strSQLWHERE = "WHERE (((dbo_vwItemEventHistory.ItemEventTypeID) = 4) And ((dbo_vwItemEventHistory.ResultTypeID) = 23) And (([table_Affich-general].Allée) = 'vrac'))"
     
    strSQLGROUPBY = "GROUP BY CVDate(Fix(([EventTime]-5/24))), T_vracs.PORTE, T_vracs.PFC_Destinataire, dbo_vwItemEventHistory.EventTime"
     
    strSQLHAVING = "HAVING (((dbo_vwItemEventHistory.EventTime) >=#" & Format(Vdatedebut,'MM/dd/yyyy HH:mm:ss') & "# And (dbo_vwItemEventHistory.EventTime) <=#" & Format(Vdatefin,'MM/dd/yyyy HH:mm:ss') & "#))"
    'strSQLHAVING = "HAVING (((dbo_vwItemEventHistory.EventTime) >= #17/03/2014 05:00# And (dbo_vwItemEventHistory.EventTime) <=#18/03/2014 05:00#))"
     
    strSQLORDERBY = "ORDER BY CVDate(Fix(([EventTime]-5/24))) DESC;"
     
    txt_ChaineSQL = strSQLSELECT & vbCrLf & _
                    strSQLFROM & vbCrLf & _
                    strSQLWHERE & vbCrLf & _
                    strSQLGROUPBY & vbCrLf & _
                    strSQLHAVING & vbCrLf & _
                    strSQLORDERBY
     
      MsgBox txt_ChaineSQL
     
    Debug.Print txt_ChaineSQL
     
    .RowSource = txt_ChaineSQL
    .Requery
     
    End With
     
    End Sub
    Bonne continuation

  4. #4
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 241
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 241
    Points : 213
    Points
    213
    Par défaut
    Bonjour madefemere,

    merci pour de ton aide.. mais la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSQLHAVING = "HAVING (((dbo_vwItemEventHistory.EventTime) >=#" & Format(Vdatedebut,'MM/dd/yyyy HH:mm:ss') & "# And (dbo_vwItemEventHistory.EventTime) <=#" & Format(Vdatefin,'MM/dd/yyyy HH:mm:ss') & "#))"
    comporte une erreur :
    erreur de compilation . erreur de synthaxe

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSQLHAVING = "HAVING (((dbo_vwItemEventHistory.EventTime) >=#" & Format(Vdatedebut,"MM/dd/yyyy HH:mm:ss") & "# And (dbo_vwItemEventHistory.EventTime) <=#" & Format(Vdatefin,"MM/dd/yyyy HH:mm:ss") & "#))"

  6. #6
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 241
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 241
    Points : 213
    Points
    213
    Par défaut
    madefemere , c'est ok,
    j'ai trouvé d'ou venait l'erreur.
    dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSQLHAVING = "HAVING (((dbo_vwItemEventHistory.EventTime) >=#" & Format(Vdatedebut, "MM/dd/yyyy HH:mm:ss") & "# And (dbo_vwItemEventHistory.EventTime) <=#" & Format(Vdatefin, "MM/dd/yyyy HH:mm:ss") & "#))"
    il fallait mettre les expressions
    "& Format(Vdatedebut, "MM/dd/yyyy HH:mm:ss") &
    et
    "& Format(Vdatefin, "MM/dd/yyyy HH:mm:ss") &"
    entre "" et non '

  7. #7
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 241
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 241
    Points : 213
    Points
    213
    Par défaut
    madefemere,

    je te tiens je te garde..

    j'aimerais ameliorer ma requete sql :
    Comment peut on faire pour je puisse faire un compte de colis entre deux date et sur une même porte.
    Le champ compte colis est
    Count(dbo_vwItemEventHistory.ItemID) AS CompteDeItemID
    le champ porte est
    T_vracs.PORTE

  8. #8
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 241
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 241
    Points : 213
    Points
    213
    Par défaut
    Bonjour madefemere,

    J'ai modifié mon code sql pour avoir un compte de colis entre deux dates.
    On me demande maintenant, que les dates (date debut et date fin) inscrites dans les texte_box du formulaire soient réferencées dans la liste box.
    Comment faire pour transferer des dates inscrites dans un texte_box d'un formulaire dans la liste_box de ce même formulaire ?

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonjour facteur,

    Qu'est-ce que vous entendez par :
    que les dates (date début et date fin) inscrites dans les texte_box du formulaire soient référencées dans la liste box.
    Est-ce que si tu as tes 2 texte_box avec les valeurs 01/01/2014 et 30/01/2014, tu veux dans ton liste_box

    Date_Début - Date_Fin - .............
    01/01/2014 - 31/01/2014 - Enr1
    01/01/2014 - 31/01/2014 - Enr2
    01/01/2014 - 31/01/2014 - Enr3
    01/01/2014 - 31/01/2014 - Enr4

    @+

  10. #10
    Membre actif
    Inscrit en
    Avril 2007
    Messages
    1 241
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 241
    Points : 213
    Points
    213
    Par défaut
    touta a fait madefemere

  11. #11
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonsoir,

    Exemple très simple :
    Soit DateDebut et DateFin sont les noms de tes champs zone de texte.
    Soit zdlDonnees ta zone de liste.
    Soit Table1 avec les champs IdEnr et NomEnr sont les champs de ta table (source de la requête). Tu adapteras.

    Le code suivant affichera le résultat que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim strsql As String
    strsql = "SELECT #" & Format(Me.DateDebut, "mm/dd/yyyy") & "#,#" & Format(Me.DateFin, "mm/dd/yyyy") & "#,[Table1].[IdEnr], [Table1].[NomEnr] FROM [Table1];"
    Me.zdlDonnees.RowSource = strsql
    Me.zdlDonnees.Requery
    Bonne continuation

Discussions similaires

  1. Minimum entre deux dates
    Par JF.Stachera dans le forum Access
    Réponses: 7
    Dernier message: 21/09/2005, 00h06
  2. Différence entre deux dates
    Par pittzz dans le forum Oracle
    Réponses: 5
    Dernier message: 18/07/2005, 13h24
  3. Comment obtenir la différence entre deux dates ?
    Par jbat dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2005, 10h34
  4. Calcul entre deux dates heures
    Par Isa31 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 31/03/2005, 14h17
  5. comment obtenir l’intervalle de mois entre deux date
    Par looc 6699 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/02/2005, 12h08

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