c#_web
دوشنبه 10 تیر 1387, 10:30 صبح
با سلام .
من یک مشکل اساسی دارم و آن اینست که در یکی از فرمهای برنامه ام ممکن است در شبکه در یک زمان مشخص 2 یا چند نفر فرم مزبور را باز کرده و بخواهند درج اطلاعات کنند.
البته برای درج اطلاعات از stored rocedure استفاده کرده ام که در زیر آنرا میگذارم.
حالا اگر دریک زمان همه وارد شده و با اختلاف میلی ثانیه ای اطلاعات را وارد کنند مشکل اینست که یکی را ثبت کرده و درآخر ، آخرین مورد را روی آن قبلی ثبت میکند. نه اینکه به ازاء هر کدام سطر جداگانه.
که مشکل جدی هم هست و همه اطلاعات 2 یا چند کاربر دیگر که دراین فرم اطلاعات وارد کرده بودند از بین میرود.
البته من در stored rocedure ی که استفاده کرده ام ابتدا ماکزیمم کد را پیدا کرده و سپس با این کد ماکزیمم اطلاعات را درج میکنم.
حالا مرا راهنمایی کنید مشکل از کجاست؟ چگونه رفع مشکل کنم؟
create procedure UpdateTbl(@codeTbl nvarchar(25),...,@rerult)
as
declare @code nvarchar(25)
select @code =cast(max(codeTbl )+1 as nvarchar(25)
if @result=0
if isnull(codeTbl ,'')=''
begin insert into tbl05 (codeTbl ,..) values(@code,..)
end
else if isnull(codeTbl ,'')<>''
begin
update tbl05
set codeTbl=@codeTbl , ..... where codeTbl =@codeTbl
end
end
select result
حالا در برنامه در دات نت این stored procedure را صدا زده و اگر حاصل select به صورت
ds.tables[0].rows[0][0].tostring)=="0"
یعنی خطا نداده و درج میکند اما اگر 1 بود یعنی خطا داشته حالا دستور تلاش مجدد میدهد.
ولی هرگز این خطا را نداده و درج مجزا در سطرهای مجزا هم نمیکند.
لطفا راهنمایی کنید برای حل مشکل درج همزمان دریک جدول چه باید کرد؟
من یک مشکل اساسی دارم و آن اینست که در یکی از فرمهای برنامه ام ممکن است در شبکه در یک زمان مشخص 2 یا چند نفر فرم مزبور را باز کرده و بخواهند درج اطلاعات کنند.
البته برای درج اطلاعات از stored rocedure استفاده کرده ام که در زیر آنرا میگذارم.
حالا اگر دریک زمان همه وارد شده و با اختلاف میلی ثانیه ای اطلاعات را وارد کنند مشکل اینست که یکی را ثبت کرده و درآخر ، آخرین مورد را روی آن قبلی ثبت میکند. نه اینکه به ازاء هر کدام سطر جداگانه.
که مشکل جدی هم هست و همه اطلاعات 2 یا چند کاربر دیگر که دراین فرم اطلاعات وارد کرده بودند از بین میرود.
البته من در stored rocedure ی که استفاده کرده ام ابتدا ماکزیمم کد را پیدا کرده و سپس با این کد ماکزیمم اطلاعات را درج میکنم.
حالا مرا راهنمایی کنید مشکل از کجاست؟ چگونه رفع مشکل کنم؟
create procedure UpdateTbl(@codeTbl nvarchar(25),...,@rerult)
as
declare @code nvarchar(25)
select @code =cast(max(codeTbl )+1 as nvarchar(25)
if @result=0
if isnull(codeTbl ,'')=''
begin insert into tbl05 (codeTbl ,..) values(@code,..)
end
else if isnull(codeTbl ,'')<>''
begin
update tbl05
set codeTbl=@codeTbl , ..... where codeTbl =@codeTbl
end
end
select result
حالا در برنامه در دات نت این stored procedure را صدا زده و اگر حاصل select به صورت
ds.tables[0].rows[0][0].tostring)=="0"
یعنی خطا نداده و درج میکند اما اگر 1 بود یعنی خطا داشته حالا دستور تلاش مجدد میدهد.
ولی هرگز این خطا را نداده و درج مجزا در سطرهای مجزا هم نمیکند.
لطفا راهنمایی کنید برای حل مشکل درج همزمان دریک جدول چه باید کرد؟