تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشكلة في الكمبوبوكس
#1
السلام عليكم ورحمه الله 

عندي مشكلة بالكمبوبوكس لما اختار سجل المفترض يظهرلي نص يظهر رقم وانا مسوي displayMember لكن بالاستدعاء يظهر الرقم 

PHP كود :
 FillDepartments()
 
       cmbDep.DataSource dtdepa
        cmbDep
.DisplayMember "DepName"
 
       cmbDep.ValueMember "id" 

المفترض لما اختار السجل يظهر اسم القسم لكن يظهرلي رقمه 


ومشكلة ثانية لما يجلب البيانات مايجيب نفس رقم القسم يختار اول اندكس مثلا رقم 1 والرقم المفترض هو 4 مما يسبب لخبطة خاصة اذا كان فيه اكثر من كمبو بوكس من عدة جداول 

حاولت ارفق المثال بس ماضبط مادري وش المشكلة 

كود اختيار السجل 

PHP كود :
'زر اختيار
        id = DataGridView1.CurrentRow.Cells(0).Value
        cmbEmp.Text = DataGridView1.CurrentRow.Cells(1).Value
        cmbDep.Text = DataGridView1.CurrentRow.Cells(2).Value
        cmbCer.Text = DataGridView1.CurrentRow.Cells(3).Value
        txtSalary.Text = DataGridView1.CurrentRow.Cells(4).Value
        dtpDateNomin.Value = DataGridView1.CurrentRow.Cells(5).Value
        txtExperience.Text = DataGridView1.CurrentRow.Cells(6).Value
        txtPhone.Text = DataGridView1.CurrentRow.Cells(7).Value 

وهذا زر كود الاضافة بالاسفل


PHP كود :
 'زر اضافة
        dt.Rows.Add()
        Dim last As Integer = dt.Rows.Count - 1
        dt.Rows(last).Item("infoEmpID") = cmbEmp.SelectedValue
        dt.Rows(last).Item("infoCertID") = cmbCer.SelectedValue
        dt.Rows(last).Item("infoDepID") = cmbDep.SelectedValue
        dt.Rows(last).Item("infoExpe") = txtExperience.Text
        dt.Rows(last).Item("infoPhone") = txtPhone.Text
        dt.Rows(last).Item("infoSalary") = txtSalary.Text
        dt.Rows(last).Item("infoNomin") = dtpDateNomin.Value
        Dim save As New OleDbCommandBuilder(da)
        da.Update(dt)
        dt.AcceptChanges()
        MessageBox.Show("تمت الاضافة بنجاح")
        Filldgv()
        newInfor() 



وكود التعديل 



PHP كود :
  Dim str As String "Update informations set infoEmpID=@infoEmpID,infoDepID=@infoDepID,infoCertID=@infoCertID,infoSalary=@infoSalary,infoNomin=@infoNomin,infoExpe=@infoExpe,infoPhone=@infoPhone where id= " DataGridView1.CurrentRow.Cells(0).Value
        cmd 
= New OleDbCommand(strcon)
 
       cmd.Parameters.Add(New OleDbParameter("@infoEmpID"OleDbType.Integer)).Value cmbEmp.SelectedValue
        cmd
.Parameters.Add(New OleDbParameter("@infoDepID"OleDbType.Integer)).Value cmbDep.SelectedValue
        cmd
.Parameters.Add(New OleDbParameter("@infoCertID"OleDbType.Integer)).Value cmbCer.SelectedValue
        cmd
.Parameters.Add(New OleDbParameter("@infoSalary"OleDbType.Currency)).Value txtSalary.Text
        cmd
.Parameters.Add(New OleDbParameter("@infoNomin"OleDbType.Date)).Value dtpDateNomin.Value
        cmd
.Parameters.Add(New OleDbParameter("@infoExpe"OleDbType.VarChar)).Value txtExperience.Text
        cmd
.Parameters.Add(New OleDbParameter("@infoPhone"OleDbType.VarChar)).Value txtPhone.Text
        con
.Open()
 
       cmd.ExecuteNonQuery()
 
       con.Close()
 
       MessageBox.Show("تم التعديل بنجاح")
 
       Filldgv()
 
       newInfor() 

 وكود الحذف


PHP كود :
  'زر حذف
        Dim msg As String = String.Format("هل أنت متأكد من حذف القسم  {0}", DataGridView1.CurrentRow.Cells(1).Value.ToString())
        If (MessageBox.Show(msg, "تأكيد الحذف", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign)) <> Windows.Forms.DialogResult.Yes Then Return
        '
رسالة عبارة عن سؤال اذا اختار نعم تم الحذف اذا لا  لم تتم عملية الحذف
        Dim cmd 
As New OleDbCommand("delete from informations where id= " DataGridView1.CurrentRow.Cells(0).Valuecon)
 
       con.Open()
 
       cmd.ExecuteNonQuery()
 
       con.Close()
 
       MessageBox.Show(" تمت عملية حذف البيانات بنجاح ""تم الحذف"MessageBoxButtons.OKMessageBoxIcon.Information



وكود تفريغ الادوات  اسمه  newInfor()

PHP كود :
'تفريغ الادوات
        cmbEmp.Text = ""
        cmbCer.Text = ""
        cmbDep.Text = ""
        txtExperience.Text = ""
        txtPhone.Text = ""
        txtSalary.Text = ""
        dtpDateNomin.Value = Now.Date 

وشكرا لكم جميعا
الرد
تم الشكر بواسطة:
#2
يفضل ان ترفق مثال مبسط حتى يمكن معرفة طريقة جلب البيانات
الرد
تم الشكر بواسطة: الوايلي
#3
تم الحل ولله الحمد 
المشكلة كانت هي في استدعاء البيانات من الداتا جريد فيو الى الأدوات لانها تاتي ارقام وهذا طبيعي كونها داخل قاعدة البيانات ارقام 
لكن المشكلة الحقيقة عند تعديل البيانات تتغير التي في الكمبوبوكس المربوطة مع جداول أخرى لأود اندكس وهو رقم واحد رغم اني لاأغيرها حيث اقوم بتعديل بيانات اخرى 
'زر اختيار

PHP كود :
'زر اختيار
        '
id DataGridView1.CurrentRow.Cells(0).Value
        
'cmbEmp.Text = DataGridView1.CurrentRow.Cells(1).Value
        '
cmbDep.Text DataGridView1.CurrentRow.Cells(2).Value
        
'cmbCer.Text = DataGridView1.CurrentRow.Cells(3).Value
        '
txtSalary.Text DataGridView1.CurrentRow.Cells(4).Value
        
'dtpDateNomin.Value = DataGridView1.CurrentRow.Cells(5).Value
        '
txtExperience.Text DataGridView1.CurrentRow.Cells(6).Value
        
'txtPhone.Text = DataGridView1.CurrentRow.Cells(7).Value 

وقد قمت بتغيير الكود لهذا
PHP كود :
Dim str As String " SELECT informations.ID, Employees.NameEmp, Departments.DepName, Certificates.CertName, informations.infoSalary, informations.infoNomin, informations.infoExpe, informations.infoPhone FROM Employees , Departments , Certificates , informations where Certificates.ID=informations.infoCertID and Departments.ID=informations.infoDepID and Employees.ID=informations.infoEmpID and informations.ID=" DataGridView1.CurrentRow.Cells(0).Value
        Dim cmd 
As New OleDbCommand(strcon)
 
       con.Open()
 
       Dim dr As OleDbDataReader cmd.ExecuteReader
        dr
.Read()
 
       If dr.HasRows Then
            id 
dr(0)
 
           cmbEmp.Text dr(1)
 
           cmbDep.Text dr(2)
 
           cmbCer.Text dr(3)
 
           txtSalary.Text dr(4)
 
           dtpDateNomin.Value dr(5)
 
           txtExperience.Text dr(6)
 
           txtPhone.Text dr(7)
 
       End If
 
       dr.Close()
 
       con.Close() 


يوجد مثال مرفق 
وشكرا لكم


الملفات المرفقة
.rar   WindowsApplication1.rar (الحجم : 131.09 ك ب / التحميلات : 25)
الرد
تم الشكر بواسطة:
#4
أرح نفسك واستخدم ربط الأدوات بالمعالج
الرد
تم الشكر بواسطة: الوايلي
#5
الله يجزاك خير استاذ طالب برمجة 
مشكور على ردودك الرائعة وحلولك الفعالة 
بس المعالج ماارتاح في التعامل معاه ابدا أحب التعامل مع الاكواد وجمل السكول 
والله يجزاك خير
الرد
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم