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

استرجاع قيمة Identity بعد الإدخال

مغلق
بدأه majed123 في 8 يناير 2008 · 3 رد · 829 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لمن له معرفة باستخدام SqlHelper

أريد استرجاع قيمة حقل المفتاح الرئيسي - مع العلم أنه تلقائي Identity - بعد عملية الإضافة في نموذج معين

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

قمت بإنشاء Stored Procedure لإدخال الحقول وهو التالي

ALTER PROCEDURE [Insert_GLB_Users]
	@User_Name varchar(50),
	@User_Password varchar(50)
AS SET NOCOUNT ON begin transaction
INSERT INTO [GLB_Users] (
	[User_Name],
	[User_Password])
VALUES (
	@User_Name,
	@User_Password
)

if @@error<>0
begin rollback transaction
return 0
end  
else
begin commit transaction
return @@identity
end

مع العلم أن المفتاح الرئيسي هو User_ID

بعد ذلك قمت بإنشاء Class معرف فيه فنكشن ويحتوي الكلاس كاملا على الكود التالي

Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Imports Microsoft.ApplicationBlocks.Data

Public Class Cls_GLB_Users
	Private _User_ID As Integer
	Private _User_Name As System.String
	Private _User_Password As System.String
	Private _errMessage As String

   Public Property errMessage() As String
		Get
			Return _errMessage
		End Get
		Set(ByVal Value As String)
			_errMessage = Value
		End Set
	End Property

	Public Property User_ID() As Integer
		Get
			Return _User_ID
		End Get
		Set(ByVal value As Integer)
			_User_ID = value
		End Set
	End Property
	Public Property User_Name() As System.String
		Get
			Return _User_Name
		End Get
		Set(ByVal value As System.String)
			_User_Name = value
		End Set
	End Property

	Public Property User_Password() As System.String
		Get
			Return _User_Password
		End Get
		Set(ByVal value As System.String)
			_User_Password = value
		End Set
	End Property

	Public Function AddNew() As Boolean

		Dim bolAdd As Boolean = False
		Try

			SqlHelper.ExecuteReader(connection, "Insert_GLB_Users",  _User_Name, _User_Password)

			bolAdd = True
		Catch ex As Exception
			_errMessage = GenericExceptionHandler(ex)
		End Try
		Return bolAdd
	End Function

End Class

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

	 Try
			Dim oData As New Cls_GLB_Users
			With oData
				.User_Name = txtUser_Name.Text
				.User_Password = txtUser_Password.Text
				If .AddNew Then
					Dr = SqlHelper.ExecuteScalar(oCommon.connection, CommandType.Text, "select scope_identity() as returnidentity")
					lblError.Text = Dr("returnidentity")
				Else
					lblError.Text = .errMessage
				End If
			End With
		Catch ex As Exception
			lblError.Text = ex.Message
		End Try

أعتقد الآن أن الفكرة وضحت لمن أراد المساعدة

وما أريده هو إظهار ال Identity في النموذج

وشكرا

PMI_Logo_1.jpg

مدير مشاريع محترف - PMP
محلل أنظمة معتمد
مدير فريق برمجة تطبيقات ويب .Net

======|||||=====

======@ @====
==o0o== ( ) ==o0o===
================
كل منا يحتاج إلى الإرادة حتى يستطيع أن يقوم بعمله

#2
select scope_identity();

ضع هذا في نهاية امر الـ Insert واستعمل

index = cmd.ExecuteScalar

joseph.gif

logo.gif

CCNA 640-802

مدونتي

#3

الحل الصحيح هو ان ترجع القيمة من نفس الاجراء الذي ادخلت به البيانات لذا يجب ان تغير addnew الى نوع Int

Public Function AddNew() As integer

وبدل reader جعلها scaler

return SqlHelper.ExecuteScalar(connection, "Insert_GLB_Users", _User_Name, _User_Password)

وبالتالي اصبحت هذه الدالة ترجع الرقم المدخل

 
 Public Function AddNew() As integer


		return	SqlHelper.ExecuteScalar(connection, "Insert_GLB_Users",  _User_Name, _User_Password)

end sub

 ---------------------------------------



 		Try
			Dim oData As New Cls_GLB_Users
			With oData
				.User_Name = txtUser_Name.Text
				.User_Password = txtUser_Password.Text
				 lblError.Text=.AddNew  

			End With
		Catch ex As Exception
			lblError.Text = ex.Message
		End Try
#4

ما شاء الله عليكم

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

بالأصل كان عندي خطأ غير مقصود وهو أنها كانت reader بدل scaler بس هذا كان خطأ مطبعي

هو فعلا زبطت معي بس عندي استفسارات بسيطة

بال SP كنت أسترجع قيمة ال Identity من خلال الأمر Return @@Identity في sql server 2000

ليش ما زبطت معي إلا باستخدام الأمر select?

PMI_Logo_1.jpg

مدير مشاريع محترف - PMP
محلل أنظمة معتمد
مدير فريق برمجة تطبيقات ويب .Net

======|||||=====

======@ @====
==o0o== ( ) ==o0o===
================
كل منا يحتاج إلى الإرادة حتى يستطيع أن يقوم بعمله

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

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

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

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

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

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