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

ما الامر الذي يكتب زيادة في جملة ال Select حتى يتم الوصول لاخر سجل في الجدول

بدأه MATRIXD0TNET في 20 أبريل 2008 · 12 رد · 1,738 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

يعني حاجة ذي كدة

كود:

"select * from table where record = last record"

وفي انتظار ردودكم

وشكراا

كـلـمـا زاد عـلـمـك لـلـشـئ الـمـجـهـول ..... كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم

و كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم ..... كـلـمـا زاد شـغـفـك لـعـلـم الـمـجـهـول

الــلـــــــهـــــم عـــلـــمـــنــــــي بـــمـــا يـــنــفــعــنــي وانــفــعــنــي بــمــــا عـــلـــمــتــنـــي

#2

للحصول على أخر سجل فى الجدول

 
"SELECT top 1 * FROM tablename order by key_no DESC "

على اساس ان key_no حقل رئيسى غير متكرر

كل من فى الوجود يطلب صيداً :::: غير ان الشباك مختلفات

#3

تسلم على الرد أخي njd

ولكن أنا لا أستخدم مفتاح رئيسي

هل هكذا لن تعمل حيث أنني قمت بالتجربة الان ولم تعمل (بدون مفتاح رئيسي)

ولا يمكن أنا كتبتها خطأ

كـلـمـا زاد عـلـمـك لـلـشـئ الـمـجـهـول ..... كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم

و كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم ..... كـلـمـا زاد شـغـفـك لـعـلـم الـمـجـهـول

الــلـــــــهـــــم عـــلـــمـــنــــــي بـــمـــا يـــنــفــعــنــي وانــفــعــنــي بــمــــا عـــلـــمــتــنـــي

#4

أنا في الانتظار.................

كـلـمـا زاد عـلـمـك لـلـشـئ الـمـجـهـول ..... كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم

و كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم ..... كـلـمـا زاد شـغـفـك لـعـلـم الـمـجـهـول

الــلـــــــهـــــم عـــلـــمـــنــــــي بـــمـــا يـــنــفــعــنــي وانــفــعــنــي بــمــــا عـــلـــمــتــنـــي

#5

أخى DR.Misho

ممكن توضح لى ليه مش مستخدم مفتاح رئيسى ؟ وايه الهدف من الحصول على أخر سجل ؟

علشان نفكر بطريقة تانيه .....!!!!!

ولو كده ممكن تستخدم ال dataset ومنها تحصل على آخر سجل فى الجدول

كل من فى الوجود يطلب صيداً :::: غير ان الشباك مختلفات

#6

أخي الحبيب njd

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

بس مش دي المشكلة

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

أنا هقولك المشكلة اللي خلتني أفكر في هذه الفكرة .... وشوف اذا كان استنتاجي صح ولا خطأ :

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

الذي وضعه في التكست وبعد ذلك يقوم باضافة واحد على السجل التالي ..

بمعنى اخر عبارة عن ترقيم تلقائي ولكن يبدأ بالرقم الذي يحدده المستخدم في التكست بوكس ولكن عندما يقوم المستخدم بكتابة رقم البداية مثلا 10 فيبدأ الترقيم من الرقم 11

وهذه هي المشكلة

أنا لسة لم أصل الى حل...ولكن ان شاء الله سوف أصل الى حل

طبعا انت بتتسائل دلوقتي ايه علاقة اخر سجل بالكلام ده ؟؟؟؟؟

هو ليه علاقة من بعيد اذاي

أنا عايز البرنامج لما يقوم بعملية تحميل البيانات انه يجيب أخر رقم تسلسلي في الجدول وليكن 30 تمام....

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

يعني نقدر نقول بأن الرقم الذي يحدده المستخدم حتى تبدأ عملية الترقيم منه +1 في فورم ال setting

وعمليه ادخال البيانات نفسها في فورم اخر ....تمام

تاني..

أنا محتاج الحصول على اخر سجل علشان أعطي قيمتها للتكست بوكس اللي في فورم ال setting

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

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

للتوضيح:

سوف أقوم بأخذ قيمة اخر سجل(حقل المسلسل) من الجدول وأضعها في متغير وذلك في الفورم الاولى من البرنامج يعني بعيدا عن فورم ال setting وفورم الادخال الخاصة بالبيانات

وليكن اسمه int_id

وبعد ذلك أقوم بمرير قيمة المتغير int_id الى التكست الخاص ببداية الترقيم في فورم ال سيتينج وليكن اسمه txtid_setting

وأقوم بجمع علية واحد وتمرير قيمته الى التكست بوكس في الفورم الخاصة بادخال البيانات وليكن اسمه txtid_insert حتى يأ خذ القيمة txtid_setting+1 كما يريد

المستخدم

txtid_insert= txtid_setting+1

وبعد الضغط على زر الحفظ

نقوم بتعريف متغير جديد يأخذ القيمة txtid_insert+1 وليكن اسمه int_id2

ونمررها الى التكست بوكس في فورم السيتنج للحفاظ على تحديث البيانات للمستخدم

وهو ده الموضوع كله

ولو انت شايف طريقه تانيه أسهل ولأحسن ياريت تدلني عليها..

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

وفي انتظار ردك

كـلـمـا زاد عـلـمـك لـلـشـئ الـمـجـهـول ..... كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم

و كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم ..... كـلـمـا زاد شـغـفـك لـعـلـم الـمـجـهـول

الــلـــــــهـــــم عـــلـــمـــنــــــي بـــمـــا يـــنــفــعــنــي وانــفــعــنــي بــمــــا عـــلـــمــتــنـــي

#7

انا تقريباً فهمت قصدك

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

يعنى لازم يكون Indexed

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

هديلك كلاس لملئ ال Dataset وفيه وظائف آخرى كا عملية التعديل والحذف وايضاً فيه وظيفة لملئ ال Datatable لو استخدمته

بس الكلاس مبنى على اساس ال Configuration زى ما اتكلمنا زمان ولو انت عندك الأتصال بطريقة آخرى ممكن تعدل طريقة الأتصال فى الكلاس وها هو الكلاس سميه عندك بنفس الأسم GeneralDataManager

 Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Data

Public Class GeneralDataManager

	Public Shared Function FillDataSet(ByVal dataSet As DataSet, ByVal queryString As String, ByVal StrTbl As String) As DataSet
		Using connection As New SqlConnection(ConfigurationManager.ConnectionStrings("Clinc").ConnectionString)

			Dim adapter As New SqlDataAdapter(queryString, connection)
			adapter.SelectCommand = New SqlCommand(queryString, connection)
			adapter.Fill(dataSet, StrTbl)
			Return dataSet

		End Using
	End Function

	Public Shared Sub GeneralFunction(ByVal SqlString As String)

		Dim Cmd As New SqlCommand
		Using CnGeneral As New SqlConnection(ConfigurationManager.ConnectionStrings("Clinc").ConnectionString)
			CnGeneral.Open()
			If CnGeneral.State = ConnectionState.Closed Then CnGeneral.Open()
			Cmd = CnGeneral.CreateCommand
			Cmd.CommandType = CommandType.Text
			Cmd.CommandText = SqlString
			Cmd.ExecuteNonQuery()
			Cmd.Connection.Close()
			CnGeneral.Close()

		End Using
	End Sub
	Public Shared Function fillTable(ByVal Dt As DataTable, ByVal queryString As String)
		Using connection As New SqlConnection(ConfigurationManager.ConnectionStrings("Clinc").ConnectionString)
			Dim adapter As New SqlDataAdapter(queryString, connection)
			adapter.SelectCommand = New SqlCommand(queryString, connection)
			Dt.Clear()
			adapter.Fill(Dt)
			Return Dt
		End Using
	End Function
End Class

طبعاً هتغير أسم الأتصال بدل من Clinc للأسم اللى عندك لو كنت بتستخدم ال Configuration

بعد ما تنشئ الكلاس ده تروح على الفورما اللى فيها ال Textbox اللى عاوز تسريل فيه الرقم

وتكتب ال Sub الأتى

Private Sub CreateNo()
		Try
			Dim stDataset As New DataSet
			stDataset.Clear()
			Dim SQLgr As String = "SELECT top 1 * FROM company order by Co_No DESC "
			stDataset = GeneralDataManager.FillDataSet(stDataset, SQLgr, "company")
			If Me.BindingContext(stDataset, "company").Count > 0 Then
				TextBox1.Text = (stDataset.Tables("company").Rows(0).Item("Co_No") + 1)
			Else
				If Trim(Me.TextBox1.Text) = "" Then
					TextBox1.Text = 1
				End If
			End If
		Catch ex As Exception
			MsgBox(ex.Message)
		End Try
	End Sub

وطبعاً عليك تعديل أسم الجدول بدل ما هو company حسب أسم الجدول اللى عندك

وايضاً تعدل أسم الحقل اللى فى الجدول بدل Co_No ليماثل أسم الحقل عندك

ولا تنسى ان يكون هذا الحقل Indexed يعنى غير متكرر

وبعد كده تطلب تنفيذ ال Sub عندك فى الحدث اللى انت مخصصه لجديد كالتالى

CreateNo()

سيتم أدراج رقم سيريال جديد وهو 1 اذ لم يكن هناك بيانات فى الجدول وأذا كان هناك بيانات سيأتى بأخر سجل ويضيف عليه 1

ويمكنك تعديل السيريال بدل من 1 تخليه 10 مثلاً لأول مرة وهو هيسريل بناء على الرقم 10 يزود عليه 1 كل مرة

على العموم جرب وأخبرنى بالنتيجه ...... على فكرة أنا نفسى بستخدم الكود ده للسيريال وشغال معى آخر تمام

كل من فى الوجود يطلب صيداً :::: غير ان الشباك مختلفات

#8

تسلم أخي الغالي ع الكود الرائع ده

وهحاول أحولة لكي يتناسب مع استخدامي

وان شاء الله يشتغل

وهبلغك بالنتيجة بعد الانتهاء ان شاء الله

كـلـمـا زاد عـلـمـك لـلـشـئ الـمـجـهـول ..... كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم

و كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم ..... كـلـمـا زاد شـغـفـك لـعـلـم الـمـجـهـول

الــلـــــــهـــــم عـــلـــمـــنــــــي بـــمـــا يـــنــفــعــنــي وانــفــعــنــي بــمــــا عـــلـــمــتــنـــي

#9

الكود شغال تمام........

بس في مشكلة واحدة وهي مشكلة غريبة :

أول ما أشغل البرنامج

يظهر الرقم عادي وليكن الرقم 10

المطلوب مني دلوقتي أدخل البيانات ... فقمت بتدخيل البيانات وعند الضغط على زرار الحفظ (أول مرة بعد فتح البرنامج)

الرقم يرجع واحد يعني يبقى 9

ويحفظ في الجدول مع البيانات الرقم 10

وبعد ادخال بيانات اخرى يرجع الرقم 11

ويحفظ في الجدول مع البيانات 11

وهكذا... يعني بيرجع طبيعي بعد ادخال أول رقم من بعد فتح البرنامج

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

وبعد كده بيرجع لوضعه الطبيعي

كـلـمـا زاد عـلـمـك لـلـشـئ الـمـجـهـول ..... كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم

و كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم ..... كـلـمـا زاد شـغـفـك لـعـلـم الـمـجـهـول

الــلـــــــهـــــم عـــلـــمـــنــــــي بـــمـــا يـــنــفــعــنــي وانــفــعــنــي بــمــــا عـــلـــمــتــنـــي

#10

الكود دلوقتيي بقى تمام...

كان في لخبطة في الاسطر بتاع الكود

والف شكر أخي njd

كـلـمـا زاد عـلـمـك لـلـشـئ الـمـجـهـول ..... كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم

و كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم ..... كـلـمـا زاد شـغـفـك لـعـلـم الـمـجـهـول

الــلـــــــهـــــم عـــلـــمـــنــــــي بـــمـــا يـــنــفــعــنــي وانــفــعــنــي بــمــــا عـــلـــمــتــنـــي

#11

الحمد لله انه اشتغل كويس ,,,,,, لا شكر على واجب وتحت أمرك

كل من فى الوجود يطلب صيداً :::: غير ان الشباك مختلفات

#12

تسلم أخي الغالي....

وربنا يوفقك

كـلـمـا زاد عـلـمـك لـلـشـئ الـمـجـهـول ..... كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم

و كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم ..... كـلـمـا زاد شـغـفـك لـعـلـم الـمـجـهـول

الــلـــــــهـــــم عـــلـــمـــنــــــي بـــمـــا يـــنــفــعــنــي وانــفــعــنــي بــمــــا عـــلـــمــتــنـــي

#13

انا حبيت ارد بس للأفادة لأنى عارف يمكن ماتدخلوش الموضوع تانى

انا شغال سى شارب وادو طبعا

وانا شايف انا المشكلة ممكن تتحل بالسيكول

الأمر دة هايجيب اخر سجل

select max(employeeid) from employees

واى حاجة ممكن مراسلتى على الأميل

elostaz_aiman@yahoo.com

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

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

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

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

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