PDA

View Full Version : سوال: ارسال SMS



neegar
یک شنبه 30 بهمن 1390, 10:37 صبح
سلام
من یک برنامه تحت ویندوز با VB.NET نوشتم که SMS ارسال می کند و یک فرم خالی توش اضافه کردم که داخل اون فرم یک Timer گذاشتم حالا می خوام این فرم وصل کنم به database که توی اون یه فیلدی به نام IsSend داره که در حالت پیش فرض False ولی وقتی SMS میفرستی True میشه .
می خوام بگم هر 5 دقیقه یکبار بیا IsSend چک کن ببین هر کدومش False بود خود برنامه به طور اتوماتیک براش SMS بفرسته که "اشتباه شده است".
نمی دونم این شرط چه جوری بنویسم؟؟؟؟
تا به حال تو قسمت ویندوز کار نکردم Connection String چه جوری باید بنویسم مثل وب می مونه؟
:افسرده:
این بر نامه ویندوزمه 82907

فرید نجفلو
یک شنبه 30 بهمن 1390, 11:21 صبح
دوست عزیز کاملتر توضیح می دادین بهتر می شد و پایگاه دادتون رو هم نگفتین چیه
در حالت کلی کانکشن استرینگ با وب فرقی نمی کنه



نمی دونم این شرط چه جوری بنویسم؟؟؟؟
اگه شرط SQL منظورتونه کد زیره وگرنه باید منظورتون رو توضیح بدین:
Select * From TblSMS Where IsSend =0
True=-1
False=0

neegar
یک شنبه 30 بهمن 1390, 11:23 صبح
بله از SQL Server2008 استفاده می کنم. ولی برنامه را در ویژوال استدیو درست کردم این کد که نمی شه توی ویژوال استدیو بنویسم.
چه جوری باید برای Timer شرط بزارم تا حالا ازش استفاده نکردم.

فرید نجفلو
یک شنبه 30 بهمن 1390, 11:47 صبح
تابع زیر رو در تایمرتون صدا بزنید
چون شما نام جدول و ستون ها رو نگفتید من خودم یه اسم فرضی انتخاب کردم
کانکشن استرینگ رو هم تغییر بدین(محل تعریفش هم با خودتونه من ثابت و محلی تعریف کردم)

Private Function GetNotSents() As List(Of String)
Dim ConnStr As String = "Data Source=najafloo-farid\sqlexpress;Initial Catalog=test;Integrated Security=True"
Dim conn As New SqlClient.SqlConnection(ConnStr)
Dim adp As New SqlClient.SqlDataAdapter("Select * From tblSMS Where IsSend =0", conn)
Dim dt As New DataTable
Dim NumsToSend As New List(Of String)
adp.Fill(dt)
If dt.Rows.Count <> 0 Then
For Each aRow As DataRow In dt.Rows
NumsToSend.Add(Str(aRow.Item("PhoneNumber")))
Next
Else
'No Any Pending
End If
'Return List of Numbers
Return NumsToSend
End Function

neegar
یک شنبه 30 بهمن 1390, 12:15 عصر
ممنون از کمکی که کردی یه سوال دیگه من شماره تلفن ها را در پایگاه داده نگه می دارم در ستونی به نام MobileNo و نام جدول هم tblUser است. که کاربر باید موقع عضو شدن در سایت شماره موبایلشو به عنوان نام کاربری برای من میفرستد و من باید براش پسورد sms کنم ساختار پایگاهم مثل زیر است :
SELECT TOP 1000 [ID]
,[MobileNo]
,[Password]
,[Stock]
,[DateIn]
,[IsApproved]
,[IsSend]
FROM [Mobile].[dbo].[tblUser]
حالا به شماره تلفن از پایگاه بردارم.

فرید نجفلو
یک شنبه 30 بهمن 1390, 12:37 عصر
کد شما باید چیزی شبیه این بشه:
Private Function GetNotSents() As Dictionary(Of String, String)
Dim ConnStr As String = "Data Source=najafloo-farid\sqlexpress;Initial Catalog=test;Integrated Security=True"
Dim conn As New SqlClient.SqlConnection(ConnStr)
Dim adp As New SqlClient.SqlDataAdapter("Select * From tblUser Where IsSend =0", conn)
Dim dt As New DataTable
Dim NumsToSend As New Dictionary(Of String, String) 'Mobile,Password
If dt.Rows.Count <> 0 Then
For Each aRow As DataRow In dt.Rows
NumsToSend.Add(Str(aRow.Item("MobileNo")), Str(aRow.Item("Password")))
Next
Else
'No Any Pending
End If
Return NumsToSend
End Function
Private Sub SendPassword()
Dim Nums = GetNotSents()
For Each aNum In Nums
SendSMS(aNum.Key, aNum.Value)
Next
End Sub