السلام عليكم
اعمل على برنامج بستخدام vb.net 2005 وقاعدة بيانات اكسس
يبداء البرنامج بفورم تسجيل الدخول login form باستخدام فضاء الاسماء system.data.oledb وقمت بعمل اجراءات مخزنة storedprocedure للحفظ والتعديل والحذف
المشكلة في كود الموافقة على تسجيل الدخول للمستخدم المضاف اصلاً بقاعدة البيانات واليكم الكود:
Imports System
Imports System.Data
Imports System.Data.OleDb
Public Class LoginForm1
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
If Trim(UsernameTextBox.Text) = "" Then
ErrorProvider1.SetError(UsernameTextBox, "الرجاء ادخال اسم للمستخدم")
Else
ErrorProvider1.SetError(UsernameTextBox, "")
End If
If Trim(PasswordTextBox.Text) = "" Then
ErrorProvider1.SetError(PasswordTextBox, "الرجاء ادخال كلمة المرور")
Else
ErrorProvider1.SetError(PasswordTextBox, "")
End If
Dim str As String
Dim oledbCommand2 As New OleDbCommand
str = "login_sp"
With oledbCommand2
.CommandType = CommandType.StoredProcedure
.CommandText = str
.Parameters.AddWithValue("@em_user_name", UsernameTextBox.Text)
.Parameters.AddWithValue("@em_password", PasswordTextBox.Text)
.Connection = OleDbConnection1
End With
OleDbConnection1.Open()
Dim valid As Integer = oledbCommand2.ExecuteScalar
If valid < 1 Then
'invalid login
MsgBox("كلمة المرور خطاء", MsgBoxStyle.OkOnly)
UsernameTextBox.Text = ""
PasswordTextBox.Text = ""
UsernameTextBox.Focus()
OleDbConnection1.Close()
oledbCommand2.Parameters.Clear()
Else
'valid login
Label1.ForeColor = Color.Red
OK.Enabled = False
Cancel.Enabled = False
UsernameLabel.Enabled = False
PasswordLabel.Enabled = False
UsernameTextBox.Enabled = False
PasswordTextBox.Enabled = False
MenuStrip1.Enabled = True
username = UsernameTextBox.Text
Label3.Text = username
oledbCommand2.Parameters.Clear()
OleDbCommand1.Parameters("@em_user_name").Value = UsernameTextBox.Text
Dim read As OleDb.OleDbDataReader
read = OleDbCommand1.ExecuteReader
If read.Read Then
Label2.Text = read.Item("em_user_type")
read.Close()
OleDbConnection1.Close()
OleDbCommand1.Parameters.Clear()
End If
End If
End Subالخطاء يظهر بالسطر التالي:
OleDbCommand1.Parameters("@em_user_name").Value = UsernameTextBox.Text
ورسالة الخطاء هيه:
index out of range exception was unhandled
An OleDbParameter with ParameterName '@em_user_name' is not contained by this OleDbParameterCollection.
والـ كوماند تكست oledbcommand1.text=SELECT em_user_type
FROM ghost_user
WHERE (em_user_name = '@em_user_name')
ماهو سبب ظهور هذا الخطا رغم انه لا يعطيني اي خطاء في صفحة كتابة الكود؟
والكود نفسه عمل بشكل ممتاز عندما قمت بربطه بقاعدة بيانات sqlexpress ولم يظهر اي خطاء!!!؟؟؟؟
اتمنى ايجاد الحل منكم بشكل سريع وشكراَ جزيلاَ