Creare il file di testo per il portale Alloggiati Web

Finalmente è iniziata la stagione estiva e i turisti iniziano ad arrivare. Per una struttura alberghiera è obbligatorio registrare le generalità delle persone alloggiate e comunicarle entro le 24 ore alla Questura.

La registrazione delle generalità avviene attraverso il portale Alloggiati Web

Molte piccole strutture alberghiere hanno creato un programma basato su Microsoft Access per gestire i clienti, i preventivi, le fatture e i vari servizi.

Quando il cliente arriva in hotel deve essere registrato. Poi devo accedere nel portale Alloggiati Web e inserire nuovamente i dati. Doppio lavoro!

Turista da registrare in Alloggiatiweb - Office online
In Access è possibile creare un file di testo contenente tutti i dati degli ospiti arrivati nella giornata. Poi questo file sarà importato in automatico nel portale Alloggiati Web. Con grande risparmio di tempo!

Utilizziamo VBA per creare il file per Alloggiati Web

E’ necessario scaricare i seguenti 4 file in formato CSV:

I quattro file devono essere importati in quattro tabelle di Access.

Il tracciato messo a disposizione dal portale Alloggiati Web ci aiuta a capire come creare il file di testo contenente i dati dei nostri clienti.

La nostra tabella, utilizzata per registrare i dati dei clienti (in questo esempio la tabella si chiama Ospiti) deve contenere tutti i campi presenti nel tracciato della Questura. Se manca qualche campo allora è necessario aggiungerlo. E’ necessario creare delle caselle combinate collegate con le quattro tabelle precedentemente create.

Le caselle combinate permettono di utilizzare i codici presenti nelle quattro tabelle.

E’ utile creare una maschera che permette di scegliere la data di arrivo. Poi un pulsante crea il file di testo contenente tutti i dati.

Office Online - Database Alloggiati Web

Al pulsante è associato del codice VBA e le istruzioni sono molto semplici. Per conoscere tutto su VBA segui il mio corso online su VBA per Access.

Vediamo un estratto del codice.

Dim NomeFile, Riga, DataFile As String

Dim rs1 As DAO.Recordset

Dim NrRighe, i As Integer

DoCmd.SetWarnings False

‘estrai i dati dei clienti dalla tabella Ospiti

DoCmd.OpenQuery “EstraiOspite”, acNormal, acEdit

‘i dati vengono salvati nella tabella temporanea TempAlloggiatiWeb

‘controllo se la tabella è vuota

NrRighe = DCount(“*”, “TempAlloggiatiWeb”)

If (NrRighe > 0) Then

‘MsgBox “Ci sono record”

Else

VisualizzaMessaggio “Non ci sono nominativi”

GoTo Fine

End If

 

Set rs1 = CurrentDb.OpenRecordset(“TempAlloggiatiWeb”, dbOpenTable)

rs1.MoveFirst

‘me.DataArrivo è il campo presente nella maschera

DataFile = Replace(Me. DataArrivo, “/”, “-“)

‘creo il nome del file con la data di arrivo

NomeFile = “C:\gestione alloggiatiweb\alloggiati-” & DataFile & “.txt”

Open NomeFile For Output As #1

i = 0

Do While Not rs1.EOF

i = i + 1

Riga = rs1.Fields(“TipoAlloggiato”)

Riga = Riga + rs1.Fields(“DataArrivo”)

‘l’istruzione Space aggiunge dei caratteri vuoti come richiesto dal tracciato della Questura

Riga = Riga + Space(2 – Len(rs1.Fields(“NrGiorni”))) + rs1.Fields(“NrGiorni”)

Riga = Riga + rs1.Fields(“Cognome”) + Space(50 – Len(rs1.Fields(“Cognome”)))

Riga = Riga + rs1.Fields(“Nome”) + Space(30 – Len(rs1.Fields(“Nome”)))

Riga = Riga + rs1.Fields(“Sesso”)

Riga = Riga + rs1.Fields(“DataNascita”)

If Not IsNull(rs1.Fields(“ComuneNascita”)) Then

Riga = Riga + rs1.Fields(“ComuneNascita”)

Else

‘è straniero

Riga = Riga + Space(9)

End If

……..

‘inserire le istruzioni per aggiungere i dati richiesti dal tracciato 

……..

‘alla fine aggiunge Carriage return e Line feed tranne ultima riga

If i <> NrRighe Then

Print #1, Riga

Else

Print #1, Riga;

End If

rs1.MoveNext

Loop

Close #1

rs1.Close

Set rs1 = Nothing

msgbox “File creato correttamente in C:\gestione alloggiatiweb\alloggiati-” & DataFile & “.txt”

E il gioco è fatto !

Le istruzioni sono molto semplici se si ha una conoscenza base di VBA. Se vuoi migliorare le tue conoscenze segui il mio corso su Microsoft Access VBA

Hai provato le mie istruzioni ? Fammi sapere com’è andata nei commenti.