السلام عليكم ............
يوجد لديا مشكلة عندما اقوم بتشغيل البرنامج فهو يقوم بتحميل البيانات الى الكومبو بوكس بشكل طبيعي و لكن عند الخطأ في
الاسم او الرقم يتوقف في تحميل البيانات مرة ثانية ارجو الافادة و شكرا .........
[
attachment=5957]
اكتب كود التحميل و اسماء الحقول المراد تحميلها من الجدول واسم الجدول
اخي كود التحميل هو
PHP كود :
Private Sub login_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
User_Table_Load()
ComboBox1.Items.Clear()
ComboBox1.DataSource = User_Table
ComboBox1.DisplayMember = "User_Name"
End Sub
و قاعدة البيانات هي اكسس ......... و شكرا
مشاركة مني لكم فهذا كلاس لفورم باداة كومبوبوكس باسم username يتعبا من عمود باسم un ومربع نص باسم password مربوط بعمود باسم ps
التصريحات العامة:
كود :
Dim str As String = "provider=microsoft.ace.oledb.12.0;data source=|datadirectory|\db.accdb"
Dim con As New OleDb.OleDbConnection(str)
Dim sql As String = String.Empty
Dim ds As DataSet
Dim da As OleDb.OleDbDataAdapter
اجراء تعبئة الكومبوبكس باسماء المستخدمين:
كود :
Private Sub gusers()
sql = "select un from tb"
ds = New DataSet
da = New OleDb.OleDbDataAdapter(sql, con)
usernam.Items.Clear()
ds.Clear()
da.Fill(ds, "tb")
usernam.DataSource = ds.Tables("tb")
usernam.DisplayMember = "un"
End Sub
ضمن حدث تحميل الفورم
كود :
gusers()
If con.State = ConnectionState.Open Then
con.Close()
End If
دالة التحقق من البيانات
كود :
Private Function isfound(ByVal un As String, ByVal ps As String) As Boolean
Dim cm As New OleDb.OleDbCommand("", con)
cm.CommandText = "select count(tid) from tb where un='" & un & "' and ps='" & ps & "'"
If con.State = ConnectionState.Closed Then
con.Open()
End If
If cm.ExecuteScalar > 0 Then
Return True
If con.State = ConnectionState.Open Then
con.Close()
End If
Else
Return False
If con.State = ConnectionState.Open Then
con.Close()
End If
End If
If con.State = ConnectionState.Open Then
con.Close()
End If
End Function
وضمن زر امر الدخول
كود :
If isfound(usernam.Text, password.Text) = False Then
MsgBox("Not Found", MsgBoxStyle.Critical, "ERROR")
Else
MsgBox("Welcom .. here", MsgBoxStyle.Information, "welcom")
End If
If con.State = ConnectionState.Open Then
con.Close()
End If
والتالي كامل الكلاس
كود :
Public Class Form1
Dim str As String = "provider=microsoft.ace.oledb.12.0;data source=|datadirectory|\db.accdb"
Dim con As New OleDb.OleDbConnection(str)
Dim sql As String = String.Empty
Dim ds As DataSet
Dim da As OleDb.OleDbDataAdapter
Private Sub gusers()
sql = "select un from tb"
ds = New DataSet
da = New OleDb.OleDbDataAdapter(sql, con)
usernam.Items.Clear()
ds.Clear()
da.Fill(ds, "tb")
usernam.DataSource = ds.Tables("tb")
usernam.DisplayMember = "un"
End Sub
Private Function isfound(ByVal un As String, ByVal ps As String) As Boolean
Dim cm As New OleDb.OleDbCommand("", con)
cm.CommandText = "select count(tid) from tb where un='" & un & "' and ps='" & ps & "'"
If con.State = ConnectionState.Closed Then
con.Open()
End If
If cm.ExecuteScalar > 0 Then
Return True
If con.State = ConnectionState.Open Then
con.Close()
End If
Else
Return False
If con.State = ConnectionState.Open Then
con.Close()
End If
End If
If con.State = ConnectionState.Open Then
con.Close()
End If
End Function
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
gusers()
If con.State = ConnectionState.Open Then
con.Close()
End If
End Sub
Private Sub btn_login_Click(sender As Object, e As EventArgs) Handles btn_login.Click
If isfound(usernam.Text, password.Text) = False Then
MsgBox("Not Found", MsgBoxStyle.Critical, "ERROR")
Else
MsgBox("Welcom .. here", MsgBoxStyle.Information, "welcom")
End If
If con.State = ConnectionState.Open Then
con.Close()
End If
End Sub
End Class
طبعا مسالة التحقق من هل الاتصال مفتوح ام لا مهمة حتى نضمن ان الخطا لا يتعلق بحالة الاتصال
السلام عليكم ورحمة الله
ما شاء الله شكل نافذة تسجيل الدخول جميلة، وفكرة ComboBox فيها الأسماء حلوة.
اخي سعود بارك الله فيك و لكن لو بالامكان حل مشكلتي عندي كل شيء شغال يقوم بالتحميل اول مرة و لكن عند وجود في خطأ في الرقم السري لا يحمل البيانات مرة اخرة
و شكرا لتعاونك ...............
هلا اخي الكريم
اكتب كل الاجراءات اللتي تستخدم تحميل البيانات مثل User_Table_Load و غيرها
اخي سعود بارك الله فيك و نفعك بعلمك ............
كود التدقيق هو .....
PHP كود :
User_Table.Clear()
daUsertable = New OleDbDataAdapter("select * from User_Table where pass ='" & TextBox2.Text & "'", connAccess2010)
daUsertable.Fill(User_Table)
If User_Table.Rows.Count <> 0 Then
p_permation = User_Table.Rows(0).Item("Permation_id")
)
start_form.Show()
Me.Hide()
Else
MsgBox("اسم المستخدم او كلمة السر خاطئة")
End If
بالاضافة الى كود تحميل البيانات في combobox
الموجود سابقا في المشاركة ....
اما فيما يخص ال User_Table_Load
فهذا هو الكود .......... و انا عامله في موديول ......
PHP كود :
Public Sub User_Table_Load()
User_Table.Clear()
daUsertable = New OleDbDataAdapter("select *from User_Table", connAccess2010)
daUsertable.Fill(User_Table)
End Sub
و ياريت تحل المشكلة ضمن استطاعتك و الله يجزاك الخير ..............
و احب اشكر اخي الوليد على الاطراء ..........و برنامج صلاحيات المستخدم على حسابك لو تريد ....
كود :
"select * from User_Table where pass ='" & TextBox2.Text & "'"
اخي الكريم جملة الاستعلام هذه تحتاج منك اعادة نظر!
لما لا يكون الاستعلام عن اسم المستخدم وكلمة المرور؟
يعني المستخدم يختار الاسم الخاص به ثم يكتب كلمة المرور فيكون الاستعلام عن الاثنين ...
الشي الاخر اذا لم اكن فهمت الكود خطا وهو انني وجدت تعارض بين الكود التالي:
كود :
daUsertable = New OleDbDataAdapter("select * from User_Table where pass ='" & TextBox2.Text & "'", connAccess2010)
وبين
كود :
daUsertable = New OleDbDataAdapter("select *from User_Table", connAccess2010)
(ان كان فهمي صحيح) فتاكد من طريقة كتابة الكود
اخي الكريم سعود اولا بارك الله فيك
ثانيا انا لمى استخدم الاستعلام عن الاثنين عن الاسم و الرقم يظهر لي رسالة الخطأ مباشرة و لا يدخل الى البرنامج و هذا هو الكود .........
PHP كود :
daUsertable = New OleDbDataAdapter("select * from User_Table where user_name like'" & ComboBox1.Text & "' and pass ='" & TextBox2.Text & "'", connAccess2010)
اما عن التعارض فلا يوجد لدي اي مشكلة بينهم المشكلة هي فقط عدم تحميل البيانات مرة اخرة و لو اردت استطيع ارسال البرنامج اليك على الايميل ..........