منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : تخزين رقم الحقل المحدد من الكومبوبكس
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم 
جدول البنك و المستخدمين 



اريده ان يخزن فى جدول 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 لانى غير متذكر لاكواد الاتصال المتصل