Microsoft Access e Google Maps – Video 2

Access e GoogleMaps

Nel nostro secondo video del corso su come creare un database che ci aiuti a elaborare Business Intelligence sulla logistica impariamo a visualizzare su Google Maps un indirizzo memorizzato nel nostro database. Certamente, perché Microsoft Access e Google Maps possono lavorare insieme!  (Chi avesse perso il video 1, può leggere qui il post dove può anche vedere il relativo video).

La maschera GestioneStabilimento ha due pulsanti, che interagiscono con Google Maps. Il primo pulsante consente di localizzare il nostro stabilimento sulla mappa. Un po’ come se andassimo su Google Maps e digitassimo a mano l’indirizzo. E invece lo fa un nostro pulsante in Access!!

Vediamo il codice del primo pulsante. In primo luogo creiamo alcune variabili (le DIMensioniamo, cioè destiniamo uno spazio di memoria ai valori che dovranno contenere).

Dim strLinkURL As String ' indirizzo da visualizzare in Google Maps
Dim strPath As String ' indirizzo della pagina di Google Maps
Dim strAddr() As String ' variabile array
Dim i As Integer ' contatore

La variabile strAddr è diversa dalle altre. Lo si capisce dalle () finali. E’ una variabile array, che contiene più elementi al suo interno. Normalmente una variabile può avere un solo valore. In questo caso, invece, ci sarà utile per manipolare una stringa di testo, quella che contiene l’indirizzo del nostro stabilimento.

' indirizzo di Google Maps
strPath = "http://maps.google.com/maps?"

Qui assegno alla variabile l’indirizzo della pagina di Google Maps. Il punto interrogativo che c’è al fondo segnala che a seguire ci saranno i parametri che Google Maps interpreta per restituire la mappa che vogliamo. Provate a cercare un indirizzo in Google Maps e poi verificate come diventa l’indirizzo http.

' indirizzo da localizzare
strLinkURL = Me.cboToponimoStabilimento & " " & Me.txtIndirizzoStabilimento & " " & _
 Me.txtNumCivicoStabilimento & " " & Me.txtComuneStabilimento & " " & _
 Me.txtCAPStabilimento & " " & Me.txtProvStabilimento & " " & _
 Me.txtNazioneStabilimento

Qui si tratta solo di concatenare pazientemente tutti i controlli che costituiscono l’indirizzo del nostro stabilimento, che vogliamo localizzare in Google Maps. Perché l’istruzione non diventi illeggibile (=troppo lunga), è opportuno aggiungere  & seguita da underscore, in modo tale da poter andare a capo. Solitamente quando vado a capo in VBA significa che l’istruzione è terminata. Se però a fine riga c’è & _, VBA lo interpreta come un’istruzione che si sviluppa su più righe.

' assegno alla variabile array l'indirizzo
 strAddr = Split(strLinkURL, " ", , vbTextCompare)

La funzione VBA Split mette una stringa alla volta al’interno della variabile strAddr usando come delimitatore lo spazio. Immaginate la variabile array come una tabella con tante righe quante sono le parole contenute in strLinkURL, qualcosa come:

0 corso
1 Allamano
2 15
3 Torino
4 10100

e così via. Questo ottengo con la funzione Split (che al secondo argomento, infatti, ha il delimitatore, per noi lo spazio).

strLinkURL = ""
For i = LBound(strAddr()) To UBound(strAddr())
 strLinkURL = strLinkURL & strAddr(i) & "+"
Next i

Ora con un ciclo  For … Next, finché ci sono valori all’interno dell’array strAddr (LBound individua il limite inferiore dell’array e UBound il limite superiore) concateno a strLinkURL uno per volta i valori dell’array a cui aggiungo  il segno +. In pratica, la prima volta strLinkURL è corso +; la seconda volta è corso+Allamano+; la terza volta è corso+Allamano+15+  e così’ via.

 

' tolgo il + finale
strLinkURL = Left(strLinkURL, Len(strLinkURL) - 1)

Tolgo il + finale, che è stato concatenato con l’ultimo ciclo. Per farlo prendo da sinistra tanti caratteri dalla variabile strLinkURL quanto è lunga la variabile meno 1.

Me.cmdVisualizzaMappa.HyperlinkAddress = strPath & "q=" & strLinkURL

Assegno alla proprietà HyperlinkAddress del pulsante di comando l’indirizzo completo. Nota che ho concatenato q=. Q è il parametro che sta per “query”. Google Maps deve cercare l’indirizzo che segue il segno di uguale.

https://www.google.com/maps?q=corso+Allamano+15+Torino+10100+TO+Italia

Il secondo pulsante sulla nostra maschera ha quasi lo stesso codice. Cambia solamente ciò che passo a Google Maps. Questa volta non c’è il parametro q, ma saddr e daddr, ossia l’indirizzo di partenza (start address) e l’indirizzo di destinazione (destination address).  Nel video l’indirizzo di partenza è scritto nel codice e non cambia mai. Naturalmente potrebbe derivare da una tabella, o da una variabile o essere richiesto in fase di runtime, ossia nel momento in cui si preme il pulsante.

https://www.google.com/maps?saddr=via+Roma+1+10100+Torino+Italia+&daddr=corso+Allamano+15+Torino+10100+TO+Italia