الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استعلام بقيم متغيره

مغلق
بدأه haz_mi في 26 نوفمبر 2007 · 5 رد · 915 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لدي استفسار بخصوص الاستعلام بقيم متغيره بحثت في اكثر من موقع و لم اجد اجابه وذلك في اغلب الظن لعدم مقدرتي على تحديد المعلومه التي ابحث عنها بشكل دقيق حيث اني مبتدئ في عالم البرمجة

لدي هذا الاستعلام :

Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM tbl1 WHERE  " & _ 
"strEmpName = '" & UsrnameTxtBox.Text & "' AND strEmpPass = '" & PassTxtBox.Text & "' " & _ 
"AND strUsrStat = ? AND strAccess = ? ", con)
cmd.Parameters.Add(New OleDbParameter("strUsrStat", UsrStatus))
cmd.Parameters.Add(New OleDbParameter("strAccess", UsrAces))
con.Open()
Dim UsrValid As OleDbDataReader = cmd.ExecuteReader()

حيث UsrStatus عباره عن قيمتين هما : Active و Not Active

و strAccess عباره عن 9 قيم من 1 الى 9

فما هي افضل طريقه لعمل هذا الاستعلام

والشكر للجميع مقدما

لا تنسونا من الدعاء لوالدتي بالاجر و الشفاء

#2

هذي اعادة كتابة للكود حسب فهمي له ...

ان شاء الله يكون هو المطلوب ..

dim strSQL as string 
strSQL = "SELECT * FROM tbl1 WHERE  strEmpName = ' " & UsrnameTxtBox.Text & "' AND strEmpPass = ' "  
strSQL & = PassTxtBox.Text & " ' AND strUsrStat =' " & UsrStatus  & " ' AND strAccess= ' "
strSQL & = UsrAces  & " ' " 
Dim cmd As OleDbCommand = New OleDbCommand(strSQL,con)
con.Open()
Dim UsrValid As OleDbDataReader = cmd.ExecuteReader()
#3

شكرا اخي ابو خالد على مرورك و ردك الكريم

ولكن ليس هو ما ابحث عنه فالكود الذي في الموضوع يعمل ولكني مضطر لتكرار الاستعلام مع كل متغير اي اني اقوم بعمل 18 استعلام وانا ابحث عن طريقه اسهل و تختصر هذا الكم الهائل من الاستعلامات

لا تنسونا من الدعاء لوالدتي بالاجر و الشفاء

#4

إليك هدا الكود السابق -بعد التعديل- سيساعدك في تنظيم البارامترات ...

Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM tbl1 WHERE  " & _
		"strEmpName = ? AND strEmpPass = ? AND strUsrStat = ? AND strAccess = ? ", Con)
		cmd.Parameters.AddWithValue("?", UsrnameTxtBox.Text)
		cmd.Parameters.AddWithValue("?", PassTxtBox.Text)
		cmd.Parameters.AddWithValue("?", UsrStatus)
		cmd.Parameters.AddWithValue("?", UsrAces)
		Con.Open()
		Dim UsrValid As OleDbDataReader = cmd.ExecuteReader()

مقالاتي في VB.NET وبرامجي على موقعي الجديد :

#5

شكر للاخوة الذين حاولوا المساعدة

ولكن مازالت الفكرة اللتي ابحث عنها غائبه ولمزيد من الوضوح سوف اكتب الكود كاملا للتتضح الفكره المراد منها اختصار الكود بشكل عملي

الكود مرفق في ملف نصي

فهذه الاكواد تعمل بشكل سليم ولكنها غير عمليه لطولها و لابد من وجود طريقه لاختصارها

قد يقترح الاخوه طرق متعددة وافكار متقدمة لتنفيذ العمليه المقصودة ولكن انا مازلت في اول الطريق و هذا البرنامج عباره عن تطبيق و حقل تجارب لما اتعلم من الكتب فكلما قرأت جزء و فهته اقوم بتطبيقه عمليا في هذا البرنامج

login.txt

تم تعديل هذه المشاركة بواسطة haz_mi في 1 ديسمبر 2007 في 23:02

لا تنسونا من الدعاء لوالدتي بالاجر و الشفاء

#6

الشكر موصول لجميع الاخوة الذين حاولوا المساعدة

تم اختصار الكود الطويل في الملف المرفق سابقا عن طريق For ...next statement واصبح اسرع ايضا في التنفيذ

وهذا الكود الجديد

CurUser = UsernameTextBox.Text
        unhashpass = Me.PasswordTextBox.Text.ToLower
        hashpass = GenerateHash(unhashpass)


        Dim cmd1 As OleDbCommand = New OleDbCommand("SELECT * FROM tblEmployees WHERE " & _
        "strEmpName = '" & UsernameTextBox.Text & "' AND strEmpPassword = '" & hashpass & "' " & _
        "AND strUsrActStatus = '" & Usr1Status & "' ", con)
        con.Open()
        Dim UsrValid1 As OleDbDataReader = cmd1.ExecuteReader()

        If UsrValid1.Read() = True Then
            MsgBox("مستخدم غير نشط")
            con.Close()
        Else
            con.Close()
            For UsrAces As Integer = 1 To 9

                Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM tblEmployees WHERE " & _
                "strEmpName = '" & UsernameTextBox.Text & "' AND strEmpPassword = '" & hashpass & "' " & _
                "AND strUsrActStatus = '" & UsrStatus & "' AND strAccess = ? ", con)
                cmd.Parameters.Add(New OleDbParameter("strAccess", UsrAces))
                con.Open()
                Try
                    Me.Validate()

                    Dim UsrValid As OleDbDataReader = cmd.ExecuteReader()
                    If UsrValid.Read() = True Then
                        UsrMenu = UsrAces
                        MDIPar.Show()
                        Me.Hide()
                        con.Close()
                        Exit For
                    Else
                        con.Close()
                    End If
                Catch ex As Exception
                    MsgBox("An exception occurred:" & vbCrLf & ex.Message)
                End Try

            Next

            MsgBox("اسم المستخدم أو كلمة المرور خطأ")
            EntTries = EntTries + 1
            If EntTries = 3 Then
                Dim cmd2 As OleDbCommand = New OleDbCommand("UPDATE tblEmployees SET strUsrActStatus='" & Usr1Status & "' WHERE " & _
                "strEmpName = '" & Me.UsernameTextBox.Text & "' ", con)

                Try
                    Me.Validate()
                    con.Open()
                    cmd2.ExecuteNonQuery()
                    con.Close()
                Catch ex As Exception
                    MsgBox("An exception occurred:" & vbCrLf & ex.Message)
                End Try
                Me.Close()
            End If
        End If

والكود السابق يقوم بالتأكد من اسم المستخدم و كلمة المرور و الصلاحيات و حالة المستخدم هل هو نشط او غير نشط

وكذلك في حال ان احد المستخدمين ادخل كلمة مرور خاطئة ثلاث مرات يتم تحويله الا مستخدم غير نشط

اتمنى من الاخوة الاعضاء ابداء ملاحظاتهم على الكود والطريقه في كتابته لكي اتمكن من اتباع الطريقه الصحيحة في تعلم البرمجة

لا تنسونا من الدعاء لوالدتي بالاجر و الشفاء

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…