Qui sait comment passer un tableau, une structure à une fonction JavaScript via ExceScript?
Bonjour à tous,
Mon programme sous Access affiche des markers sur google.maps dans un objet web (ActiveX) nommé 'wbGeoLoc'.
Les coordonnées sont récupérées via un recordset . Là pas de problème. :D
Puis pour chaque recordset j'appelle une fonction java 'addMarker' dans une fichier html via Document.parentWindow.execScript.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Dim aMarkerInfo(4) As String, sScript as string
Dim vTab as variant
Set rdSet = CurrentDb.OpenRecordset(sSQL)
Do While Not rdSet.EOF = True
aMarkerInfo(0) = rdSet![LatUs]
aMarkerInfo(1) = rdSet![LongUS]
aMarkerInfo(2) = rdSet!name
aMarkerInfo(3) = "H"
If Not (IsNull(aMarkerInfo(0)) Or IsNull(aMarkerInfo(1))) Then
sScript = "oMap.addMarker(" & aMarkerInfo & ");"
Me.wbGeoLoc.Document.parentWindow.execScript sScript, csScriptLanguage
End If
rdSet.MoveNext
Loop |
1ère erreur, affecter à la variable sScript la concaténation d'un texte avec la variable aMarkerInfo . :marteau:
Code:
1 2
| sScript = "oMap.addMarker(" & aMarkerInfo & ");"
Me.wbGeoLoc.Document.parentWindow.execScript sScript, csScriptLanguage |
Pas découragé j'ai alors pensé affecter le tableau à un variant qui prend alors la structure du tableau et qui permet de faire la concaténation puis appeler la fonction java comme suit:
Code:
1 2 3
| vTab = aMarkerInfo
sScript = "oMap.addMarker(" & vTab & ");"
Me.wbGeoLoc.Document.parentWindow.execScript sScript, csScriptLanguage |
Mais là ou ça coince sec c'est que la fonction appelée dans le fichier html "oMap.addMarker" n’interprète pas le tableau passé en paramètre et adieu mes petits markers. :help:
Pour info, dans le fichier html, la fonction addMarker est déclarée comme suit:
Code:
1 2 3 4 5
| oMap.addMarker = function(markerInfo)
{ if (oMap.map)
{ var latlng = new google.maps.LatLng(markerInfo[0],markerInfo[1]);
};
} |
Je vous passe la fonction d'initialisation oMap.init = function() {}. Elle fonctionne parfaitement même si je pense que l'on peut optimiser l'algo. :ccool:
Merci pour votre aide car je veux éviter le passage fastidieux et à rallonge de tous les paramètres déclarés un à un avec ces fameux triple coma de part et d'autre pour les chaines de caractères.:furieux:
Code:
sScript = "oMap.addMarker(" & psLat & "," & psLong & "," & """" & PrepareTextToMap(psLib) & """" & "," & """" & psType & """" & ");"
Toutes vos solutions, même les plus folles, pour m'éclairer et me sortir des ténèbres sont les bienvenues.
:merci: