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

ميزة الإكمال التلقائي الرائعة من قواعد البيانات

مغلق
بدأه mangawy في 23 مارس 2007 · 6 رد · 886 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أتمنى أن أفيد أعضاء المنتدى بما أستطيع كما استفدت منهم كثيرا

وهذا مثال مرفق يوضح طريقة الإكمال التلقائي للـ TextBox من قاعدة بيانات

أسأل الله أن يجد من يستفيد منه

والسلام

autocompletecity.zip

#2

أولا - أهلا بك عضوا مفيدا في المنتدى

مثال حلو وإلى الأمام - وأرجو أن أرى المزيد من مواضيعك المفيدة

بس عندي طلب

ياريت تشرح الطريقة خطوة خطوة مشكورا حتى تكمل الفائدة من موضوعك إلى النهاية

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 23 مارس 2007 في 00:22

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#3

جزاك الله خير على الرد

وإن شاء الله اشرح الكود قريبا جدا حينما أجد الوقت مباشرة

والسلام

#4

شكرا اخى الكريم و اهلا بيك فى المنتدى صديق

و شكرا على هذا المثال

#5
bodaman22 كتب:
شكرا اخى الكريم و اهلا بيك فى المنتدى صديق

و شكرا على هذا المثال

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

محمد سامر أبو سلو كتب:
بس عندي طلب

ياريت تشرح الطريقة خطوة خطوة مشكورا حتى تكمل الفائدة من موضوعك إلى النهاية

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

شرح مبسط لميزة الإكمال التلقائي على TextBox من قاعدة بيانات

أولا : هذا الكود الكامل لتنفيذ الطريقة

Imports System.Data
Imports System.Data.OleDb
Public Class Frm1
	Friend strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\autocompletecity.mdb;User Id=admin;Password=;"
	Friend strSQL As String = "SELECT Name FROM city ORDER BY Name;"
	Friend cn As New OleDbConnection(strConn)
	Friend citydata As New OleDbDataAdapter(strSQL, cn)
	Private Sub Frm1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
		Dim TheSearchTable As DataTable = New DataTable
		Dim i As Integer
		cn.Open()
		citydata.Fill(TheSearchTable)
		txt1.AutoCompleteMode = AutoCompleteMode.SuggestAppend
		txt1.AutoCompleteSource = AutoCompleteSource.CustomSource
		If TheSearchTable.Rows.Count <> 0 Then
			For i = 0 To TheSearchTable.Rows.Count - 1
				txt1.AutoCompleteCustomSource.Add(TheSearchTable.Rows(i)(0))
			Next i
		End If
		cn.Close()
	End Sub
End Class

شرح الكود

تجهيز لوازم الاتصال بقاعدة البيانات

Imports System.Data
Imports System.Data.OleDb
Public Class Frm1
	Friend strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\autocompletecity.mdb;User Id=admin;Password=;"
	Friend strSQL As String = "SELECT Name FROM city ORDER BY Name;"
	Friend cn As New OleDbConnection(strConn)
	Friend citydata As New OleDbDataAdapter(strSQL, cn)

الآن العمليات الأساسية سوف تكون في حدث Form_Load

تكوين متغير من نوع DataTable وإنشاء جدول بيانات جديد فيه

 Dim TheSearchTable As DataTable = New DataTable

فتح الاتصال بقاعدة البيانات وتعبئة الجدول TheSearchTable بمحتواها

cn.Open()
citydata.Fill(TheSearchTable)

الآن محتوى قاعدة البيانات موجود بالذاكرة وتحديدا في الجدول TheSearchTable

سوف نقوم الآن بتعديل خواص الـ TextBox الموجود على الفورم والذي نريد إضافة ميزة الإكمال التلقائي له

وتعديل الخواص هنا سوف يكون بالكود و الـTextBox في مثالنا اسمه txt1

تحديد نمط الإكمال التلقائي سوف يكون اثناء الكتابة في tx1 وأيضا مع عرض كل الاقتراحات المشابهة

txt1.AutoCompleteMode = AutoCompleteMode.SuggestAppend

تحديد مصدر البيانات التي سوف تستخدم في عرض الاقتراحات للإكمال التلقائي على أنه مصدر مخصص

txt1.AutoCompleteSource = AutoCompleteSource.CustomSource

وبهذه الخاصية CustomSource يمكنك من إضافة عناصر الإكمال التلقائي بنفسك عنصر عنصر هكذا

txt1.AutoCompleteCustomSource.Add("مكة")
txt1.AutoCompleteCustomSource.Add("المدينة")
txt1.AutoCompleteCustomSource.Add("الأسكندرية")

ولكن في مثالنا سوف نضيف محتوى الجدول TheSearchTable إلى قائمة الإكمال التلقائي المخصص بدلا من كتابة العناصر

ملاحظة: محتوى الجدول هو حقل واحد(عمود واحد) به أسماء المدن

 If TheSearchTable.Rows.Count <> 0 Then
			For i = 0 To TheSearchTable.Rows.Count - 1
				txt1.AutoCompleteCustomSource.Add(TheSearchTable.Rows(i)(0))
			Next i
		End If

هكذا تمت إضافة العناصر إلى قائمة الإكمال التلقائي المخصصة

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

cn.Close()
		cn.Dispose()
		citydata.Dispose()
		TheSearchTable.Dispose()

والآن تمتع بميزة الإكمال التلقائي الرائعة

والسلام

تم تعديل هذه المشاركة بواسطة mangawy في 23 مارس 2007 في 13:24

#6

الأخ mangawy الآن اكتمل الموضوع

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

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#7

رائع أخى

قولنا الطريقة دى قبل كدة كذا مناسبة بس بقى بال Datareader لانه أسرع

 Dim cm As New OleDb.OleDbCommand(strSQL, cn)
		With cm.ExecuteReader
			While .Read
				txt1.AutoCompleteCustomSource.Add(.Item(0).ToString)
			End While
		End With

Practice makes perfect 2007*

البرمجة بلا انطباعات

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

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

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

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

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

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