Incrémenter et classer des données dans une listebox access
Bonjour,
J'ai un formulaire qui contient 3 textes_box , une liste_box et un bouton de commande :
-2 texte_box contiennent des dates à référencer : Texte_DateDebut et Texte_DateFin sous le format jj/mm/aaaa hh :mm
-1 texte_box contient un numéro de porte à référencer : Texte_Porte
-La liste_box afficher les résultats : Liste_Vrac
Tout fonctionne très bien lorsque je lance la requête SQL (ci-dessous) par le biais du bouton de commande.
La liste_box est composé de 6 colonnes (cf exemple ci dessous):
Journee : 30/06/2014
heure debut : 30/06/2014 17:00
heure fin : 30/06/2014 23:30
PFC destinataire : RENNES
porte : 60
Nombre : 1335
Maintenant, on me demande d’apporter deux améliorations à ce formulaire :
1) A chaque nouvelle donnée enregistrée dans la liste_box, les anciennes données ne doivent pas disparaitre de la liste_box.
Les nouvelles données devront s’incrémenter avec les anciennes données
2) Dans la liste_box, les anciennes données et les nouvelles données devront être classées par ordre chronologique de date de début et par numéro de porte
Je dois vous vous avouer que je suis bloqué et que je ne sais pas par où commencer..:roll:
Voici la le code vba sans ces deux améliorations :
Code:
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
| Option Compare Database
Dim Vporte As String
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 = DateAuFormatUS(Me.Texte_DateDebut)
Vdatefin = DateAuFormatUS(Me.Texte_dateFin)
Vdatedebut = CDate(Texte_DateDebut)
Vdatefin = CDate(Texte_dateFin)
Vporte = Val(Texte_porte)
With Me.Liste_Vrac
.RowSourceType = "Table/Requête"
.ColumnCount = 6 ' nombre de colonne que dois avoir le formulaire
.BoundColumn = 1 ' la colonne de reference
strSQLSELECT = "SELECT CVDate(Fix(([EventTime]-5/24))) AS journee, Min(dbo_vwItemEventHistory.EventTime) AS [heure debut], Max(dbo_vwItemEventHistory.EventTime) AS [heure fin], T_vracs.PFC_Destinataire, T_vracs.PORTE, Count(dbo_vwItemEventHistory.ItemID) AS CompteDeItemID"
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') AND (dbo_vwItemEventHistory.EventTime) >=#" & Format(Vdatedebut, "MM/dd/yyyy HH:mm") & "# And (dbo_vwItemEventHistory.EventTime) <=#" & Format(Vdatefin, "MM/dd/yyyy HH:mm") & "#)"
strSQLGROUPBY = "GROUP BY CVDate(Fix(([EventTime]-5/24))), T_vracs.PORTE, T_vracs.PFC_Destinataire"
strSQLHAVING = "HAVING ((T_vracs.PORTE) = '" & Vporte & "')"
strSQLORDERBY = "ORDER BY CVDate(Fix(([EventTime]-5/24))) DESC;"
txt_ChaineSQL = strSQLSELECT & vbCrLf & _
strSQLFROM & vbCrLf & _
strSQLWHERE & vbCrLf & _
strSQLGROUPBY & vbCrLf & _
strSQLHAVING & vbCrLf & _
strSQLORDERBY
Debug.Print txt_ChaineSQL
.RowSource = txt_ChaineSQL
.Requery
End With
End Sub |