Amélioration d'un script

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 15 janv. 2006 à 13:35
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 15 janv. 2006 à 22:47
Bonjour à tous....

Besoin d'aide pour améliorer le bout de script ci-dessus.
Principe:
A partir d'une base Access (100 mo), je lis celle-ci en VBS,
et mon script VBS va créer un fichier .html

Tout marche !!!
Mais j'aimerais amélioré ce script (performance + nbre de ligne).
Je n'arrive pas à effectuer une boucle indexée.
les mots ci-dessous sont associés
ales,imsa,iqsa,uiqsimsa,tpea
bour,imsb,iqsb,uiqsimsb,tpeb
pneu,imsp,iqsp,uiqsimsp,imtp
chin,imsc,iqsc,uiqsimsc,tpec

partie de script
MaRequete = "SELECT JOBID,RON,AMJ,DATE_FIN,ABORT,PROJECT,CPU,USER,ELAPSE FROM " & MaTable & " ORDER BY AMJ"
'
'JOBID Rs.Fields(0) : var=jobid nom du job
'RON Rs.Fields(1) : var=ron numéro d''identification du jobid
'AMJ Rs.Fields(2) : var=DatDeb date début du jobid sous la forme jj/mm/aaaa hh:mn:ss
'DATE_FIN Rs.Fields(3) : var=DatFin date fin du jobid sous la forme jj/mm/aaaa hh:mn:ss
' Attention: cette cellule n'est parfois pas renseignée
'ABORT Rs.Fields(4) : var=status status peut-être "OK" ou "ABORTED"
'PROJECT Rs.Fields(5) : nom du project du jobid
'CPU Rs.Fields(6) : var=cpu temps cpu du jobid en secondes
'USER Rs.Fields(7) : var=user USER
'ELAPSE Rs.Fields(8) : var=duree Différence de temps début-fin
' Attention: cette cellule n'est parfois pas renseignée

Set Db = CreateObject("ADODB.Connection")
Set Rs = CreateObject("ADODB.Recordset")
Db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & MaBaseJor
Rs.Open MaRequete ,Db

If Rs.Fields(5) = "UIQSIMSA" Then
If Rs.Fields(0) = "IQSLALES" Then
ElseIf Mid(Rs.Fields(0), 1, 7) = "ALESIQS" Then
ElseIf Rs.Fields(7) = "CRZ-GEP7" Then
ElseIf Rs.Fields(0)= "TRANSIQS" Then
Else
If Rs.Fields(2) >= tdstpea_fin Then
niqsa = niqsa + 1
ciqsa = Rs.Fields(6) + ciqsa
eiqsa = Temps + eiqsa
If Rs.Fields(0) = "AL-D-IQS" Then
niqsa = niqsa - 1
iqsa_deb = DateDeb
End If
iqsa_fin = DateFin
If Rs.Fields(0) = "AL-F-IQS" Then
eiqsa = DateDiff("s", iqsa_deb, DateFin)
niqsa = niqsa - 1
End If

lIQSA = "<tr>" & c_jobid & Rs.Fields(0) & c_font & c_ron & Rs.Fields(1) & c_font &_
c_datdeb & Rs.Fields(2) & c_font & c_datfin & DateFin & c_font & c_duree & duree & "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" &_
c_font & c_cpu & cpu & "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" & c_font & c_status & status & c_font & c_user & Rs.Fields(7) & c_font & "<tr>"
If status = "ok" Then
lIQSA = Replace(lIQSA, """><", blanc & """><")
wIQSA = wIQSA & lIQSA
Else
lIQSA = Replace(lIQSA, """><", jaune & """><")
wIQSA = wIQSA & lIQSA
End If
End If
End If
End If
If Rs.Fields(5) = "UIQSIMSB" Then
If Rs.Fields(0) = "IQSLBOUR" Then
ElseIf Mid(Rs.Fields(0), 1, 7) = "BOURIQS" Then
ElseIf Rs.Fields(7) = "CRZ-GEP7" Then
ElseIf Rs.Fields(0)= "TRANSIQS" Then
Else
If Rs.Fields(2) >= tdstpeb_fin Then
niqsb = niqsb + 1
ciqsb = Rs.Fields(6) + ciqsb
eiqsb = Temps + eiqsb
If Rs.Fields(0) = "BG-D-IQS" Then
niqsb = niqsb - 1
iqsb_deb = DateDeb
End If
iqsb_fin = DateFin
If Rs.Fields(0) = "BG-F-IQS" Then
eiqsb = DateDiff("s", iqsb_deb, DateFin)
niqsb = niqsb - 1
End If

lIQSB = "<tr>" & c_jobid & Rs.Fields(0) & c_font & c_ron & Rs.Fields(1) & c_font &_
c_datdeb & Rs.Fields(2) & c_font & c_datfin & DateFin & c_font & c_duree & duree & "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" &_
c_font & c_cpu & cpu & "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" & c_font & c_status & status & c_font & c_user & Rs.Fields(7) & c_font & "<tr>"
If status = "ok" Then
lIQSB = Replace(lIQSB, """><", blanc & """><")
wIQSB = wIQSB & lIQSB
Else
lIQSB = Replace(lIQSB, """><", jaune & """><")
wIQSB = wIQSB & lIQSB
End If
End If
End If
End If
If Rs.Fields(5) = "UIQSIMSP" Then
If Rs.Fields(0) = "IQSLPNEU" Then
ElseIf Mid(Rs.Fields(0), 1, 7) = "PNEUIQS" Then
ElseIf Rs.Fields(7) = "CRZ-GEP7" Then
ElseIf Rs.Fields(0)= "TRANSIQS" Then
Else
If Rs.Fields(2) >= tdsimtp_fin Then
niqsp = niqsp + 1
ciqsp = Rs.Fields(6) + ciqsp
eiqsp = Temps + eiqsp
If Rs.Fields(0) = "LP-D-IQS" Then
niqsp = niqsp - 1
iqsp_deb = DateDeb
End If
iqsp_fin = DateFin
If Rs.Fields(0) = "LP-F-IQS" Then
eiqsp = DateDiff("s", iqsp_deb, DateFin)
niqsp = niqsp - 1
End If

lIQSP = "<tr>" & c_jobid & Rs.Fields(0) & c_font & c_ron & Rs.Fields(1) & c_font &_
c_datdeb & Rs.Fields(2) & c_font & c_datfin & DateFin & c_font & c_duree & duree & "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" &_
c_font & c_cpu & cpu & "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" & c_font & c_status & status & c_font & c_user & Rs.Fields(7) & c_font & "<tr>"
If status = "ok" Then
lIQSP = Replace(lIQSP, """><", blanc & """><")
wIQSP = wIQSP & lIQSP
Else
lIQSP = Replace(lIQSP, """><", jaune & """><")
wIQSP = wIQSP & lIQSP
End If
End If
End If
End If


End if
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Je remercie par avance ceux(celles) qui ont eu la patience de lire et de déchiffrer ce bout de script.
Mon but est de simplifier (!!!!) ce code si je rajoute une usine.
usine = Array("ALES", "BOUR", "PNEU", "CHIN")
tds = Array("TPEA", "TPEB", "IMTP", "CHIN")
proj_iqs = Array("UIQSIMSA", "UIQSIMSB", "UIQSIMSP", "UIQSIMSC"

et là, je bloque et débloque !!!!!!!

merci.
jean-marc

3 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 25
15 janv. 2006 à 21:55
Euh ... et si tu nous disais déjà à quoi çà sert ... on pourrait peut-être comprendre plus facilement ce code et tenter de l'améliorer.
Tu as visiblement pris un malin plaisir à brouiller les pistes avec tous ces noms de variables tordus.




Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
15 janv. 2006 à 22:31
Bonsoir,

Exemple plus simple
A partir de ma mbd, je récupère le temps elapse d'un job

Ici eiqsb ou eiqsa ou eiqsp effectue le même calcul.
J'aimerais optimisé via array et boucle, mais laquelle et comment ?????

'Conversion du contenu du temps elapse pour PNEU eiqsp

hh = eiqsp / 3600
mn = (hh - Int(hh)) * 60
sc = (mn - Int(mn)) * 60
hh = Int(hh) If Len(hh) 1 Then hh "0" & hh
mn = Int(mn) If Len(mn) 1 Then mn "0" & mn
sc = Int(sc) If Len(sc) 1 Then sc "0" & sc
eiqsp = hh & "h " & mn & "' " & sc & """" If Mid(eiqsp, 1, 3) "00h" Then eiqsp Mid(eiqsp, 5, 7) If Mid(eiqsp, 1, 2) "00" Then eiqsp Mid(eiqsp, 5, 3)

'Conversion du contenu du temps cpu pour PNEU eiqsp
hh = ciqsp / 3600
mn = (hh - Int(hh)) * 60
sc = (mn - Int(mn)) * 60
hh = Int(hh) If Len(hh) 1 Then hh "0" & hh
mn = Int(mn) If Len(mn) 1 Then mn "0" & mn
sc = Int(sc) If Len(sc) 1 Then sc "0" & sc
ciqsp = hh & "h " & mn & "' " & sc & """" If Mid(ciqsp, 1, 3) "00h" Then ciqsp Mid(ciqsp, 5, 7) If Mid(ciqsp, 1, 2) "00" Then ciqsp Mid(ciqsp, 5, 3)
------------------------------------------------------------------------------------------

'Conversion du contenu du temps elapse pour ALES eiqsa
hh = eiqsa / 3600
mn = (hh - Int(hh)) * 60
sc = (mn - Int(mn)) * 60
hh = Int(hh) If Len(hh) 1 Then hh "0" & hh
mn = Int(mn) If Len(mn) 1 Then mn "0" & mn
sc = Int(sc) If Len(sc) 1 Then sc "0" & sc
eiqsa = hh & "h " & mn & "' " & sc & """" If Mid(eiqsa, 1, 3) "00h" Then eiqsa Mid(eiqsa, 5, 7) If Mid(eiqsa, 1, 2) "00" Then eiqsa Mid(eiqsa, 5, 3)

'Conversion du contenu du temps cpu pour ALES eiqsa
hh = ciqsa / 3600
mn = (hh - Int(hh)) * 60
sc = (mn - Int(mn)) * 60
hh = Int(hh) If Len(hh) 1 Then hh "0" & hh
mn = Int(mn) If Len(mn) 1 Then mn "0" & mn
sc = Int(sc) If Len(sc) 1 Then sc "0" & sc
ciqsa = hh & "h " & mn & "' " & sc & """" If Mid(ciqsa, 1, 3) "00h" Then ciqsa Mid(ciqsa, 5, 7) If Mid(ciqsa, 1, 2) "00" Then ciqsa Mid(ciqsa, 5, 3)
---------------------------------------------------------------------------------------

'Conversion du contenu du temps elapse pour BOUR eiqsb
hh = eiqsb / 3600
mn = (hh - Int(hh)) * 60
sc = (mn - Int(mn)) * 60
hh = Int(hh) If Len(hh) 1 Then hh "0" & hh
mn = Int(mn) If Len(mn) 1 Then mn "0" & mn
sc = Int(sc) If Len(sc) 1 Then sc "0" & sc
eiqsb = hh & "h " & mn & "' " & sc & """" If Mid(eiqsb, 1, 3) "00h" Then eiqsb Mid(eiqsb, 5, 7) If Mid(eiqsb, 1, 2) "00" Then eiqsb Mid(eiqsb, 5, 3)

'Conversion du contenu du temps cpu pour BOUR eiqsb
hh = ciqsb / 3600
mn = (hh - Int(hh)) * 60
sc = (mn - Int(mn)) * 60
hh = Int(hh) If Len(hh) 1 Then hh "0" & hh
mn = Int(mn) If Len(mn) 1 Then mn "0" & mn
sc = Int(sc) If Len(sc) 1 Then sc "0" & sc
ciqsb = hh & "h " & mn & "' " & sc & """" If Mid(ciqsb, 1, 3) "00h" Then ciqsb Mid(ciqsb, 5, 7) If Mid(ciqsb, 1, 2) "00" Then ciqsb Mid(ciqsb, 5, 3)
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
15 janv. 2006 à 22:47
Bonsoir,

Il faut peut-être utilisé "Sub" et "Call", je cherche ............
0
Rejoignez-nous