نمایش نتایج 1 تا 6 از 6

نام تاپیک: یه مشکل برای ثبت رکورد و همزمانی اطلاعات

  1. #1

    یه مشکل برای ثبت رکورد و همزمانی اطلاعات

    با سلام

    من ASP.NET را تازه شروع کردم و به یه مشکل برخوردم

    یه مشکل در ثبت رکورد تو بانک اطلاعاتی دارم

    من میخوام یه فاکتور را تو بانکم ثبت کنم برای همین دوتا جدول طراحی کردم
    جدول مشخصات فاکتور (سربرگ فاکتور) که کلید او بصورت AutoNumber تعریف شده
    جدوا ردیف ها (سفارشات) که در هر ردیف شماره فاکتور و مشخصات کالا ثبت میشود

    من وقتی که میخوا فاکتور را ذخیره کنم

    اول مشخصات فاکتور را ذخیره میکنم بعد با یه دستور SELECT کد آخرین رکورد ثبت شده را بدست میارم (که همین فاکتور من هست)
    بعد کد را که بدست آوردم همراه با مشخصات کالا در جدول ردیف ها ذخیره میکنم


    حالا سوال من اینکه آیا این راهی که من رفتم درست است یا نه یعنی شماره فاکتور را که من با دستور SELECT بدست میرام معتبر است و کسی بعد از ثبت من ممکنه که یه رکورد دیگه همون لحضه ثبت کنه

    یا راهی وجود داره که من بتونم وقتی که رکورد مشخصات فاکتور را ثبت میکنم کدش را همون لحظه بدون استفاده از دستور SELECT بدست بیارم


    نکته : من تمام این کارها را در یک رویداد انجام میدهم



    با تشکر
    علیرضا

  2. #2
    کاربر دائمی آواتار mahdi_negahi
    تاریخ عضویت
    آذر 1384
    محل زندگی
    www.iranbuycenter.com
    پست
    582
    دوست عزیز به قسمت معماری چند لایه در ASP.NET2 بخش 5 آموزش مراجعه کن من در انجا توضیح دادم .

  3. #3
    اگر در جدولت فیلدی از نوع AutoNumber داری (که میگی داری)، می تونی از IDENTITY@@ استفاده کنی. (به شرطی که پایگاه داده در SQL Server باشه!)

    @ID int OUTPUT
    -- DO INSERT
    SET @ID = @@IDENTITY


    زمانی که یک Connection به SQL Server برقرار میشه، یک سری متغیر سیستمی براش ایجاد میشه از جمله IDENTITY@@. وقتی چند کاربر به طور همزمان بروی یک جدول Insert انجام میدن، SQL Server میدونه هر Insert توسط کدوم کاربر (Connection) صورت گرفته و Identity که کاربر باعث تولیدش رو در IDENTITY@@ مربوط به خودش قرار میده.

    موفق باشید.

  4. #4
    مرسی آقا بهروز
    ولی این @@IDENTITY را چجوری بدست بیارم؟
    واین @@IDENTITY همون کدی است که برای رکوردی که من ثبت کرده ام

    آخه من این کد را برای یه جدول دیگه لازم دارم.

  5. #5
    IDENTITY@@ پس از اعمالی همانند INSERT، در جدول شما به دنبال فیلدی از نوع AutoNumber میگرده و در صورتی که چنین فیلدی پیدا کرد، مقدار فیلد Auto Number ایجاد شده رو برگشت میده.
    به عنوان مثال اگر فیلدی با نام Googooli_Magooli و از نوع AutoNumber داشته باشی و پس از INSERT، مقدار 5 به این فیلد نسبت داده بشه، IDENTITY@@ مقدار 5 رو Return می کنه. (کدش رو در پست قبلی نوشتم)

    توضیح دیگه ای وجود نداره.

    موفق باشی.

  6. #6
    آقا بهروز دستت درد نکنه درست شد
    از ExecuteScaler استفاده کردم

    Sqlcommand cmd=new SqlCommand("INSERT INTO fact (name) VALUES('alireza') SELECT @@IDNTTIY FROM mem",con)
    int id=Convert.ToInt32(cmd.ExecuteScaler());


قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •