الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة تؤرقني بعد ترتيب عناصر الليست بوكس أبجديا

بدأه ميدو صلاح في 11 يونيو 2010 · 12 رد · 1,468 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أنا لدي listbox يقوم بعرض عناصر من حقل اسم الموظف في قاعدة البيانات وتم العمل وعندما أقوم بالضغط على العنصر يتم عرض جميع سجلات هذا الموظف داخل التكست بوكس في الفورم وكتبت الأوامر ونجحت تمام ...... ولكن المشكلة التي تقابلني وهي عند تغيير خاصية sort داخل ليست بوكس لعرض الأسماء مرتبة أيجديا وجدت أن عند الضغط على اسم موظف يعرض لي سجلات موظف آخر حسب الطريقة الأولى وهي أنه يعتمد على ترتيب العناصر داخل القاعدة وليس داخل الليست بوكس حاولت بكتابة جمل SQL لعرض السجلات حسب الاسم في الليست بوكس ما نفع

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

من لديه الحل أرجو التكرم بمعرفتي إياه وشكرا

#2
ميدو صلاح كتب:

السلام عليكم ورحمة الله وبركاته

أنا لدي listbox يقوم بعرض عناصر من حقل اسم الموظف في قاعدة البيانات وتم العمل وعندما أقوم بالضغط على العنصر يتم عرض جميع سجلات هذا الموظف داخل التكست بوكس في الفورم وكتبت الأوامر ونجحت تمام ...... ولكن المشكلة التي تقابلني وهي عند تغيير خاصية sort داخل ليست بوكس لعرض الأسماء مرتبة أيجديا وجدت أن عند الضغط على اسم موظف يعرض لي سجلات موظف آخر حسب الطريقة الأولى وهي أنه يعتمد على ترتيب العناصر داخل القاعدة وليس داخل الليست بوكس حاولت بكتابة جمل SQL لعرض السجلات حسب الاسم في الليست بوكس ما نفع

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

من لديه الحل أرجو التكرم بمعرفتي إياه وشكرا

أخي الكريم ممكن تكتب لنا جملة الإستعلام التلي تسخدمها

#3

حاضر يا أخي الكريم

هذا الكود الخاص بالليست بوكس اللي استخدمته

    Private Sub ListBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.Click
        Try
            clearbinding()   ' خاص بتفريغ التكست بوكس الموجود على الفورم
            binding()  ' خاص بربط التكست بوكس بالحقول في الداتا بيز
            Me.BindingContext(Ds, "users").Position = ListBox1.SelectedIndex
            RowP = ListBox1.SelectedIndex
            ViewRecord(RowP)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

وكذلك أخي الكريم قمت بكتابة الكود التالي

    Private Sub ListBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.Click
        Dim Istt1 As Integer
        Dim dsstt1 As New DataSet
        Dim user As String
        user = ListBox1.SelectedIndex
        Dim sglstt1 As String = "SELECT * FROM users WHERE user_name='" & user & "'"
        Dim DataAdapterst1 As New OleDbDataAdapter(sglstt1, cn)
        DataAdapterst1.Fill(dsstt1, "st_student")
        txtuserno.Text = dsstt1.Tables("st_student").Rows(Istt1).Item("fullname")
        txtusername.Text = dsstt1.Tables("st_student").Rows(Istt1).Item("alsaf")
        txtpassword1.Text = dsstt1.Tables("st_student").Rows(Istt1).Item("alfasel")
        txtbasicopen.Text = dsstt1.Tables("st_student").Rows(Istt1).Item("basicopenfunction")
        txtbasicadd.Text = dsstt1.Tables("st_student").Rows(Istt1).Item("basicaddfunction")
        txtbasicedit.Text = dsstt1.Tables("st_student").Rows(Istt1).Item("basiceditfunction")
    End Sub

ولكن نفس المشكلة لا يوجد جديد

أرجو أن يكون الكود واضح

وشكرا

#4

بسم الله الرحمن الرحيم

اخى العزيز

بدل ما تعمل sort لل listbox

ما تعمل sort لل query نفسها

Dim sglstt1 As String = "SELECT * FROM users WHERE user_name='" & User1 & "' order by fullname"
#5

اخي الكريم جزاك الله خيرا

ولكن قابلتي مشكلة تانية وهي عملية التعديل على السجل الحالي من ناحية عدم تطابق ترتيب القاعدة مع الترتيب في الليست بوكس

حيث أني عندما أكتب جملة update يظهر لي عدم تطابق نوع البيانات في تعبير المعايير

بالرغم من أني وضعت عبارة TRue داخل التكست بوكس وعبارة False داخل التكست بوكس بناء على التغيير في الكمبوبوكس مثل ما يلي

            Connect()
            Dim cmd As New OleDbCommand
            cmd.CommandText = "update users set user_name='" & Trim(txtusername.Text) & "',user_password='" & Trim(txtpassword1.Text) & "',basicopenfunction='" & Trim(txtbasicopen.Text) & "',basicaddfunction='" & Trim(txtbasicadd.Text) & "',basiceditfunction='" & Trim(txtbasicedit.Text) & "',accountopenfunction='" & Trim(txtratebopen.Text) & "',accountaddfunction='" & Trim(txtratebadd.Text) & "',accounteditfunction='" & Trim(txtratebedit.Text) & "',accountdelfunction='" & Trim(txtratebdel.Text) & "',maintainopenfunction='" & Trim(txtmaintainopen.Text) & "',maintainaddfunction='" & Trim(txtmaintainadd.Text) & "',maintaineditfunction='" & Trim(txtmaintainedit.Text) & "',maintaindelfunction='" & Trim(txtmaintaindel.Text) & "',rptopenfunction='" & Trim(txtrptopen.Text) & "',rptaddfunction='" & Trim(txtrptadd.Text) & "',rpteditfunction='" & Trim(txtrptedit.Text) & "',rptdelfunction='" & Trim(txtrptdel.Text) & "',controlopenfunction='" & Trim(txtcontrolopen.Text) & "',controladdfunction='" & Trim(txtcontroladd.Text) & "',controleditfunction='" & Trim(txtcontroledit.Text) & "',controldelfunction='" & Trim(txtcontroldel.Text) & "' where user_no = " & Trim(txtuserno.Text) & ""
            cmd.Connection = cn
            cmd.ExecuteNonQuery()
            cn.Close()
            MessageBox.Show("تمت عملية التعديل بنجاح", "برنامج مركز الخدمات التربوية المسائية")

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

بارك الله فيكم

#6

بسم الله الرحمن الرحيم

اخى العزيز

يعنى رسالة الخطا اللى بتظهر بتقول لك

ان

اقتباس

عدم تطابق نوع البيانات في تعبير المعايير

لو ده صح اتوقع ان السبب فى كده

ده

اقتباس

where user_no = " & Trim(txtuserno.Text) & ""

لأنه المفروض هى كده

where user_no = '" & Trim(txtuserno.Text) & "'"
#7
ميدو صلاح كتب:

حاضر يا أخي الكريم

هذا الكود الخاص بالليست بوكس اللي استخدمته

    Private Sub ListBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.Click
        Try
            clearbinding()   ' خاص بتفريغ التكست بوكس الموجود على الفورم
            binding()  ' خاص بربط التكست بوكس بالحقول في الداتا بيز
            Me.BindingContext(Ds, "users").Position = ListBox1.SelectedIndex
            RowP = ListBox1.SelectedIndex
            ViewRecord(RowP)
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

وكذلك أخي الكريم قمت بكتابة الكود التالي

    Private Sub ListBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.Click
        Dim Istt1 As Integer

        Dim dsstt1 As New DataSet
        Dim user As String
        user = ListBox1.SelectedIndex
        Dim sglstt1 As String = "SELECT * FROM users WHERE user_name='" & user & "'"
        Dim DataAdapterst1 As New OleDbDataAdapter(sglstt1, cn)
        DataAdapterst1.Fill(dsstt1, "st_student")
        txtuserno.Text = dsstt1.Tables("st_student").Rows(Istt1).Item("fullname")
        txtusername.Text = dsstt1.Tables("st_student").Rows(Istt1).Item("alsaf")
        txtpassword1.Text = dsstt1.Tables("st_student").Rows(Istt1).Item("alfasel")
        txtbasicopen.Text = dsstt1.Tables("st_student").Rows(Istt1).Item("basicopenfunction")
        txtbasicadd.Text = dsstt1.Tables("st_student").Rows(Istt1).Item("basicaddfunction")
        txtbasicedit.Text = dsstt1.Tables("st_student").Rows(Istt1).Item("basiceditfunction")
    End Sub

ولكن نفس المشكلة لا يوجد جديد

أرجو أن يكون الكود واضح

وشكرا

أخي الكريم أسف على التأخير

سأرد عليك حالما أجد الحل إن شاء الله

تم تعديل هذه المشاركة بواسطة DOWNLOADER في 13 يونيو 2010 في 13:18

#8
DOWNLOADER كتب:

أخي الكريم أسف على التأخير

ما المقصود ب USER إذا رقم الموظف

أتوقع أنو المشكلة أول عنصر في LISTBOX بيأخذ القيمة 0 وليس 1 لذالك أكتب :

RowP = ListBox1.SelectedIndex+1

بدلا من RowP = ListBox1.SelectedIndex

user = ListBox1.SelectedIndex+1

بدل من

user = ListBox1.SelectedIndex

أما إذا كان قصدك أنو USER هو الإسم الظاهر في LISTBOX

إستخدم LISTBOX1.SELECTEDITEM

بدلا من LISTBOX1 .SELECTED.INDEX

تم تعديل هذه المشاركة بواسطة DOWNLOADER في 13 يونيو 2010 في 14:04

#9

أخواني الكرام أشكرك لحسن اهتمامكم وبارك الله فيكم

ولكن المشكلة في عدم تطابق البيانات هي في اسناد القيمة true أو false من التكست بوكس إلى الحقل الموجود في قاعدة البيانات فانظروا يا اخواني إلى الكود التالي

            Connect()
            Dim cmd As New OleDbCommand
            cmd.CommandText = "update users set user_name='" & Trim(txtusername.Text) & "',user_password='" & Trim(txtpassword1.Text) & "',basicopenfunction='" & Trim(txtbasicopen.Text) & "',basicaddfunction='" & Trim(txtbasicadd.Text) & "',basiceditfunction='" & Trim(txtbasicedit.Text) & "',accountopenfunction='" & Trim(txtratebopen.Text) & "',accountaddfunction='" & Trim(txtratebadd.Text) & "',accounteditfunction='" & Trim(txtratebedit.Text) & "',accountdelfunction='" & Trim(txtratebdel.Text) & "',maintainopenfunction='" & Trim(txtmaintainopen.Text) & "',maintainaddfunction='" & Trim(txtmaintainadd.Text) & "',maintaineditfunction='" & Trim(txtmaintainedit.Text) & "',maintaindelfunction='" & Trim(txtmaintaindel.Text) & "',rptopenfunction='" & Trim(txtrptopen.Text) & "',rptaddfunction='" & Trim(txtrptadd.Text) & "',rpteditfunction='" & Trim(txtrptedit.Text) & "',rptdelfunction='" & Trim(txtrptdel.Text) & "',controlopenfunction='" & Trim(txtcontrolopen.Text) & "',controladdfunction='" & Trim(txtcontroladd.Text) & "',controleditfunction='" & Trim(txtcontroledit.Text) & "',controldelfunction='" & Trim(txtcontroldel.Text) & "' where user_no =" & Trim(txtuserno.Text) & ""
            cmd.Connection = cn
            cmd.ExecuteNonQuery()
            cn.Close()
            MessageBox.Show("تمت عملية التعديل بنجاح", "برنامج مركز الخدمات التربوية المسائية")

فأنا عندما قمت بحذف جميع الجمل المنطقية من الكود مثل ما يلي

            Connect()
            Dim cmd As New OleDbCommand
            cmd.CommandText = "update users set user_name='" & Trim(txtusername.Text) & "',user_password='" & Trim(txtpassword1.Text) & "' where user_no =" & Trim(txtuserno.Text) & ""
            cmd.Connection = cn
            cmd.ExecuteNonQuery()
            cn.Close()
            MessageBox.Show("تمت عملية التعديل بنجاح", "برنامج مركز الخدمات التربوية المسائية")

عمل الكود بنجاح وتم التعديل فعلا على اسم المستخدم وكلمة المرور فالحين المشكلة في كتابة الكود بالنسبة للحقول المنطقية TRue أو False فكتابة الكود بوضع علامة ' هذا خاص بالحقل النصي كما في الكود الأول ولكنه لم ينفع

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

أرجو أن تكون المشكلة وضحت للجميع فعندما أحفظ في حقل منطقي أقوم مثلا بإسناد القيمة true إذا كان الكمبوبوكس يحتوي على علامة "نعم" أو العكس

ولكن في كود update لم أستطع كتابة هذا الشرط لأن الحقول كثيرة مثلما موضح في الأكواد

شاكر لكن من ساهم في مساعدتي وأسف إذا كنت أطلت عليكم في الحديث

في انتظار الحلول ومشكورين مرة أخرى

تم تعديل هذه المشاركة بواسطة ميدو صلاح في 14 يونيو 2010 في 07:13

#10

على حسب فهمي لردك الأخير فأنت تحاول كتابة متغير من نوع نصي إلى حقل من نوع منطقي وهذا من المؤكد أنه خطأ.

هل هذا ما تقصد أخي الكريم

تم تعديل هذه المشاركة بواسطة بن ملعاط في 14 يونيو 2010 في 12:01

اللهم اغفر لي و لوالدي و للمؤمنين يوم يقوم الحساب

لا إله إلا الله عدد ما كان و عدد ما يكون و عدد الحركات و السكون

#11
بن ملعاط كتب:

على حسب فهمي لردك الأخير فأنت تحاول كتابة متغير من نوع نصي إلى حقل من نوع منطقي وهذا من المؤكد أنه خطأ.

هل هذا ما تقصد أخي الكريم

فعلا أخي الكريم هذا هو المشكلة بالنسبة لي فأنا وضعت القيمة true أو False داخل تكست بوكس واريد حفظ هذه القيمة داخل القاعدة وهي من نوع (نعم/لا) أي حقل منطقي فإذا كنت تعرف كيفية كتابة جملة التعديل update مثل الموجود في المشاركة السابقة يقى جزاك الله خيرا وربنا يبارك فيك فهذه هي المشكلة بالنسبة لي كيفية تخزين القيمة true مثلا في قاعدة البيانات علما بأن كود الحفظ شغال تمام بس المشكلة في طريقة كتابة كود update مثل السابق

وجزاكم الله خيرا أنا تعبتكم معايا أعذروني واسف مرة أخرى إذا كنت أطلت عليكم

#12
,basiceditfunction='" & If(Trim(txtbasicedit.Text)="نعم",True,False)

بكل بساطة إعمل جملة شرطية إذا كانت قيمة التكست بوكس نعم يسجل في مكانه قيمة منطقية True

كما في المثال

اللهم اغفر لي و لوالدي و للمؤمنين يوم يقوم الحساب

لا إله إلا الله عدد ما كان و عدد ما يكون و عدد الحركات و السكون

#13

بارك الله فيك أخي الكريم

أشكرك على الكود

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…