منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
ارجوا فى المساعدة فى الاستعلام عن طريق ويب سيفر - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : ارجوا فى المساعدة فى الاستعلام عن طريق ويب سيفر (/showthread.php?tid=21385)

الصفحات: 1 2


ارجوا فى المساعدة فى الاستعلام عن طريق ويب سيفر - كفاح - 15-08-17

قمت بأنشاء كود لدخول برنامجي بصلحيات معينة وعند شاشة الدخول ( اسم المستخدم , وكلمة المرور )

وقمت بعمل دالة للاستعلام عن اسم المستخدم وكلمة المرور في ويب سيرفيس وترجع قمية الاستعلام 

PHP كود :
   <WebMethod()>
 
   Public Function selectLogen(Username As StringPassword As String) As Integer
      
            Dim cmd 
As New SqlCommand()
 
           If CON.State ConnectionState.Open Then
                CON
.Close()
 
           End If
 
           CON.Open()
 
           cmd.Connection CON
            cmd
.CommandText "SELECT * FROM dbo.Users WHERE (UserName LIKE '" Username "') AND (Password LIKE '" Password "')"
 
           If CON.State ConnectionState.Open Then
                CON
.Close()
 
           End If
 
           CON.Open()
 
           Return cmd.ExecuteNonQuery 


ثم قمت باستدعئها في الفورم الخاصة بها واستخدام الدالة

PHP كود :
Dim i As New ServiceReference1.WebService1SoapClient
 
If i.selectLogen(UsernameTextBox.TextPasswordTextBox.Text) > 0 Then
   Dim Mainform 
As New MainFrm2
            Mainform
.Show()
 
           Me.Hide()
 
      Else
 
           MessageBox.Show("برجاء التأكد من البيانات"APPLICATIONNAMEMessageBoxButtons.OKMessageBoxIcon.Error)
 
           PasswordTextBox.ResetText()
 
           UsernameTextBox.ResetText()
 
           UsernameTextBox.Focus()
 
       End If 
المشكلة هنا لا توجد نتيجة ترجع من الاستعلام الموجود في الويب سيرفيس وتظهر لي رسالة ( برجاء التاكد من البيانات ) في حين ان اسم المستخدم صحيح وكلمة السر
فهل من المساعدة جزاكم الله كل خير


RE: ارجوا فى المساعدة فى الاستعلام عن طريق ويب سيفر - سعود - 15-08-17

تحتاج تعديل بسيط في جانب الويب سيرفس
وهي اذا اردت عدد السجلات  فاستخدم جملة استعلام  (*)select  count
وترجع بـ executescalar وليس  ExecuteNonQuery


RE: ارجوا فى المساعدة فى الاستعلام عن طريق ويب سيفر - كفاح - 15-08-17

اشكر اخي سعود تمت بنجاح الحمد لله لكن بدون استخدام صلحيات المستخدم
PHP كود :
Name CurDataTable.Rows(0)(1)
 
           FiledAdd CurDataTable.Rows(0)(2)
 
           FiledUpdate CurDataTable.Rows(0)(3)
 
           FiledSave CurDataTable.Rows(0)(4)
 
           FiledDelete CurDataTable.Rows(0)(5
رجعت قيم الاسم وكلمة المرور فقط


RE: ارجوا فى المساعدة فى الاستعلام عن طريق ويب سيفر - سعود - 15-08-17

العفو ياطيب
كيف كتبت الاستعلام؟
اذا مثل التعديل اللي قلت لا اظن يرجع قيم نصية وانما فقط قيمة رقمية تمثل العدد فقط
لو حبيت قيم نصية استخدم ارجاع DataTable وفي الجهاز المحلي تعرف DataTable وتتم التعبئة ..
الطرق كثيرة.


RE: ارجوا فى المساعدة فى الاستعلام عن طريق ويب سيفر - كفاح - 15-08-17

PHP كود :
   <WebMethod()>
 
   Public Function selectLogen(Username As StringPassword As String) As DataTable
        Try
            CON 
= New SqlConnection(ConString)
 
           Dim da As New SqlDataAdapter("SELECT Count(*) FROM dbo.Users WHERE (UserName LIKE '" Username "') AND (Password LIKE '" Password "')"CON)
 
           Dim dt As New DataTable
            dt
.TableName "Users"
 
           da.Fill(dt)
 
           Return dt
        Catch ex 
As Exception
            Throw 
New SoapException(ex.MessageSoapException.ServerFaultCodeContext.Request.Url.AbsoluteUri)
 
       End Try
 
   End Function 

PHP كود :
       If i.selectLogen(UsernameTextBox.TextPasswordTextBox.Text).Rows.Count 0 Then

            Name 
i.selectLogen(UsernameTextBox.TextPasswordTextBox.Text).Rows(0)(1)
 
           FiledAdd i.selectLogen(UsernameTextBox.TextPasswordTextBox.Text).Rows(0)(2)
 
           FiledUpdate i.selectLogen(UsernameTextBox.TextPasswordTextBox.Text).Rows(0)(3)
 
           FiledSave i.selectLogen(UsernameTextBox.TextPasswordTextBox.Text).Rows(0)(4)
 
           FiledDelete i.selectLogen(UsernameTextBox.TextPasswordTextBox.Text).Rows(0)(5)

 
           Dim Mainform As New MainFrm2
            Mainform
.Show()
 
           Me.Hide()
 
       Else
            MessageBox
.Show("برجاء التأكد من البيانات"APPLICATIONNAMEMessageBoxButtons.OKMessageBoxIcon.Error)
 
           PasswordTextBox.ResetText()
 
           UsernameTextBox.ResetText()
 
           UsernameTextBox.Focus()
 
       End If
 
   End Sub 



RE: ارجوا فى المساعدة فى الاستعلام عن طريق ويب سيفر - سعود - 15-08-17

الان الامر تغير
ارجع للكود الاول وليس:

كود :
SELECT Count(*)

 بل اجعله هكذا
كود :
select * from
وعبء الداتاتيبل هكذا
كود :
dt.load(cm.executereader)
وارجع الداتاتيبل
وبالجهاز المحلي افحص صفوف الداتاتيبل
dt.rows.count
وابد بالاسنادات

فين راح الردSmile
هو على اساس انك تستخدم sqlcommand  لكن لم انتبه انك تستخدم sqldataadapter    ولا مشكلة المهم جملة الاستعلام واحدة  سواءا هكذا او غيرها


RE: ارجوا فى المساعدة فى الاستعلام عن طريق ويب سيفر - كفاح - 15-08-17

مشكور اخي سعود ضبط الموضوع كنت دخلت يوزر له جميع الصلحيات كدا تمام جزاك الله كل خير عنا

PHP كود :
   <WebMethod()>
 
   Public Function selectLogen(Username As StringPassword As String) As DataTable
        Try
            CON 
= New SqlConnection(ConString)
 
           Dim da As New SqlDataAdapter("SELECT * FROM dbo.Users WHERE (UserName LIKE '" Username "') AND (Password LIKE '" Password "')"CON)
 
           Dim dt As New DataTable
            dt
.TableName "Users"
 
           da.Fill(dt)
 
           If CON.State ConnectionState.Open Then
                CON
.Close()
 
           End If
 
           CON.Open()
 
           dt.Load(da.SelectCommand.ExecuteReader)
 
           Return dt
        Catch ex 
As Exception
            Throw 
New SoapException(ex.MessageSoapException.ServerFaultCodeContext.Request.Url.AbsoluteUri)
 
       End Try
 
   End Function 

مشكور اخي سعود ضبط الموضوع كنت دخلت يوزر له جميع الصلحيات كدا تمام جزاك الله كل خير عنا


RE: ارجوا فى المساعدة فى الاستعلام عن طريق ويب سيفر - سعود - 15-08-17

اخي الكريم
يكفي التعبئة فقط بـ 

كود :
da.Fill(dt)

مباشرة اكتب 
Return dt

إقتباس :مشكور اخي سعود ضبط الموضوع كنت دخلت يوزر له جميع الصلحيات كدا تمام جزاك الله كل خير عنا
العفو ياطيب
لكن دقق بالكود فيه اضافات مالها لازم (اذا لم اخطيء)
مثل التعبئة  فقد عبأت مرتين عن طريق 

كود :
da.fill(dt)

 و 
كود :
dt.Load(da.SelectCommand.ExecuteReader)



RE: ارجوا فى المساعدة فى الاستعلام عن طريق ويب سيفر - كفاح - 15-08-17

صحيح لم انتبة من فرحتي بتشغيل الكود اخيرا شكرا لك


RE: ارجوا فى المساعدة فى الاستعلام عن طريق ويب سيفر - محمد كريّم - 15-08-17

ملاحظة بسيطة على الاستعلام
بما أنك تستعلم على بيانات الدخول وهي بيانات حساسة فالافضل استخدام = بدلا من like