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

سؤال تقني في Oop

بدأه Eng.Fedail في 30 سبتمبر 2008 · 7 رد · 830 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بنرى نبذه قليله عن الكود لكي تفهمو سؤالي

Public Function ShowSupervisor() As Boolean
			Dim sql As String = "SELECT * FROM SM_Supervisor WHERE ID=@ID"
			Dim cmd As New SqlClient.SqlCommand(sql, con)
			cmd.Parameters.AddWithValue("@ID", ID)
			Dim dr As SqlClient.SqlDataReader

			con.Open()
			dr = cmd.ExecuteReader()
			Try
				While (dr.Read)
					UserName = dr.GetString(1)
					Password = dr.GetString(2)
					FullName = dr.GetString(3)
					Email = dr.GetString(4)
					Mobile = dr.GetString(5)
					Phone = dr.GetString(6)
					Location = dr.GetString(7)
					Birthday = dr.GetString(8)
					dtRegister = dr.GetString(9)
					Department = dr.GetString(10)
					Wedget = dr.GetString(11)
					Statues = dr.GetString(12)
					DESC = dr.GetString(13)
				End While
				dr.Close()
				con.Close()
			Catch ex As Exception
				Return True
			End Try

		End Function

Public Function ShowSupervisor(ByVal _ID As String) As String
		Dim supervisor As New User.Admin
		Dim list As List(Of s
		Return List

	End Function

هنا اريد أن أعيد القيمة كيف اعيد جميع القيم وماذا اعرفها

الشيء الآخر إذا أردت أن أعيد Table كامل وليس مجرد ريكورد إذن لن استطيع استعمال reader هل يجب أن اعيد عن طريق DATASET أو أستطيع أن اعرف بطريقه أخرى أنا اذكر أني شاهدتها من قبل بنفس طريقة array of T

joseph.gif

logo.gif

CCNA 640-802

مدونتي

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

اما ان تستخدم IEnumerable of objects زي array/list of strings كـ method return value او انك تعمل SM_Supervisor class

اقتباس
الشيء الآخر إذا أردت أن أعيد Table كامل وليس مجرد ريكورد إذن لن استطيع استعمال reader هل يجب أن اعيد عن طريق DATASET أو أستطيع أن اعرف بطريقه أخرى أنا اذكر أني شاهدتها من قبل بنفس طريقة Array of T

تستطيع استخدام ال dataReader في الرجوع بـ result set / table بل يمكن ان يسترجع اكثر من result set في حالة احتواء ال command علي اكثر من استعلام

و الانتقال الي second result set by NextResult method

و ايضا يمكن التحويل من datareader الي dataTable عن طريق dataTable.Load method

و ممكن رجوع الدالة ب dataReader و استخدامه في ال caller method بالشكل التالي:

Private Function GetData() As SqlDataReader 
	Dim cmd As New SqlCommand("your query") 
	' do something ..... 
	Return cmd.ExecuteReader(CommandBehavior.CloseConnection) 
End Function
#3

في كلاس DAL أنا لا اعيد قيم بل اعيد true or false لذلك اقوم بالتخزين في الكلاس المورث وهو يحتوي على كل الـ attribute

اما ان تستخدم IEnumerable of objects زي array/list of strings كـ Method return value او انك تعمل SM_Supervisor Class

لذا كيف اعيده

طريقة الاستدعاء تستطيع أن تصل في كلاس BLL إلى كل الـ attribute هنا سؤالي كيف اعيد القيم أو أخزنها في array or list بدون استعمال كود طويل أي ادخال بواسطة function واحده

تستطيع استخدام ال dataReader في الرجوع بـ result set / table بل يمكن ان يسترجع اكثر من result set في حالة احتواء ال command علي اكثر من استعلام
و الانتقال الي second result set by NextResult Method
و ايضا يمكن التحويل من datareader الي dataTable عن طريق dataTable.Load Method
و ممكن رجوع الدالة ب dataReader و استخدامه في ال caller Method بالشكل التالي:
كودPrivate Function GetData() As SqlDataReader 
	Dim cmd As New SqlCommand("your query") 
	' do something ..... 
	Return cmd.ExecuteReader(CommandBehavior.CloseConnection) 
End Function

كالسابق أنا أقوم بوضع القيم في الـ attribute في الكلاس الاساسي وأقوم بتعبئته في دور الريدر لذلك كيف سوف استطيع القرائه لأول مره وتخزينه في BLL ثم اعود مرة اخرى واقرأ الـ record أم اني اقوم بتخزينه كله في dataset واعادته إلى الـ BLL وهو يقوم بدور في التدقيق فيه

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#4
Public Function ShowSupervisor(ByVal _ID As String) As Object
		Dim supervisor As New User.Admin
		supervisor.ID = _ID

		If supervisor.ShowSupervisor() Then
			Dim list = supervisor
			Return list
		Else
			Dim List = New User.Admin
			Return List
		End If
	End Function

label1.Text = Fun_Admin.ShowSupervisor("3da56b12-d6f2-41").UserName

هذا حل الفقرة الأولى

أتمنى أن أجد حل للفقرة الثانية

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#5
اقتباس
كالسابق أنا أقوم بوضع القيم في الـ attribute في الكلاس الاساسي وأقوم بتعبئته في دور الريدر لذلك كيف سوف استطيع القرائه لأول مره وتخزينه في BLL ثم اعود مرة اخرى واقرأ الـ record أم اني اقوم بتخزينه كله في dataset واعادته إلى الـ BLL وهو يقوم بدور في التدقيق فيه

اما data table او list of your class

#6

مثل ما قال الاخ احمد افضل حل هو الList

لا افضل ان تعيد datareader بسبب الاتصال يجب ان يبقى مفتوح حتى قرأة اخر سطر

ال DataSet و ال DataTable تاخذ حيز كبير من الرام

و لهذا list افضل طريقة

و هذا الموضوع يمكنك الاسفادة من الكلاس التي قمت بكتابته

الموضوع مكتوب بالسي شارب

اضغط هنا

اي سؤال عن الموضوع انا حاضر

#7
	Public Function ShowSupervisor(ByVal _ID As String) As User.Users
		Dim supervisor As New List(Of User.Users)
		Dim Fetch As New User.Admin
		supervisor = Fetch.ShowSupervisors

		For i As Integer = 0 To supervisor.Count - 1
			If supervisor(i).ID = _ID Then
				Return supervisor(i)
			End If
		Next
		Return New User.Users
	End Function

	Public Function ShowSupervisors() As List(Of User.Users)

		Dim supervisor As New List(Of User.Users)
		Dim Fetch As New User.Admin

		supervisor = Fetch.ShowSupervisors
		Return supervisor

	End Function

B) :rolleyes: B)

نجحت

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#8
Public Function ShowAllUsers() As List(Of Object)
		Dim Student As New List(Of User.Users)
		Dim Teacher As New List(Of User.Users)
		Dim Supervisor As New List(Of User.Users)

		Dim Fetch As New User.Admin

		Student = Fetch.ShowStudents
		Teacher = Fetch.ShowTeachers
		Supervisor = Fetch.ShowSupervisors

		Dim Back As New List(Of Object)
		Back.Add(Student)
		Back.Add(Teacher)
		Back.Add(Supervisor)
		Return Back

	End Function

وهذي طريقة إعادة Group pf list of

تم تعديل هذه المشاركة بواسطة Eng.Fedail في 2 أكتوبر 2008 في 00:08

joseph.gif

logo.gif

CCNA 640-802

مدونتي

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