+2 امتیاز

با سلام . من  یک برنامه با وِیژوال 2012 می نویسم که یک جدول  داره که در اون مبلغ و نام حساب و تاریخ ثبت میشه حالا میخوام وقتی یک مبلغ را برای یک حساب ثبت میکنم .کدی که در  Stored Procedure   می نویسم چک کنه،اگر موجودی اون حساب از مبلغ ورودی کمتر باشه پیام بده و گر نه ثبت بشه

 

4 پاسخ

+2 امتیاز

اول یه متغییر از نوعی که مبلغ رو ثبت میکنی ایجاد بکن

Declare @TablePrice numric(20,2) = 0

بهد با دستور Select  مقداری کن

Selecr @TablePrices =  FildPricesTable From TableName where ---

بعدش میتونی مقادیر رو چک بکنی

+1 امتیاز

سلام

توی Stored Procedure خودتون از یک متغیر خروجی استفاده کنید تا در صورت چک کردن  و صدق شرط شما به سی شارپ یک مقدار رو برگردونه...تا برنامه شما بتونه با توجه به مقدار پارامتر دریافتی درست عمل کنه

CREATE proc ProcName
@D int
,@Number int 
,@Result int output
As
شرط

 

+2 امتیاز

سلام.

--کلمه کلیدی ایجاد پروسیجر و انتخاب نام برای آن
CREATE PROC ProcedureName
--تعریف یک پارامتر برای دریافت مبلغ
@mablagh int,
--تعریف پارامتر دیگر برای دریافت مقدار کلید اصلی
--در این پروسیجر شناسه هر شخص شماره حساب آن در نظر گرفته شده است
@shomarehesab nvarchar(15)
AS
-- تعریف یک متغیر برای قرار دادن نتیجه در آن
Declare @Result int;
-- تعریف متغیر برای ذخیره موجودی حساب شخس
DECLARE @mojodi int;
-- جست جو و بدست آوردن موجودی حساب شخص
SET @mojodi = (SELECT mojodi from table_name where shomarehhesab =  @shomarehesab );

-- در این شرط بررسی میشود که آیا موجودی از مبلغ ورودی کمتر است
-- اگر موجودی کمتر از مبلغ ورودی بود مقدار 0 را برگشت خواهیم
-- به این معنا که موجودی کافی نمیباشد 
-- و اگر موجودی کافی بود مقدار 1 را برگشت داده و مبلغ از موجودی حساب کم 
-- و موجودی حساب شخص به روز میشود
IF  @mojodi < @mablagh
     SET @Result = 0;
ELSE
begin
     UPDATE table_name
     SET mojodi = @mojodi - @mablagh
     WHERE shomarehhesab = @shomarehesab
     SET @Result = 1;
end

RETURN @Result;

 

برای دریافت مقدار بازگشتی در سیشارپ:

        private void button2_Click(object sender, EventArgs e)
        {
            using (SqlConnection con = new SqlConnection(@"server = SVMONE-PC; database = w3-farsi; integrated security = true"))
            {
                using (SqlCommand cmd = new SqlCommand("ProcedureName", con))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@mablagh", txtMablagh.Text);
                    cmd.Parameters.AddWithValue("@shomarehesab", txtShomarehhesab.Text);
                    cmd.Parameters.Add("@Result", SqlDbType.Char);
                    cmd.Parameters["@Result"].Direction = ParameterDirection.ReturnValue;
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                    int result = Convert.ToInt32( cmd.Parameters["@Result"].Value.ToString());
             
                    if (result == 0)
                        MessageBox.Show("موجودی حساب کافی نمیباشد", "");
                    else if (result == 1)
                        MessageBox.Show("با موفقیت ثبت گردید");
                }
            }
        }

نحو پروسیجر صحیحه شما اطلاعات ارسالی به پروسیجر و اطلاعات درون جدول رو چک کنید.


و اگر شما نیاز دارید که بدونید موجودی حساب شما کافیه و سپس عمل insert رو انجام بدین.

ابتدا یک پروسیجر بنویسید که موجودی حساب رو محاسبه و در یک لیبل نشون بده و یک پروسیجر دیگه برای عمل Insert بنویسید و اطلاعات رو ذخیره کنید. بنابراین شما نیاز به دو پروسیجر دارید.

همینطور که گفتید محاسبه رو با این کد انجام بدین:

select
(select sum(mablagh) from Table1 where vaze = N'درآمد')
-
(select sum(mablagh) from Table1 where vaze = N'هزينه' )

و با این دستور مقدار رو در لیبل نشون بدین:

 label1.Text = cmd.ExecuteScalar().ToString();

برای اطمینان از کافی بودن موجودی،  مقدار درون لیبل رو با مقدار وارد شده در تکست باکس مقایسه کنید. 

 if (Convert.ToInt32(lblTotal.Text.Trim()) >= Convert.ToInt32(txtMablagh.Text.Trim()))
 {
        // insert
 }
ویرایش شده توسط
توسط (2,595 امتیاز) 5 15 90
میتونید با تغییر دادن کدی که اینجا نوشتم موجودی حساب رو در لیبل نمایش بدین.

http://www.w3-farsi.com/forum/index.php/2013/چطور-میشه-رکورد-های-یک-جدول-رو-شمارش-ودر-یک-لیبل-نشان-داد؟؟؟؟
توسط (2,595 امتیاز) 5 15 90
سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,920 کاربر

دسته بندی ها

...