Pb d'affichage Innerhtml aléatoire

NaooeK Messages postés 4 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 21 septembre 2012 - 15 sept. 2012 à 09:30
NaooeK Messages postés 4 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 21 septembre 2012 - 21 sept. 2012 à 08:10
Bonjour à tous,

Je m'arrache les cheveux sur le problème suivant :

J'ai développé un programme de requête dans l'active Directory en "Html Application" dans lequel je code tout en vbs.

Donc mes fonctions vbs commandent des requêtes diverses dans l'AD, je récupère les résultats et les affiche sur ma page.

J'utilise donc le mécanisme suivant

dans mon body:







dans mon script: je fais mes requêtes puis construis des tableaux dans des variables que je pousse ensuite dans mes div de cette manière

document.getElementById("Div3").innerHTML = Var1

Mon problème est que de manière aléatoire le script fait son boulot, mais l'affichage ne change pas, si je glisse ma souris aux endroits ou devraient apparaître des boutons par exemple, j'ai le title du bouton qui s'affiche et il fonctionne. Donc ma page est bien là, elle est construite comme il faut mais elle n’apparaît pas.

Ensuite si je bouge la molette de la souris ou bien si je double clique sur la page, elle s'affiche.

Et le problème c'est que c'est aléatoire.

D'ou cela peut il venir à votre avis.

NaooeK

2 réponses

cs_hackoo Messages postés 91 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 29 juillet 2013
21 sept. 2012 à 01:46
Salut !
Pouvez-vous poster le code du HTA complet ?
Merci !
0
NaooeK Messages postés 4 Date d'inscription mercredi 28 juin 2006 Statut Membre Dernière intervention 21 septembre 2012
21 sept. 2012 à 08:10
Bonjour,

Merci de votre aide, le code fait environ 3000 lignes (c'est d'ailleurs peut-être la cause)
En voici une partie fonctionnelle (sur mon infra) qui reprend le fonctionnement que j'utilise systématiquement pour construire mes tableaux puis les afficher:

Peut-être que je peux vous le transmettre en message privé car ce code comporte beaucoup d'informations concernant mon entreprise?

Merci de votre aide

<html>
<head>
<meta http-equiv= "Content-Type" content="text/html; charset=windows-1252">
<title>ADSearch</title>

 

<!-- CSS -->
<link rel="stylesheet" type="text/css" href="bin/css/ADS_Style.css">

<script type="text/javascript">
function FocusOnInput()
{
     document.getElementById("inputRecherche").focus();
}
</script>

<script language="vbscript">
Dim sNTDomain, sRootUserOU, acctLocked, acctdisable, sAgreed
Set objShell = CreateObject("WScript.Shell")

Const strDomainPath = "dc=Domsyn,dc=fr"
Const Path = "\\domsyn.fr\dfs\Communs\Tous\ADSearch\ADSearch_Dev"
Const ForReading 1, ForWriting 2, ForAppending = 8
AppData = objShell.ExpandEnvironmentStrings("%APPDATA%") & "\ADSearch"
Set filesys = CreateObject("Scripting.FileSystemObject")
if not filesys.FolderExists(AppData) then filesys.CreateFolder (AppData)
on error resume next
sAgreed = objShell.RegRead("HKCU\Software\ADSearch\License")
on error goto 0

Sub window_OnLoad()
End Sub


'#################################################################################################################################################
' SUB RECHERCHE
'#################################################################################################################################################
Sub Recherche

if len(trim(struserid.value)) = 0 then exit sub
Const ADS_UF_ACCOUNTDISABLE = &H02
Const E_ADS_BAD_PATHNAME= &h80005000

datej = Now

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOOBject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("DefaultNamingContext")
'###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################"'
' RECHERCHE UTILISATEURS
'###########################################################################################################################################################################################################################################################################################################################################################################################################################################################################################"'
acctdisable = "Activé"
acctlocked = "Non verrouillé"

if struserid.value = "*" then
strQuery = "SELECT sAMAccountName,sn,givenName,distinguishedname,userAccountControl,cn,title FROM 'LDAP://OU=Agences,OU=_RACINE,dc=domsyn,dc=fr' WHERE objectCategory='user'"
else
strFilter = "(&(objectCategory=person)(objectClass=user) (|(sAMAccountName=*" & struserid.value & "*) (displayName=*" & struserid.value & "*)))"
strQuery = "<LDAP://" & strDNSDomain & ">;" & strFilter & ";sAMAccountName,sn,givenName,distinguishedname,userAccountControl,cn,title"
end if
  
objCommand.CommandText = strQuery
objCommand.Properties("Page Size") = 750
objCommand.Properties("Timeout") = 60
objCommand.Properties("Cache Results") = False

Set objRecordset = objCommand.execute
x = 0
Tableau_User = "\" & _
\"----
 Nom  |Nom complet |Fonction |Site |Etat |Date d'expiration |\"

Do Until objRecordset.EOF
affiche  = \"oui\"
filtre_on =  \"aucun\"
strDN = objrecordset.fields(\"distinguishedName\")
intFlag = objRecordSet.Fields(\"userAccountControl\")
lngFlag = objRecordSet.Fields(\"userAccountControl\")
Tampon = Split(strDN,\",\",2)
UserOuName = (Tampon(1))
OUdn = \"LDAP://\" & UserOuName
Tampon1 = Split(strDN,\",\",2)
Tampon2 = Split(Tampon1(1),\"=\",2)
Tampon3 = Split(Tampon2(1),\",\",2)
Txt_OU = Tampon3(0)
Txt_useridcolor = objRecordSet.Fields(\"SamAccountName\")
Txt_userid = objRecordSet.Fields(\"SamAccountName\")
Txt_fullname = objRecordset.Fields(\"cn\")
Txt_Title = objRecordset.Fields(\"title\")
Set objUser = GetObject(\"LDAP://\" & strDN & \"\")
intUAC = objUser.Get(\"UserAccountControl\")
acctdisable = \"Activé\"
If (intFlag And ADS_UF_ACCOUNTDISABLE) <> 0 Then
acctdisable = \"Désactivé\"
End If
Txt_expire = left(objUser.AccountExpirationDate,10)
datee = CDate(Txt_expire)if Txt_expire \"01/01/1970\" or Txt_expire \"01/01/1601\" thenif acctdisable \"Désactivé\" then Txt_Expire \"\"if acctdisable \"Activé\" then Txt_Expire \"Jamais\"
else
if DateValue(Datej) < DateValue(datee) Then Txt_expire = \"\" & Txt_expire & \"\"
if DateValue(Datej) > DateValue(datee) Then
Txt_expire = \"\" & Txt_expire & \"\"
if acctdisable = \"Activé\" then
Txt_useridcolor = \"\" & Txt_useridcolor & \"\"
filtre_on = \"actifexpire_on\"
end if
end if
end if
if filtre.value = \"actifexpire\" thenif not filtre_on \"actifexpire_on\" then affiche \"non\"
end if
if filtre.value = \"actif\" thenif acctdisable \"Désactivé\" then affiche \"non\"
end if
if filtre.value = \"inactif\" thenif acctdisable \"Activé\" then affiche \"non\"
end if

if x Mod 2 = 0 then
classpi = \" class=\"\"odd\"\"\"
else
classpi = \"\"
end if

if affiche = \"oui\" then
Tableau_User = Tableau_User & \"----
" & Txt_useridcolor & ", " & objRecordSet.Fields("cn") & ", " & Txt_Title & ", " & Txt_OU & ", " & acctdisable & ", " & Txt_expire & ", \"
x=x+1
end if
objRecordset.MoveNext
Loop
If x = 0 Then
Tableau_User = \"\"
Else
Tableau_User = Tableau_User & "<caption>  " & x & " utilisateur(s) </caption>
"
End If

'#################################################################################################################################################
' RECHERCHE RESULTAT
'#################################################################################################################################################
document.getElementById("Infos").innerHTML  = ""
document.getElementById("Titre").innerHTML =  Tableau_User
document.getElementById("Listes").innerHTML = ""
End Sub

'#################################################################################################################################################
' BODY
'#################################################################################################################################################
</script>
</head>




,

<script type="text/javascript">
document.getElementById('inputRecherche').onkeypress = function(ev) {
ev = ev || window.event;
if (ev.keyCode==13)
Recherche();
};
</script>

<select style="border-width: 0px;" name="filtre"><option value="aucun">Filtre...</option><option value="actifexpire">Comptes actifs et expirés</option><option value="actif">Comptes actifs</option><option value="inactif">Comptes inactifs</option></select>





















<script language="vbscript">
######################################"'
' IDENTIFICATION DE L'UTILISATEUR CONNECTE A ADSEARCH ET DEFINITION DU NIVEAU DE SECURITE
'#################################################################################################################################################

on error resume next
Set WshNet = CreateObject("WScript.Network") 
Host = WshNet.ComputerName
ADS_User = WshNet.Username 
Set objADSysInfo = CreateObject("ADSystemInfo")
ADS_strUserDN = objADSysInfo.username
Set objUser = Getobject("LDAP://" & ADS_strUserDN)
Nom = objUser.Get("name")
Prenom = objUser.Get("givenName")
Initiales = left(Prenom, 1) & left(Nom, 1)
if not Prenom = "" then
Qui = Prenom
Else
Qui = ADS_User
End If

objmemberOf  = objUser.GetEx("memberOf")
n=0
For Each objGroup in objmemberOf 
if objGroup = "CN=ADSearch_N1,OU=_Groupes Multi-sites,OU=_RACINE,DC=domsyn,DC=fr" then n=n+1
if objGroup = "CN=ADSearch_N2,OU=_Groupes Multi-sites,OU=_RACINE,DC=domsyn,DC=fr" then n=n+2
if objGroup = "CN=ADSearch_N3,OU=_Groupes Multi-sites,OU=_RACINE,DC=domsyn,DC=fr" then n=n+4
if objGroup = "CN=ADSearch_N4,OU=_Groupes Multi-sites,OU=_RACINE,DC=domsyn,DC=fr" then n=n+8
if objGroup = "CN=ADSearch_N5,OU=_Groupes Multi-sites,OU=_RACINE,DC=domsyn,DC=fr" then n=n+16
Next
if n=0 then
document.getElementById("status_bar").innerHTML = "\" & _
\"" & _
"    " & _
"
"
document.getElementById("spnStatusDomain").innerHTML = "Bienvenue sur ADSearch"
msgbox "Bonjour " & Prenom & ", vous n'êtes pas autorisé(e) à utiliser cette application. Veuillez contacter votre administrateur"
else
if  n=>1 then Niveau = 1
if  n=>2 then Niveau = 2
if  n=>4 then Niveau = 3
if  n=>8 then Niveau = 4
if  n=>16 then Niveau = 5
if Niveau > 1 then
MySQLDir = "C:\Program Files (x86)\MySQL"
if not filesys.FolderExists(MySQLDir) then
if left(Host, 5) = "APPLI" then
msgbox "Il manque un produit sur votre session, occasionnant un fonctionnement de ADSearch en mode dégradé. Veuillez contacter voitre administrateur en cas de besoin"
else
msgbox "Pour utiliser ADSearch, vous devez installer un connecteur ODBC Mysql." & Chr(13) & Chr(13) & "Cliquez sur OK pour débuter l'installation", VbInformation, "Attention"
objShell.run Path & "\bin\sources\mysql.msi"
end if
end if
document.getElementById("BoutonNiveau").innerHTML = ""
document.getElementById("spnStatusDomain").innerHTML = "Bonjour  " & Qui & ",  bienvenue sur ADSearch. "
else
document.getElementById("spnStatusDomain").innerHTML  = ""
document.getElementById("status_bar").innerHTML = ""
Call GetOu(replace(ADS_strUserDN,"'","&apos;") & "~FicheUtilisateur")
end if
end if
</script>

</html>
0
Rejoignez-nous