Εμφάνιση ενός μόνο μηνύματος
  #3  
Παλιά 04-04-12, 18:25
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Αλέξανδρε καλησπέρα!

Πριν από ένα χρόνο περίπου είχα προγραμματίσει πάνω στο ίδιο αντικείμενο για ένα λογιστικό γραφείο σε 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.


Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 05-04-12 στις 01:06.
Απάντηση με παράθεση