SMSLibX

SMS per l'ufficio / SMS per sviluppatori software

 

 

SMS software for GSM modem/phones SMS Tutorials >

Inviare SMS da database Access

Questo tutorial illustra come inviare e ricevere SMS dalla tabelle di un database Access, utilizzando SMSLibX (libreria DLL ActiveX) e un modem o telefono GSM.

Indice

  1. Come iniziare
  2. Utilizzare il database SMS di esempio
    • Struttura del database
    • Inviare e ricevere SMS
    • Estendere il database di esempio
  3. Costruire il proprio database SMS
    • Integrazione su Access di SMSLibX.dll
    • Inviare e ricevere SMS da VBA
  4. Best practices per sviluppatori VBA
    • MsgBox si mangia i vostri messaggi!
    • Utilizzo di DoEvents nei cicli
    • Eventi ed operazioni time-consuming
  5. Risoluzione dei problemi

1. Come iniziare

  1. Scarica ed installa SMSLibX sul tuo PC.
  2. Scarica ed installa il database SMS di esempio.
  3. Installa e connetti al PC il modem o telefono GSM.
    Se non disponi di un dispositivo GSM compatibile, puoi utilizzare la modalità di simulazione.

Note preliminari :

  • Chiunque può utilizzare questo esempio.
    Non sono richieste conoscenze di programmazione Access o VBA,
    a meno di voler modificare il database di esempio, o costruirne uno proprio.
  • L'ambiente di riferimento è MS Access 2000.
    L'esempio è compatibile anche con le versioni successive di MS Access.

 

2. Utilizzare il database SMS di esempio

SMS da tabelle database Access

 

2.1  Struttura del database

Le tabelle più importanti del database sono TPhonebook (rubrica) e TMessages (contenente tutti i messaggi SMS classificati tramite il campo MessageStatus).

Le seguenti queries (semplici filtri su TMessages) possono essere utilizzate come se fossero normali tabelle:

Database Query

Filtra TMessages su... Contiene...
QMessagesSent MessageStatus="Sent" Messaggi inviati
QMessagesReceived MessageStatus="Received" Messaggi ricevuti
QUnread Unread=true Messaggi non letti
QMessagesOutbox MessageStatus="TO SEND" (or null) Messaggi da inviare

 

2.2  Inviare e ricevere SMS

  • Per configurare il vostro sistema:
    • Selezionare il tipo modem (Modem type) e la porta (Port) appropriati,
      quindi fare click su Connect.
  • Per inviare SMS dalla maschera:
    • Inserire il numero di telefono e il testo del messaggio, quindi fare click su Send SMS.
    • Per inviare SMS multipli, selezionare più destinatari dalla lista Phonebook,
      oppure inserire nella casella Phone Number più numeri separati da ; (punto e virgola).
  • Per inviare SMS da una tabella:
    • Inserire i messaggi nella query QMessagesOutbox, o nella tabella TMessages.
      Per ciascun messaggio, impostare il campo MessageStatus = "TO SEND" o null.
    • Fare click sul bottone Send from Outbox.
  • Per ricevere SMS in una tabella:
    • Gli SMS ricevuti vengono automaticamente inseriti nella tabella TMessages, quindi mostrati nella lista messaggi. Se ciò non dovesse accadere, abilitare l'opzione di polling SMS nella sezione Receive SMS.

 

I telefoni Nokia e Symbian più recenti non permettono la lettura degli SMS ricevuti su PC tramite comandi AT (la tecnologia che utilizza il nostro software).
Con questi dispositivi sarà possibile inviare ma non ricevere SMS da PC, a meno di utilizzare il software originale fornito dal costruttore.

 

Per vedere il codice sorgente VBA utilizzato per inviare/ricevere SMS, cliccare sul menu Strumenti > Macro > Visual Basic editor. Nel prossimo capitolo imparerete come inviare/ricevere SMS da VBA.

 

2.3  Estendere il database di esempio

Il database di esempio e relativo codice sorgente VBA possono essere estesi ed utilizzati liberamente, come parte delle vostre applicazioni.

E' possibile ad esempio:

  • Estendere il codice VBA inserendo automatismi quali:
    invio SMS periodico, SMS di risposta automatica, import/export dati, aggiornamento altri database ecc.
  • Inserire gli SMS da inviare nella tabella TMessages tramite applicazioni esterne
    (ad es. da Visual Basic, C# o C++ tramite ADO, o da siti web ASP o JSP, oppure da altri database Access o SQL Server, creando un link alla tabella TMessages)
  • Leggere gli SMS ricevuti dalla tabella TMessages tramite applicazioni esterne
    (idem come sopra)

SMS&Co declina ogni responsibilità su possibili conseguenze associate all'uso di questo esempio e/o del proprio software SMS.

 

3. Costruire il proprio database SMS

Questa sezione è dedicata agli sviluppatori Access/VBA.
Impareremo come:

  1. Integrare SMSLibX nell'ambiente di sviluppo Access e nel codice VBA;
  2. Usare oggetti e metodi di SMSLibX nel codice VBA per inviare e ricevere SMS.

 

3.1  Integrazione su Access di SMSLibX.dll

  1. Creare un nuovo database Access (o aprirne uno esistente).
  2. Aprire o creare una nuova maschera (form) o modulo di classe, quindi passare alla visualizzazione del codice (menu Strumenti > Macro > Visual Basic editor).
    Sconsigliamo di integrare SMSLibX su comuni moduli di codice (.bas in VB6), in quanto questi ultimi non sono in grado di catturare gli eventi generati da SMSLibX (e da qualsiasi componente COM).
  3. Impostare un riferimento a SMSLibX.dll (menu Strumenti > Riferimenti).
    Se SMSLibX non è presente nella lista, localizzarlo tramite il pulsante Sfoglia.
    SMSLibX dev'essere già installato sul vostro sistema.

Ora siete pronti ad utilizzare oggetti e metodi esposti da SMSLibX nel vostro codice sorgente:

  • Per scorrere oggetti e metodi esposti da SMSLibX, aprire il Visualizzatore Oggetti (F2) e selezionare la libreria SMSLibX.
  • Per ottenere l'help contestuale, selezionare un membro di SMSLibX e premere F1.
  • Per ottenere il completamento automatico del codice, utilizzare Ctrl+SPACE, Ctrl+J ecc.

 

Per apprendere in 5 minuti le basi di programmazione di SMSLibX,
vi invitiamo a leggere la Quick Start Guide presente nell'Help di SMSLibX.

 

3.2  Inviare e ricevere SMS da VBA

Il seguente codice sorgente VBA può essere utilizzato all'interno di una form Access o modulo di classe, per l'invio e la ricezione di SMS.

' Declare SMSModem object
Public WithEvents Modem As SMSModem


' Send SMS
Private Sub cmdSendMessage_Click()
	
  ' Open modem communication
  Set Modem = New SMSModem
  Modem.LogTrace = True
  Modem.OpenComm gsmModemSimulator, 3, , smsNotifyAll
	
  ' Send message
  Call Modem.SendTextMessage("+393401234567", "Hello world")


End Sub


' Receive SMS by event
Private Sub Modem_MessageReceived(Message As SMSLibX.SMSDeliver)
  MsgBox "New message received from " & Message.Originator & ":" _
    & vbCrLf & vbCrLf & Message.Body, _
    vbInformation, "New message received"
End Sub
          

 

Osservazioni:

  • SMSModem è l'oggetto più importante della libreria SMSLibX.
  • La clausola WithEvents consente di catturare gli eventi generati da SMSModem.
  • Nella chiamata a OpenComm, dovete sostituire il parametro gsmModemSimulator
    con quello relativo al vostro modem (ad es. gsmModemSiemens, gsmModemNokia,...) eventualmente sfruttando l'auto-completamento del codice.
  • Dovete quindi sostituire il valore 3 (= COM3) con l'effettiva porta COM associata al vostro modem.
  • Per una completa documentazione di oggetti e metodi si rimanda all'Help SMSLibX.

 

4. Note importanti per sviluppatori VBA (best practices)

Leggere attentamente queste note, importanti per un buon utilizzo di SMSLibX nei vostri programmi!

 

4.1  MsgBox si mangia i vostri messaggi!

Molti non sanno che... mentre c'è una MsgBox o InputBox aperta nella vostra applicazione, VBA sopprime gli eventi generati da timers, forms, controlli e componenti ActiveX. Gli eventi non vengono semplicemente posticipati, ma definitivamente soppressi (vedi Microsoft Knowledge Base, articolo 76557).

A causa di questo comportamento, potreste perdere le notifiche di SMS ricevuto (ed altri eventi) qualora questi vengano generati mentre c'è una MsgBox aperta – eventualità che voi non potete controllare, in quanto dipende dall'utente.

Come work-around è possibile ridefinire la funzione MsgBox di VBA, rimpiazzandola con la MessageBox API di Windows che non sopprime alcun evento (vedi Microsoft Knowledge Base, articolo 76557).
Un esempio concreto di ridefinizione di MsgBox è presente nel database di esempio fornito con questo tutorial.

 

4.2  Utilizzo di DoEvents nei cicli

Se la vostra applicazione VBA esegue dei cicli su liste di messaggi da inviare, oppure implementa operazioni di lunga durata, si raccomanda di inserire un'istruzione DoEvents nel ciclo (o nelle altre operazioni di lunga durata).

Questo permetterà ad SMSLibX di generare gli eventi in tempo reale, notificando messaggi ricevuti, rapporti di consegna, stati del modem ecc. senza ritardo.

 

4.3  Eventi ed operazioni time-consuming

E' buona norma non inserire operazioni di lunga durata nel codice VBA di gestione eventi generati da SMSLibX (ad es. MessageReceived), poiché SMSLibX fa affidamento sul medesimo thread di notifica eventi, per la gestione e notifica di ulteriori messaggi.

A grandi linee, la gestione di un evento non dovrebbe impiegare più di 1 secondo.

Se dovete inviare un SMS di risposta automatica per ogni SMS ricevuto, una buona pratica consiste nel: (a) creare e salvare il messaggio di risposta in una tabella (b) scrivere un metodo separato, attivato da un timer (ad es. ogni 15-30 secondi) per processare la coda di invio messaggi.
In questo modo non si appesantisce l'evento di ricezione con i 3-4 secondi necessari per l'invio SMS.

 

5. Risoluzione dei problemi

 

5.1  Registrazione di SMSLibX

Se SMSLibX non è correttamente registrato sul vostro sistema, all'apertura del database di esempio possono verificarsi i seguenti errori:

  1. Error: Cannot find SMSLibX.dll
  2. L'espressione [...] ha provocato il seguente errore: Impossibile trovare il progetto o la libreria
  3. Error #429: Il componente ActiveX non è in grado di creare l'oggetto

Per risolvere il problema, verificare che SMSLibX sia stato precedentemente installato sul vostro sistema – quindi, se necessario, reimpostare il riferimento a SMSLibX.dll come indicato nella prima parte di questo tutorial.

 

5.2  Altri problemi su SMSLibX

Per altri problemi consultare la sezione Troubleshoothing dell'Help SMSLibX.

 

NOTIZIE

SMS UTILI PER...

  • SMS per chi lavora

    - Gruppi di lavoro
    Mantieni il contatto con colleghi e clienti in mobilità tramite SMS.
    - Mobile marketing
    Rinnova la comunicazione verso il mercato utilizzando i messaggi SMS.

  • SMS per il pubblico servizio

    - Servizi ed associazioni
    Contatta sottoscrittori ed associati tramite SMS.
    - Studi commercialisti
    Ricorda tramite SMS adempimenti e scadenze.
    - Studi dentistici
    Invia un SMS di promemoria per gli appuntamenti.
    - Scuole ed Università
    Mantieni il contatto con studenti e genitori via SMS.

  • Usa gli SMS per...

FOCUS SU...

  • Le nostre soluzioni per inviare e ricevere SMS:

  • Mailing SMS da PC

    Creare una lista di messaggi SMS ed inviarla a multipli destinatari con SMSList.

  • SMS da siti web

    Come integrare SMSLibX nelle vostre pagine web (ASP o altre tecnologie server-side) per inviare e ricevere SMS dal vs. sito.

  • SMS da Excel e database Access

    Con SMSLibX aggiungi ai tuoi fogli Excel e database Access la capacità di inviare e ricevere SMS.

  • Altre soluzioni SMS...