ACCESS 2007 CALCULS HEURES

cs_NOVICE13 Messages postés 3 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 13 juin 2010 - 27 mai 2010 à 19:37
cdtxcurie Messages postés 1 Date d'inscription samedi 1 novembre 2008 Statut Membre Dernière intervention 12 août 2010 - 12 août 2010 à 15:18
Bonjour,
j'ai une table svt ce modèle:

Champs 1 : Heure (format 00:00) Champs 2:DUREE (format 00:00 )(Qui est une constante)
Je souhaiterais depuis la première valeur du Champs 1 additionner la durée du champs 2 et injecter le résultat dans la ligne svt soit la ligne 2 du Champs 1 de telle sorte que le calcul suivant cumule les heures et ceux jusquà la fin du fichier.

Ex
HEURE DUREE
8:00 00:20
8:20 00:20
8:40 00:20
ect...

Merci de votre aide qui me sera précieuse.
Bonne journée.

5 réponses

cs_akzo Messages postés 133 Date d'inscription dimanche 23 juin 2002 Statut Membre Dernière intervention 3 janvier 2015 3
29 mai 2010 à 19:22
Salut,
Peut etre quand allant par ici cela pourrait t'aider

http://www.info-3000.com/access/heureplus24/heureplus24.php

salutation et bonne continuation
0
cs_NOVICE13 Messages postés 3 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 13 juin 2010
6 juin 2010 à 16:44
Merci de ton aide,
voici le code (Probablement usine à gaz ) que j'ai pu élaborer:


Dim dbs As Database
Dim rstHeur As DAO.Recordset
Dim rstHeur1 As DAO.Recordset
Dim rstHeur2 As DAO.Recordset
Dim rstHeur3(1 To 2) As DAO.Recordset


'Création du Recordset
Set dbs = CurrentDb


Set rstHeur = dbs.OpenRecordset("T_Horaire", dbOpenTable)
rstHeur.MoveFirst

Set rstHeur1 = dbs.OpenRecordset("T_Horaire", dbOpenTable)
rstHeur1.MoveNext

Set rstHeur2 = dbs.OpenRecordset("T_Horaire", dbOpenTable)
rstHeur2.MoveNext

Set rstHeur3(1) = dbs.OpenRecordset("SELECT RESULT FROM T_Horaire ", dbOpenSnapshot)
Set rstHeur3(2) = rstHeur2.Clone



While Not rstHeur.EOF
rstHeur.Edit
rstHeur("NbHeure1") = rstHeur1("NbHeure2") + rstHeur("NbHeure1")
rstHeur.Update

rstHeur2.Edit
rstHeur2("RESULT") = rstHeur("NbHeure1")
rstHeur2.Update

rstHeur.MoveNext

rstHeur.Edit
rstHeur("NbHeure1") = rstHeur2(2)
rstHeur.Update

rstHeur2.MoveNext

rstHeur3(1).MoveNext

Me.Requery

Wend

Set rstHeur = Nothing
Set rstHeur1 = Nothing
Set rstHeur2 = Nothing
Set rstHeur3(1) = Nothing



Il me reste à gérer l'erreur d'arrêt en plein milieu de la boucle "While Not", là je trouve pas.
Qq un peut m'aider SVP.


Voici la table:
T_HORAIRE

NbHeure1 NbHeure2 RESULT
09:20 00:20 00:00
09:40 00:20 09:20
10:00 00:20 09:40
10:20 00:20 10:00
10:40 00:20 10:20

Merci par avance
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
8 juin 2010 à 09:33
Bonjour,

Alors déjà un conseil, évites l'utilisation de DAO, c'est un peu dépassé, il vaut mieux préférer ADO, qui est plus récent :)

Ensuite je ne vois pas l'intéert d'ouvrir 3 recordset, tes 2 valeurs se trouvent dans la même ligne mais dans un champ différent, c'est donc dans le recordset qu'il faut récupérer tes 2 champs avec une requête.

Pour l'addition, plutôt que d'utiliser "+", tu as la fonctione dateadd


L'expérience, c'est une connerie par jour, mais jamais la même..
0
cs_NOVICE13 Messages postés 3 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 13 juin 2010
13 juin 2010 à 11:18
Merci lolokun,

Je ne t'ai pas dit que j'étais novice en VBA, tu m'as bien aidé sur ce coup.

Alors voici ce que j'ai trouvé et fait :

Sur la Module:
Option Explicit
Option Compare Binary

Public cnnADO As New ADODB.Connection
Public cmdADO As New ADODB.Command
Public rsADO As New ADODB.Recordset

Function OuvreDB()

' Ouverture de la Base de données des Membres
' Etablissement de la connexion
cnnADO.Provider = "Microsoft.ACE.OLEDB.12.0"
cnnADO.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\MaBase.accdb;Persist Security Info=False;"
cnnADO.Open
'Fin de l'établissement de la connexion
' Configuration de la commande
cmdADO.ActiveConnection = cnnADO ' Etablis la connection
cmdADO.CommandText = "SELECT NbHeure1,NbHeure2,RESULT From T_HORAIRE" ' Identifications des champs de la Table
' Fin de la configuration de la commande

' Configuration et ouverture du RecordSet
rsADO.CursorLocation = adUseClient ' Utilisation d'un mode client
rsADO.CursorType = adOpenDynamic ' Ouvre en mode dynamique
rsADO.LockType = adLockOptimistic ' Verrouille la base de donnée en mode exclusive
rsADO.Open cmdADO ' Ouvre le RecordSet
' Fin de la Configuration et de l'ouverture du RecordSet
' Fin de l'ouverture de la Base de données des Membres

End Function



Sur Bouton Clic:

Private Sub Commande0_Click()


Dim strHeure1 As Date
Dim strHeure2 As Date
Dim Total As Date


Call OuvreDB

'StrTotal = rsADO("RESULT").Value
rsADO.MoveFirst
'strHeure1 = rsADO("NbHeure1").Value
'strHeure2 = rsADO("NbHeure2").Value



Do While Not rsADO.EOF
StrTotal = rsADO("RESULT").Value
strHeure1 = rsADO("NbHeure1").Value
strHeure2 = rsADO("NbHeure2").Value
rsADO("RESULT") = strHeure1 + strHeure2
strHeure1 = rsADO("RESULT").Value
[b]rsADO.MoveNext
rsADO("NbHeure1") = strHeure1/b
rsADO.Move -1
rsADO.MoveNext
Loop



rsADO.Close
cnnADO.Close
Set rsADO = Nothing


Exit_Commande0_Click:
Exit Sub

Err_Commande0_Click:
MsgBox Err.Description
Resume Exit_Commande0_Click:

End Sub

Mais voilà, lors du dernier passage dans la boucle While Loop, etant donnée que je mets à jours le champs de la ligne svt ... ERROR.

QUELQU'UN A UNE IDEE ??


Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cdtxcurie Messages postés 1 Date d'inscription samedi 1 novembre 2008 Statut Membre Dernière intervention 12 août 2010
12 août 2010 à 15:18
Bonjour,
pour en finir avec ce calcul, voici ce que j'ai testé et qui fonctionne:

La table: T_HORAIRE

NbHeure1 NbHeure2 RESULT
07:00 00:05 07:05
07:05 00:05 07:10
07:10 00:05 07:15
07:15 00:05 07:20
*******************************************
La commande:

Option Compare Database

Private Sub CalculHoraire_Click()

Dim strHeure1 As Date
Dim strHeure2 As Date
Dim Total As Date
Dim FinFichier As Long
Dim CompteDeplacementRs As Long

Call OuvreDB

rsADO.MoveFirst



If rsADO.EOF Then
FinFichier = 0
Else
rsADO.MoveLast
FinFichier = rsADO.RecordCount
End If

rsADO.MoveFirst


Do While Not rsADO.EOF
StrTotal = rsADO("RESULT").Value
strHeure1 = rsADO("NbHeure1").Value
strHeure2 = rsADO("NbHeure2").Value
rsADO("RESULT") = strHeure1 + strHeure2
strHeure1 = rsADO("RESULT").Value
rsADO.MoveNext
CompteDeplacementRs = CompteDeplacementRs + 1

If CompteDeplacementRs = FinFichier Then
Exit Do
Else
rsADO("NbHeure1") = strHeure1
End If

Loop

rsADO.Close
cnnADO.Close
Set rsADO = Nothing


Exit_Commande0_Click:
Exit Sub

Err_Commande0_Click:
MsgBox Err.Description
Resume Exit_Commande0_Click:

End Sub
*******************************************************

Et encore merci de l'aide qui m'a été apportée.
0
Rejoignez-nous