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

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

فين حين ربطت اللست بوكس بقاعدة البيانات من خلال DT بجدول المستخدمين
أود التعديل علي بيانات مستخدم ما بعد اختياره من لست بوكس المعبئة من DT

تظهر لي هذه الرسالة عند اختيار احد المستخدمين في لست بوكس
مع العلم قمت بارجاع البيانات لاسم المختار من لست بوك بداتاست مرة وبداتا تيل مرة أخري وتظهر نفس الرسالة

وهذا كود ربط اللست بوكس

كود :
       ' تعبئة لستبوكس المستخدمين
       '=========================================================================================
       SQL = "SELECT * FROM Tab_Users order by G_ID"
       Da = New SqlDataAdapter(SQL, connDB)
       Try
           Lst_Users.DataSource = Nothing
           Lst_Users.Text = ""

           Dt = New DataTable
           Da.Fill(Dt)

           Lst_Users.Items.Clear()
           For r = 0 To Dt.Rows.Count - 1
               Lst_Users.Items.Add(Dt(r)(1))
           Next

           Dt.Clear()
 Da.Dispose()
       Catch ex As Exception
           MsgBox(ex.Message)
       End Try
       ' تعبئة لستبوكس المستخدمين
       '=========================================================================================


وهذا كود ارجاع بيانات الاسم المختار من لست بوكس

كود :
       '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
       'عرض كل بيانات المستخدم بعد اختياره من اللست بوكس      
       Try
           Cindx = Val(Lst_Users.SelectedIndex)
           DS = New DataSet

           SQL = "Select * from Tab_Users where G_ID = '" & Cindx & "' "

           Da = New SqlDataAdapter(SQL, connDB)
           Da.Fill(DS, "tab_Users")

           Lbl_New_User.Text = DS.Tables(0).Rows(Cindx).Item(0)
           Txt_User_Name.Text = DS.Tables("Tab_Users").Rows(Cindx).Item(1)

           Cmb_User_Kind.SelectedIndex = Val(DS.Tables(0).Rows(Cindx).Item(2))
           Txt_PWD.Text = DS.Tables("Tab_Users").Rows(Cindx).Item(4)

           If DS.Tables(0).Rows(Cindx).Item(3) = 1 Then Rdbt_User_Active.Checked = True
           If DS.Tables(0).Rows(Cindx).Item(3) = 0 Then Rdbt_User_Not_Active.Checked = True

           Da.Dispose() : Da = Nothing : closeDB()
       Catch ex As Exception
           MsgBox(ex.Message)
       End Try
       'عرض كل بيانات المستخدم بعد اختياره من اللست بوكس    
       '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
اخي الكريم لما لا  تربط كل الادوات بمصدر واحد؟.
هل سؤالك نفس السؤال هنا  خصوصا ردي هذا؟.
(03-09-17, 05:48 PM)سعود كتب : [ -> ]اخي الكريم لما لا  تربط كل الادوات بمصدر واحد؟.
هل سؤالك نفس السؤال هنا  خصوصا ردي هذا؟.

أشكرك أخي سعود نعم هو السؤال
لكني جربت اربطهم من نفس المصدر وتظهر نفس الرسالة
لكني سأجرب الأن كما بالمثال وجزاكم الله خيرا
(03-09-17, 05:48 PM)سعود كتب : [ -> ]اخي الكريم لما لا  تربط كل الادوات بمصدر واحد؟.
هل سؤالك نفس السؤال هنا  خصوصا ردي هذا؟.

جزاك الله خيرا أخي الكريم سعود
انا ربطت اللست بوكس بالداتا تيبل ماعندي مشكلة
لكن
أريد عند اختيار اسم من اللست بوكس تظهر بياناته في التسكتات لكي يتم التعديل عليه
(03-09-17, 09:07 PM)Abdelazez.Ahmad كتب : [ -> ]
(03-09-17, 05:48 PM)سعود كتب : [ -> ]اخي الكريم لما لا  تربط كل الادوات بمصدر واحد؟.
هل سؤالك نفس السؤال هنا  خصوصا ردي هذا؟.

جزاك الله خيرا أخي الكريم سعود
انا ربطت اللست بوكس بالداتا تيبل ماعندي مشكلة
لكن
أريد عند اختيار اسم من اللست بوكس تظهر بياناته في التسكتات لكي يتم التعديل عليه

قصدي اخي الكريم انك مخير بين عدة امور ولقد ذكرت لك ابسطها وهي انك لو ربط مربعات النص بنفس المصدر فلن تحدث مشكلة مادام ان الداتاتيبل ليست مفرغة.
الخيار الثاني انك تربط فقط الليست بوكس وتقوم بالاسناد بالشكل التالي:
كود :
tname.text=dt(listbox1.selectedindex)(1)
mobile.text=dt(listbox1.selectedindex)(2)

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


أنا أريد

1  - تعبئة اللست بوكس في بداية تحمل الفورم ( بدون تعبئة التكستات في الفورم لود )

2 - عند اختيار اي اسم من اللست بوكس تظهر بياناته في التكستات ليتم التعديل عليه
جزاك الله خيرا
(04-09-17, 03:07 AM)Abdelazez.Ahmad كتب : [ -> ]أشكرك أخي الكريم / سعود لتعبك معي جزاكء الله خيرا
انا طبقت بالمثال المرفق ولكن توجد أخطاء كثيرة 
انا استعمل سكوال سيرفر


أنا أريد

1  - تعبئة اللست بوكس في بداية تحمل الفورم ( بدون تعبئة التكستات في الفورم لود )

2 - عند اختيار اي اسم من اللست بوكس تظهر بياناته في التكستات ليتم التعديل عليه
جزاك الله خيرا

اخي الكريم انت لازم تعدل على المثال ... لان تعرف حتى لو المثال سويته لـ sqlserver اكيد حيكون مختلف ونقع في مشاكل اخرى ..فلذلك بارك الله فيك الطريقة واحدة مع DataTable او Dataset سواء في MicrosoftAccess او Sqlserver
 
شوف الاكواد وعدل ما يلزم ومثالي الاخير فيه اللي انت طبته لم اربط مربعات النص وانما فقط تعبئة عبر خاصية Text.

وجدت خطا 
كود :
 If connDB.State <> ConnectionState.Closed Then connDB.Close()
If connDB.State <> ConnectionState.Open Then connDB.Open()

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

كود :
Public Class Form2
    Dim constring As String = "Data Source=(Local)\sqlexpress;Initial Catalog=elec;MultipleActiveResultSets=False;Trusted_Connection=True;"
    Dim con As New SqlClient.SqlConnection(constring)
    Dim dt As DataTable
    Dim da2 As SqlClient.SqlDataAdapter
    Dim cmd As SqlClient.SqlCommandBuilder
    Private Sub gd()
        dt = New DataTable
        da2 = New SqlClient.SqlDataAdapter("select * from Tab_Users", con)
        cmd = New SqlClient.SqlCommandBuilder(da2)
        da2.Fill(dt)
        ListBox1.DataSource = dt
        ListBox1.DisplayMember = dt.Columns(1).ColumnName.ToString
    End Sub
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        gd()
    End Sub
    Private Sub ListBox1_MouseClick(sender As Object, e As MouseEventArgs) Handles ListBox1.MouseClick
        If e.Button = Windows.Forms.MouseButtons.Left Then
            TextBox1.Text = dt(ListBox1.SelectedIndex)(1)
            TextBox2.Text = dt(ListBox1.SelectedIndex)(2)
            TextBox3.Text = dt(ListBox1.SelectedIndex)(3)
        End If
    End Sub
End Class

فيه حركة حلوة بالكود حتى لو غيرت باسماء الاعمدة لن يتاثر الكود....قلت الاعمدة وليس اسم الجدولSmile
(04-09-17, 05:31 AM)سعود كتب : [ -> ]سويت فورم جديد وتم المطلوب

كود :
Public Class Form2
   Dim constring As String = "Data Source=(Local)\sqlexpress;Initial Catalog=elec;MultipleActiveResultSets=False;Trusted_Connection=True;"
   Dim con As New SqlClient.SqlConnection(constring)
   Dim dt As DataTable
   Dim da2 As SqlClient.SqlDataAdapter
   Dim cmd As SqlClient.SqlCommandBuilder
   Private Sub gd()
       dt = New DataTable
       da2 = New SqlClient.SqlDataAdapter("select * from Tab_Users", con)
       cmd = New SqlClient.SqlCommandBuilder(da2)
       da2.Fill(dt)
       ListBox1.DataSource = dt
       ListBox1.DisplayMember = dt.Columns(1).ColumnName.ToString
   End Sub
   Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       gd()
   End Sub
   Private Sub ListBox1_MouseClick(sender As Object, e As MouseEventArgs) Handles ListBox1.MouseClick
       If e.Button = Windows.Forms.MouseButtons.Left Then
           TextBox1.Text = dt(ListBox1.SelectedIndex)(1)
           TextBox2.Text = dt(ListBox1.SelectedIndex)(2)
           TextBox3.Text = dt(ListBox1.SelectedIndex)(3)
       End If
   End Sub
End Class

فيه حركة حلوة بالكود حتى لو غيرت باسماء الاعمدة لن يتاثر الكود....قلت الاعمدة وليس اسم الجدولSmile

جزاك الله أخي الكريم / سعود
جاري التجربة
نعم فاهمك لانك مرقم الأعمدة ولم تناد عليها باسماءها
كود :
       If e.Button = Windows.Forms.MouseButtons.Left Then
           TextBox1.Text = dt(ListBox1.SelectedIndex)(1)
           TextBox2.Text = dt(ListBox1.SelectedIndex)(2)
           TextBox3.Text = dt(ListBox1.SelectedIndex)(3)
       End If
ولكن لي عدة أسئلة إن استطعت إلي جوابها سبيلاً
1  - ما هو نوع الاتصال الذي استخدمته في المثال الذي تكرمت بارساله لي
2 - أنا عندي خلفية بسيطة عن الفارق بين
SqlCommandBuilder
و
SqlCommand
فلما فضلت التعامل مع SqlCommandBuilder
وما هو دور Cmd في المثال الذي أرسلته ؟
كود :
   Private Sub gd()
       dt = New DataTable
       da2 = New SqlClient.SqlDataAdapter("select * from Tab_Users", con)
       cmd = New SqlClient.SqlCommandBuilder(da2)
       da2.Fill(dt)
       ListBox1.DataSource = dt
       ListBox1.DisplayMember = dt.Columns(1).ColumnName.ToString
   End Sub
الصفحات : 1 2