السلام عليكم
جدول البنك و المستخدمين
اريده ان يخزن فى جدول bank رقم المستخدم user_id و يظهر فى datagridview1 الموجوده فى فورم bank اسم المستخدم user_name الموجود فى جدول user7
كتبت فى module
يوجد فورم بها كومبوبكس لاضافه مستخدم كما بالشكل
بعد الاضافه لايظهر اسم المستخدم
و هذا هو اجراء الحفظ
اريده ان يخزن فى جدول bank رقم المستخدم user_id و يظهر فى datagridview1 الموجوده فى فورم bank اسم المستخدم user_name الموجود فى جدول user7
ما الحل ؟
احد الحلول السريعة ان تقوم بتعبئه ال gv باسم المستخدم وال ID
ووضع علامه (ـ) بينهم : user1-500
وتقوم بجلب كل القيمة التي تلي (-)
كود :
Sub fill_comb()
CSNF.Items.Clear()
Dim query As String
Dim command As OleDbCommand
Dim reader As OleDbDataReader
'فحص الاتصال بقاعدة البيانات
If Conn.State = ConnectionState.Closed Then
Conn.Open()
End If
query = "SELECT user_name,user_id from table"
command = New OleDbCommand(query, Conn)
reader = command.ExecuteReader()
If reader.HasRows Then
While reader.Read()
CSNF.Items.Add(reader(0) & "-" & reader(1))
End While
End If
reader.Close()
Conn.Close()
End Sub
او اذا كان ال user_name غير مكرر
استدعي الرقم الخاص به عند تغير الاختيار في combo عن طرق function
كود :
Public Function user_id(ByVal username As String) As Integer
Dim output As Integer
Try
If ConnectionState.Open Then
Conn.Close()
End If
Conn.Open()
Dim cmd As OleDbCommand = Conn.CreateCommand
cmd.CommandText = "Select user_id from your_table where user_name=@user_name"
cmd.Prepare()
cmd.Parameters.AddWithValue("@user_name", username)
Dim dr As OleDbDataReader
dr = cmd.ExecuteReader
While dr.Read()
output = dr.GetValue(0)
End While
dr.Close()
Catch ex As OleDbException
' Do some logging or something.
MessageBox.Show("There was an error accessing your data. DETAIL: " & ex.Message)
End Try
Return output
End Function
كود :
Private Sub ComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox.SelectedIndexChanged
user_id(ComboBox.SelectedItem)
End Sub
مرفق المشروع و ارجو تعديله
إقتباس :احد الحلول السريعة ان تقوم بتعبئه ال gv باسم المستخدم وال ID
ووضع علامه (ـ) بينهم : user1-500
وتقوم بجلب كل القيمة التي تلي (-)
كود :
كود :
Sub fill_comb()
CSNF.Items.Clear()
Dim query As String
Dim command As OleDbCommand
Dim reader As OleDbDataReader
'فحص الاتصال بقاعدة البيانات
If Conn.State = ConnectionState.Closed Then
Conn.Open()
End If
query = "SELECT user_name,user_id from table"
command = New OleDbCommand(query, Conn)
reader = command.ExecuteReader()
If reader.HasRows Then
While reader.Read()
CSNF.Items.Add(reader(0) & "-" & reader(1))
End While
End If
reader.Close()
Conn.Close()
End Sub
الحقل bank_user_id نوعه int هل تصلح هذه الطريقه ؟
صديقي مشروعك sql و انت مرفق قاعدة بيانات access
وليس لدي الوقت لتحويله.
الطريقه سهلة جدا
استخدم ال function هذا
كود :
Public Function user_id(ByVal username As String) As Integer
Dim output As Integer
Try
If ConnectionState.Open Then
Conn.Close()
End If
Conn.Open()
Dim cmd As OleDbCommand = Conn.CreateCommand
cmd.CommandText = "Select user_id from your_table where user_name=@user_name"
cmd.Prepare()
cmd.Parameters.AddWithValue("@user_name", username)
Dim dr As OleDbDataReader
dr = cmd.ExecuteReader
While dr.Read()
output = dr.GetValue(0)
End While
dr.Close()
Catch ex As OleDbException
' Do some logging or something.
MessageBox.Show("There was an error accessing your data. DETAIL: " & ex.Message)
End Try
Return output
End Function
وعدل اسماء الاعمدة اللازمه واسم الجدول.
عند ادخال البيانات اللازمه للجدول فقط ضع
user_id(ComboBox.SelectedItem)
user_id(ComboBox.SelectedItem) -- هي رقم ال user_id
هل ممكن بعد اذنك تحول الكود السابق الى اتصال منفصل اى بال dataadapter لانى غير متذكر لاكواد الاتصال المتصل