Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/01/2011, 11h12   #1
Invité régulier
 
Inscription : avril 2008
Messages : 57
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 57
Points : 6
Points : 6
Par défaut récupération de donnée

bonjour,
je sèche !
je doit récupérer des données de fichier mdb afin d'extraire des états d'équipements,voir l'état en live et aussi sous forme de graph afin d'analyser le TRS .
j'ai réussi avec des fichiers texte pour d'autre équipement mais la c'est la galère.

voila ou j'en suis mais ca ne fonctionne pas !
si quelqu'un peut me donner un coup de main ca serait sympa¨!



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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
Option Compare Database
 
'------------------------------------------------------------
' récuperation des données promess
'
'------------------------------------------------------------
Function ActuPromess(machine)
 
Dim MonSql As String
Dim db As DAO.Database
Dim MonSql2 As String
Dim Db2 As DAO.Database
Dim MaTable2 As DAO.Recordset
 
x = 0
i = 100
While x = 0
i = i - 1
 
    If i <> 0 Then
    fichier = "stationdata_" & i & ".mdb"
        Else
        fichier = "stationdata.mdb"
    End If
 
If Dir("S:\Production\Lean_Data\PROMESS\Promess n°" & machine & "/" & fichier, vbHidden) <> "" Then
x = 1
End If
 
Wend
 
 
 
 
Set dbsPromess = DBEngine.Workspaces(0).OpenDatabase("S:\Production\Lean_Data\PROMESS\Promess n°" & machine & "/" & fichier)
'Ouverture de la base de données
Set db = dbsPromess
 
 
MonSql = "SELECT [Nom programme],Date,Sum([Surcharge]) AS SommeDeSurcharge,Sum([Limite inferieure depassee]) AS SommeDeLimitInf,Sum([Limite superieure depassee]) AS SommeDeLimitSup,Sum([Aucune force atteinte ou aucun signal atteint]) AS SommeDeAucuneForce,Sum([Force ou signal trop tot]) AS SommeDeForceOuSignalTropTot, Sum(NOK) AS SommeDeNOK, Sum(OK) AS SommeDeOK FROM donnees GROUP BY [Nom programme], Date"
 
'Surcharge
 
'Ouverture du Recordset
Set MaTable = db.OpenRecordset(MonSql)
 
 
 
  Dim intI As Integer
  intI = 0
 
   'boucle les encregistrement dans des tableau
 
 While Not MaTable.EOF
 
 
    Set Db2 = CurrentDb
    MonSql2 = "SELECT Nb_Ok, Nb_Ko,programme,date,machine,Surcharge,Limit_Inf,Limit_Sup,Force_signal_trop_tot,Aucune_force From Promess_recap "
    Set MaTable2 = Db2.OpenRecordset(MonSql2)
 
        Dim strCritere As String
        '  strCritere = "programme LIKE " & Chr(34) & MaTable![Nom programme] & Chr(34)
            strCritere = "programme LIKE " & Chr(34) & MaTable![Nom programme] & Chr(34) & " And date LIKE " & Chr(34) & MaTable![date] & Chr(34) & " And machine LIKE " & Chr(34) & machine & Chr(34)
        MaTable2.FindFirst strCritere
 
 
            If MaTable2.NoMatch Then
            'Passe en mode Ajout
            MaTable2.AddNew
            'Affecte les différents champs
            MaTable2.Fields("programme").Value = MaTable![Nom programme]
            MaTable2.Fields("Date").Value = MaTable![date]
            MaTable2.Fields("machine").Value = machine
            MaTable2.Fields("Nb_Ok").Value = MaTable![SommeDeOK]
            MaTable2.Fields("Nb_Ko").Value = MaTable![SommeDeNOK]
            MaTable2.Fields("Force_signal_trop_tot").Value = MaTable![SommeDeForceOuSignalTropTot]
            MaTable2.Fields("Aucune_force").Value = MaTable![SommeDeAucuneForce]
            MaTable2.Fields("Limit_Sup").Value = MaTable![SommeDeLimitSup]
            MaTable2.Fields("Limit_Inf").Value = MaTable![SommeDeLimitInf]
            MaTable2.Fields("Surcharge").Value = MaTable![SommeDeSurcharge]
            'Met à Jour
            MaTable2.Update
                Else
                MaTable2.Edit
                'Affecte la date actuelle
                MaTable2.Fields("Nb_Ok").Value = MaTable![SommeDeOK]
                MaTable2.Fields("Nb_Ko").Value = MaTable![SommeDeNOK]
                MaTable2.Fields("Force_signal_trop_tot").Value = MaTable![SommeDeForceOuSignalTropTot]
                MaTable2.Fields("Aucune_force").Value = MaTable![SommeDeAucuneForce]
                MaTable2.Fields("Limit_Sup").Value = MaTable![SommeDeLimitSup]
                MaTable2.Fields("Limit_Inf").Value = MaTable![SommeDeLimitInf]
                MaTable2.Fields("Surcharge").Value = MaTable![SommeDeSurcharge]
                'Met à Jour
                MaTable2.Update
            End If
 
 'Passe au suivant
 intI = intI + 1
 MaTable.MoveNext
 
 MaTable2.Close
 
Wend
 
 
End Function
pythfred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 14h00   #2
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
Mouais, c''est ce que j'appelle du vite fait...
Tu as nommé un champ date, il faut alors le mettre entre [] car c'est un nom réservé et donc interdit d'un point de vue conventionnel
Il te serait judicieux de rendre ton code un peu plus propre et plus générique et d'employer notamment des conventions UNC pour les chemins physiques plutôt que S:\ sauf si ton code est ce que l'on nomme du "Jetable"...
Par ailleurs quand on ouvre, une DB, et/ou un Recordset, on le ferme une fois fini.

Bref, tu dis que ça ne marche pas mais qu'est ce qui ne marche pas ?

Argy

P.S. Amuses toi à mettre Option Explicit juste en-dessous de
Option Compare Database...
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/01/2011, 10h22   #3
Invité régulier
 
Inscription : avril 2008
Messages : 57
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 57
Points : 6
Points : 6
salut argyronet,

mon problème c'est que je n'ai pas créer ces ligne de code c'est un collègue qui nous a planté !
et mes connaissance en VBA sont très limité.
je vais essayé de t'expliquer ce que j'aimerais faire peut etre a tu une solution pour moi!
voila: le but et de récuperer des données d'état machine ,les données sont sous format mdb comme tu a pu le voir dans le code , et il faut que je puisse les exploiter sous forme de graph et voir l'état en live des équipements concernées et le tout doit etre archivées chaques jour!
voici la partie ou mon code bloque avec un message d'erreur (erreur de compilation ,membre de méthode ou de données introuvable):

Code :
1
2
3
4
5
6
7
8
Private Sub promess_51_Click()
ActuPromess (152)
ActuPromess (153)
ActuPromess (51)
machine = 51
Me.machine = machine
DoCmd.OpenReport "Graph_promess_qualité", acViewPreview, "", "", acNormal
End Sub
d'avance merci !!!!!!!!!!!!!!!!!
pythfred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 13h15   #4
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
Là, il m'est difficile de te répondre...

Avec ce bout de code, je ne peux déterminer par exemple ce que fait la procédure "ActuPromess"...

Le problème c'est que les arguments sont en dur ce qui fait que si les entités appelées évoluent, tu devras intervenir dans le code.
Tous comme bon nombre de de (pseudo-)développeurs, ton planteur n'a pas su rendre générique son code.

De mon point de vue, le bloc ci-dessus effectue un certain nombre d'opérations sur les éléments (que je ne sais définir) 152, 153 et 51 et que le champ ou la variable (vu c'est codé comme un cochon, on ne peut dire ) "machine" prend la valeur de 51 mais on ne sait pas pourquoi car elle ne semble pas être réutilisée après sauf si, ce que je crains la plus, c'est une variable et qu'elle est dîte publique.

Une fois cela fait, le bloc tente d'ouvrir un état nommé "Graph_promess_qualité" sans aucun critère d'où ma supposition que cet état possède une source de données déjà préparée pour la circonstance.

N'importe comment, tes données sont dans des tables et donc il doit y avoir moyen d'en faire quelque chose pour que tu puisses arriver à tes fins.

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 14h34   #5
Invité régulier
 
Inscription : avril 2008
Messages : 57
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 57
Points : 6
Points : 6
merci pour ton aide argyronet!!!
pythfred est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 16h19   #6
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 210
Points : 6 210
Envoyer un message via MSN à argyronet
Ben, je n'ai pas fait grand chose mais de ton coté, tu risques de galérer un peu. Pour ma part (et à ta place) je remonterais par l'inverse, cad ouvrir l'état en mode création, repérer sa source de données et savoir comme elle a été générée... Recheche alors dans le code, toutes les occurences qui correpondent à telle ou telle requête.

Tu pourras par recoupement repartir à la base et aboutir à tes fins.

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h22.


 
 
 
 
Partenaires

Hébergement Web