PDA

View Full Version : یک سوال درباره برگشت یک مقدار از یک Stored procedures در حال Insert کردن



SilverGold
شنبه 25 دی 1389, 12:06 عصر
سلام به همه دوستان

من می خواهم یک sp که کارش درج در جدول هست بنویسم که یک مقدار برگرداند و آن را در VB.net بخوانم sp من این است


USE [DbAccountant]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Proc [dbo].[SPRevenueInsert]
@DateDoc char(10),
@ExchangeDolar float,
@ExchangeDinar float,
@Description nvarchar(100)
AS
BEGIN
INSERT INTO [dbo].[Tbl_Revenue]
(
[DateDoc],
[ExchangeDolar],
[ExchangeDinar],
[Description]
)
VALUES
(
@DateDoc,
@ExchangeDolar,
@ExchangeDinar,
@Description
)
END



در VB.net آمدم به این شکل دستور را اجرا کردم ولی نمی دانم چطور بعد از ذخیره کردن مقدار آخرین فیلد من به من برگردانده بشود .
ریز جدول من این است

@IdCounter bigint,
@DateDoc nvarchar(10),
@ExchangeDolar float,
@ExchangeDinar float,
@Description nvarchar(100)
به خاطر این که فیلد IdCounter من به صورت خودکار شماره می اندازد می خواهم بعد از عمل درج در جدول مقدار این فیلد در وی بی به من داده بشود تا من از آن استفاده کنم

در ضمن دستوری که باید در vb.net برای این کار اجرا شود را به من بگویید

ممنون از لطف بی کران شما

Reza_Yarahmadi
شنبه 25 دی 1389, 19:27 عصر
SP خودتون رو بصورت زیر بنویسید

ALTER Proc [dbo].[SPRevenueInsert]
@DateDoc char(10),
@ExchangeDolar float,
@ExchangeDinar float,
@Description nvarchar(100)
AS
BEGIN
INSERT INTO [dbo].[Tbl_Revenue](
[DateDoc],
[ExchangeDolar],
[ExchangeDinar],
[Description])
VALUES(
@DateDoc,
@ExchangeDolar,
@ExchangeDinar,
@Description)
Select @@Identity
END

سمت برنامه هم بصورت زیر عمل کنید (من با #C مینویسیم شما خودتون به VB تبدیلش کنید)

int identityValue = 0;
SqlCommand cmd = new SqlCommand("SPRevenueInsert", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@DateDoc", value);
//.... Declare Other Params
conn.Open();
int.TryParse(cmd.ExecuteScalar().ToString(), out identityValue);
conn.Close();
MessageBox.Show(identityValue.ToString());

SilverGold
یک شنبه 26 دی 1389, 16:57 عصر
int.TryParse(cmd.ExecuteScalar().ToString(), out identityValue);

دوست عزیز نتونستم این دستور رو به وی بی دات نت تبدیل کنم لطف کمک کنید

Reza_Yarahmadi
یک شنبه 26 دی 1389, 22:09 عصر
به 2 صورت زیر میتونید این کار رو انجام بدید - بر گرفته از msdn

Integer.TryParse(cmd.ExecuteScalar().ToString(), identityValue)
Integer.TryParse(cmd.ExecuteScalar().ToString(), Globalization.NumberStyles.Integer, Nothing, identityValue)