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

البحث بالاسم والرقم في قاعدة البيانات ؟؟

مغلق
بدأه محبة الفجول في 6 نوفمبر 2005 · 8 رد · 1,091 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كل عام وانتم بخير

أخواني أنا عندي برنامج بالفجول مرتبط بقاعدة بيانات الأكسس مكونة من عدة جداول ولكنني عملت استعلام به الحقول التي أريدها واستعملته في برنامجي للاتصال وأيضاً في ال OleDbDataAdapter وتصميم البرنامج مكون من 3فورمات الأولى هي عبارة عن عرض للبيانات Data Grid

الفورمة الثانية عبارة عن عدد من ال textbox والعمليات الموجودة علية من مسح وإضافة وحذف وبحث بحث أنه عندما يضغط على بحث ينتقل إلى الفورمة الثالثة التي يوجد بها زرين للاختيار Radio Button بحيث يختار طريقة البحث إما باسم الكتاب وإما برقمه وعندما يختار بحث برقم الكتاب يطلع له input box يطلب منه إدخال رقم الكتاب وعندما يدخله يرجع الفورمة الثانية وتطلع نتيجة البحث للرقم الذي اختاره في ال textbox ونفس الحالة مع البحث باسم الكتاب

ولكن المشكلة هو عندما اشغل البرنامج ما يشتغل إلا البحث بالرقم ولكن لما أضغط بحث بالاسم ما يصير أي شيء مع ملاحظة أني عندما برمجة الفورمة الثالثة التي فيها زرين للاختيار Radio Button وضعت زر button وكتبت عليه بحث وبرمجته بالشكل التالي

Public x As Integer

Public y As String

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

If RadioButton1.Checked = True Then

x = InputBox("enter your patient_id")

ElseIf RadioButton2.Checked = True Then

y = InputBox("enter your patient_name")

End If

Me.Close()

End Sub

وفي الفورمة الثانية عند زر الأمر بحث كتبت الكود التالي

Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click

Dim f3 As New Form3()

f3.ShowDialog()

Dim secom As New OleDbCommand()

Dim recom As OleDbDataReader

secom.Connection = OleDbConnection1

If f3.x <> 0 Then

secom.CommandText = "select* from patient where patient_id like '" & Trim(f3.x) & "' "

ElseIf f3.y <> " " Then

secom.CommandText = "select* from patient where patient_name like '" & Trim(f3.y) & "' "

End If

OleDbConnection1.Open()

recom = secom.ExecuteReader

If recom.Read() Then

TextBox1.Text = recom.GetValue(0)

TextBox2.Text = recom.GetValue(1)

TextBox3.Text = recom.GetValue(2)

TextBox4.Text = recom.GetValue(3)

TextBox5.Text = recom.GetValue(4)

TextBox6.Text = recom.GetValue(5)

Else

MsgBox("المريض غير موجود")

End If

recom.Close()

OleDbConnection1.Close()

End Sub

ونفسي أحد ينبهني أين موضع الخطأ !!!!!!!!!!!!!

لأنه يبحث بالرقم بشكل سليم المشكلة بس في الاسم !!!!!!!!!!!!

#2
        Dim ConditionCriteria As Boolean = True
        If XpTextBox1.Text <> "" Then
            OleDbDataAdapter1.SelectCommand.CommandText = "select *from per where name like'" & XpTextBox1.Text & "%'"
        Else
            MessageBox.Show("هذا الاسم غير موجود", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            ConditionCriteria = False
            XpTextBox1.Focus()
        End If
        If ConditionCriteria = True Then
            OleDbDataAdapter1.Fill(DataSet11, "per")
            tel_information()   ' أستيل للداتا جريد
        End If
        Try

            tel_information()    ' أستيل للداتا جريد
            Me.DataGrid1.DataSource = DataSet11.Tables(1)
            Me.DataGrid1.PreferredColumnWidth = Me.DataGrid1.ClientSize.Width / 7
        Catch ex As Exception
            ex.ToString()
        End Try

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

تم تعديل هذه المشاركة بواسطة كفاح في 6 نوفمبر 2005 في 15:57

الفريق المصري للبرمجة

تحليل وتصميم برامج قواعد بيانات لاتصال بينا masry4u@hotmail.com

#3

السلام عليكم

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

  "WHERE patient_name LIKE '" & critera & "%'"

والله أعلم.

تم تعديل هذه المشاركة بواسطة الغملاسي في 6 نوفمبر 2005 في 16:05

في المثال يتضح المقال

#4

السلام عليكم...وأشكركم على سرعة التفاعل مع الموضوع

الأخ كفاح أنا إذا استخدمت الكود الذي كتبته سأضطر إلى تعريف اتصالين و كتابة كوديين في نفس الزر( بحث) الكود الأول للبحث عن الرقم والكود الثاني للبحث عن الاسم وأنا أريد أن أجمع الكوديين في أداة الشرطif else حتى لا أكتب الكود مرتين فقط من أجل عبارة Command text بشرط (where) الرقم أو بشرط (where)الاسم لذلك قمت بإستخدام if else كما في الكود السابق

If x <> 0 Then

secom.CommandText = "select* from book where bookid like '" & Trim(x) & "' "

ElseIf y <> " " Then

secom.CommandText = "select* from book where bookname like '" & Trim(y) & "' "

End If

وأكمل باقي الكود تبع البحث

ولكن كما ذكرت لكم يبحث بس بالرقم وبالاسم ما يبحث !!!!!1

الأخ الغملاسي أنا جربت النسبة المئوية لكن نفس الشيء ما اشتغل معي

أرجوكم ساعدوني ولكن ياريت مع الأكواد يكون فيه شرح لأني أحب الفجول مره كثير وفي نفس الوقت أنا مبتدئه جداً وما في وقت لازم أسلم البرنامج يوم السبت و أنا اشتغل على برنامجين من نفس الفكرة تقريباً وهي قاعدة بيانات للكتب و قاعدة بيانات لمستوصف ابن سيناء

ملاحظة أنا عندي فجول دوت نت 2002 ما عندي 2003

#5
اقتباس
secom.CommandText = "select* from book where bookname like '" & Trim(y) & "' "

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

والمشكلة هنا هي كما قال الأخ الغملاسي في إشارة % والتي تستخدم لتوسيع البحث كالتالي:

- إذا أردت البحث عن كامل السجل فلا تستخدم أي إشارة % ( كما في الكود الذي استخدمتيه)

- إذا أردت البحث عن السجلات التي يكون فيها نص البحث في بداية السجل ضع إشارة % في نهاية نص البحث مثال

"select * from myTable where name like 'fer%' "

يرجع السجلات مثل feras، ferdenand..... الخ

- إذا أردت البحث عن آخر السجل ضع إشارة % في بداية نص البحث

مثال

" select * from myTable where name like '%fer' "

يرجع السجلا مثل dafer , nafer , sleman abd al-gafer ...... الخ

- إذا أردت البحث عن نص البحث أينما وجد في السجل ضع إشارة % قبل وبعد نص البحث

مثال

"select * from myTable where name like '%fer%' "

-يرجع السجلات مثل Dafer,feras,nafer , ferdenand

وأيضاً السجلات مثل : deferance, haferan

وهنا يجب التنويه على أنني لم آت بشيء جديد وأنما أردت توضيح ما قصده الأخوين كفاح و الغملاسي

#6

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

أخواني أحب أشكركم جميعاً شكراً جزيلاً وجزاكم الله ألف خييييييييييييييير فعلاً اشتغل البرنامج وكان الشيء الناقص هو علامة النسبة المئوية وأشكر جميع الأخوان الأخ كفاح و الأخ الغملاسي والأخ haroon وأنا آسفة إذا كنت ثقلت عليكم وذلك لأنني مبتدئة في هذه اللغة الرائعة فجول بيسك دوت نت كما أنني أول مرة أشارك في منتديات وكان لي الشرف إني أشارك في منتداكم الرائع والذي استفدت منه جداً وأشكركم جميعاً ولأني لقيت الحل أحب أقلكم إياه ليستفيد الجميع وهو موجود على الملف التالي المرفق

وعندي سؤال ثاني هل ممكن أحمل الفجول بيسك دوت نت 2003 وأنا عندي الفجول بيسك دوت نت 2002في نفس الجهاز وما يؤثر على البرامج التي كتبت في الإصدار 2002 لأني ناويه أنزل الفجول بيسك دوت نت 2003 على جهازي ؟ وأشكركم مرة أخرى ............

Compressed (zipped) Folder جديد.zip

#7

السلام عليكم مرفق مثال ان شاء الله يكون مفيد

New Folder.rar

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

برنامج الخبير لنقاط البيع المباشرة

#8

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

   
            OleDbConnection1.ConnectionString = "Provider=Microsoft.jet.oleDB.4.0;Data Source=" & Application.StartupPath & "\DataBaseName.mdb;"
            OleDbConnection1.Open()
            DataSet11.Clear()
            OleDbDataAdapter1.Fill(DataSet11)

ومن هذا الكود يجب اضافة قاعدة بجوار الملف التنفيذى لان هذا الخطأ شائع وخطير ويكتب هذا الكود اما فى Form load او او فى زر الاتصال والله اعلم ""

الفريق المصري للبرمجة

تحليل وتصميم برامج قواعد بيانات لاتصال بينا masry4u@hotmail.com

#9

السلام عليكم

الأخ waleedhm والأخ كفاح أشكركم شكراً جزيلاً وأحب أوضح لكم نقطة وهي أن المشروع إلي بشتغل عليه وهو مستوصف ابن سيناء شبيه جداً بمعالجة بيانات الكتب وفي هذا المشروع طالبين مننا إجراء الاتصال بقاعدة البيانات بطريقتين المعالج والكود البرمجي وفي المثال المرفق معالجة بيانات الكتب استخدمت طريقة المعالج أما استخدام الكود البرمجي فأنا سأخذ بنصيحة الأخ كفاح كما أنني وجدت مواضيع كثيرة في المنتدى بخصوص ابن سيناء لأنه مشروع مشترك في جميع الفروع للمعهد واستفدت من الردود على الأسئلة المطروحة .....

الأخ waleedhm أشكرك فقد استفدت من الملف المرفق في أنني ممكن أعمل البحث بطريقة ثانية باستخدام الfunction وأشكرك مره ثانية ولكن أنا عندي لك سؤال آخر بخصوص موضوعك الرائع طريق إضافة ComboBox بداخل DataGrid أنا جربت الموضوع لكن ما يطلع معي إلا اختيارين

data grid txtbox colum

data grid check box

وكمان هناك عبارة أخرى لم أفهما وهي قم باضافة dll المرفق عن طريق toolbox اضغط بلموس الايمن واختار add/remove وحدد مسار dll فقد بحثت في toolbox ولكن لم أجد dll وحاولت أنزل البرنامج المرفق لكن الملف ما يفتح عندي فياريت توضح لي الله يجزاك الف خير ..........

هذا الموضوع مغلق.

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

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

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

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

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