Αλέξανδρε καλησπέρα!
Πριν από ένα χρόνο περίπου είχα προγραμματίσει πάνω στο ίδιο αντικείμενο για ένα λογιστικό γραφείο σε Access και
VB.NET.
Πριν προχωρήσεις στην αυτοματοποίηση της μαζικής αποστολής SMS, θα πρέπει να ετοιμάσεις πίνακες που όπου θα καταγράφεται το ιστορικό της αποστολής ανά πελάτη.
Όταν στέλνεις ένα SMS, αρχικά ο Server θα σου πιστοποιήσει ότι το παρέλαβε (
SMSPost1.SMSResponse).
Μόνο με την πληροφορία αυτή δεν μπορείς γνωρίζεις το αν και το πότε ένα μήνυμα απεστάλη στον παραλήπτη.
Κανονικά θα πρέπει να δημιουργήσεις τους κατάλληλους πίνακες όπου θα καταγράφεις:
- Τι κείμενο έστειλες
- Σε ποιον το έστειλες
- Πότε το έστειλες
- Αν παραλήφθηκε επιτυχώς.
Θα χρειαστεί να γνωρίζεις πως θα "ρωτήσεις" τον Server για τις πληροφορίες αυτές (Υποστηρίζεται από τον συγκεκριμένο Server).
Δεν θα εμβαθύνω το θέμα στο σημείο αυτό γιατί δεν είναι τόσο απλό όσο φαίνεται.
Ο παρακάτω κώδικας, μπορεί να στείλει μαζικά SMS. Το πόσα πολλά μπορεί να στείλει κάθε φορά εξαρτάται από το ίδιο το Activex.
Εγώ προσωπικά χρησιμοποίησα τον Internet Explorer αντί για το Activex χωρίς βέβαια αυτό να σημαίνει ότι το δεύτερο δεν λειτουργεί.
Απλά θέλησα να αποφύγω την εγκατάσταση του Activex στον υπολογιστή προορισμού.
Ο παραδειγματικός κώδικας προϋποθέτει τους πίνακες
Customers και
tblServerResponces με τα εξής πεδία:
Πίνακας
Customers:
- CustomerID (Κλειδί, Αυτόματη αρίθμηση)
- txtMessage (υπόμνημα)
- txtTelefon (κείμενο)
- MessageID (αριθμός)
- BlnCheck (Αληθές/Ψευδές)
Πίνακας
tblServerResponses:
- ResponseID (Κλειδί, Αυτόματη αρίθμηση)
- CustomerID (αριθμός)
- MessageID (αριθμός)
- dtDate (Ημερομηνία)
- txtResponse (κείμενο)
Κώδικας:
Option Compare Database
Option Explicit
Private Function GetSMSServerResponse( _
strMessage As Integer, _
strFrom As String, _
strUserName As String, _
strPassword As String, _
strTo As String, _
Optional strRequestType As String = "POST" _
) As String
strMessage = Replace(Trim(strMessage), " ", "%20")
Me.SMSPost1.From = strFrom
Me.SMSPost1.Message = strMessage
Me.SMSPost1.username = strUserName
Me.SMSPost1.password = strPassword
Me.SMSPost1.sTo = strTo
Me.SMSPost1.sRequestType = strRequestType
Me.SMSPost1.SendSMS
GetSMSServerResponse = SMSPost1.SMSResponse
End Function
'-----------------------------------------------------------------
Private Sub cmdSendSMS_Click()
Dim strSQL As String
Dim rsSource As DAO.Recordset
Dim rsResponse As DAO.Recordset
Dim strResponse As String
strSQL = "SELECT * FROM Customers WHERE BlnCheck=-1"
Set rsSource = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
If rsSource.RecordCount Then
rsSource.MoveFirst
strSQL = "SELECT * FROM tblServerResponses"
Set rsResponse = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
While Not rsSource.EOF
strResponse = GetSMSServerResponse( _
Nz(Me.txtMessage), _
Nz(Me.txtFrom), _
Nz(Me.txtUserName), _
Nz(Me.txtPassword), _
Nz(rsSource!txtTelefon))
rsResponse.AddNew
rsResponse!dtDate = Now
rsResponse!CustomerID = rsSource!CustomerID
rsResponse!txtResponse = strResponse
rsResponse!txtMessage = Nz(Me.txtMessage)
rsResponse.Update
rsSource.MoveNext
Wend
rsSource.Close
Set rsSource = Nothing
rsResponse.Close
Set rsResponse = Nothing
Else
MsgBox "δεν έχετε τσεκάρει κανένα παραλήπτη!", vbInformation
rsSource.Close
Set rsSource = Nothing
End If
End Sub
Με αυτό τον τρόπο μπορείς να στείλεις μαζικά SMS.
Φιλικά
Τάσος