PDA

View Full Version : عدم ثبت رکورد تکراری



tgf_int
جمعه 18 مرداد 1392, 20:51 عصر
با سلام،
من یک فرم ساختم که یکسری اطلاعات رو دریافت میکنه و به جدولی در دیتابیس منتقل میکنه.
2 تا مورد بود که من نتونستم واسشون کدی رو پیدا کنم:
1- هنگام ثبت اطلاعات در فرم میخواهم 3 ورودی (از 5 ورودی) تکراری نباشند. یعنی چک شود اگر رکورد مورد نظر تکراری بود با دادن پیغامی به کاربر امکان ثبت و ارسال آن اطلاعات به دیتابیس وجود نداشته باشد.
2- یکی از ورودی های این فرم سریال کالا است. من دنبال کدی میگردم که در یک فرم کاربر بتواند با نوشتن (جستجو کردن) سریال کلیه رکورد های ثبت شده در آن ستون خاص را بتواند مشاهده کند.

ممنون میشم راهنمایی کنید.

parvizwpf
جمعه 18 مرداد 1392, 21:02 عصر
1- اون اطلاعات که نباید ثبت بش رو مثال بزنید.
2- خب تو کوئری سمت برنامه مشکل دارید یا میخواید استور سمت اس کیو ال بنویسید؟

tgf_int
جمعه 18 مرداد 1392, 21:56 عصر
در باره مورد اول:
این فرم اطلاعاتی رو از قبیل نام کالا، سریال کالا و ... رو از کاربر دریافت میکنه و در جدول مربوطه در دیتابیس ذخیره میکنه. به عنوان مثال سریال کالا نباید تکراری ثبت شود.
درباره مورد دوم:
در یک صفحه (فرم)، کاربر باید قادر باشد با وارد کردن سریال کالا، اطلاعات مربوط به ستون آن کالا را مشاهده نماید.

parvizwpf
جمعه 18 مرداد 1392, 21:59 عصر
میتونید سریال رو یونیک تعریف کنید خودش خطا میده.
خب سوال منم اینه توی چه قسمت اون مورد دومی مشکل دارید؟ خب کوئریشو بنویسید حالا چه سمت برنامه چه اس کیو ال.

tgf_int
شنبه 19 مرداد 1392, 10:16 صبح
1- فیلد رو یونیک کردم، ولی این خیلی حرفه ای نیست. فقط ثبت نمیکنه ولی دلیل عدم ثبت رو واسه کابر نمیگه.
2- توی قسمت دوم کلاً نمیدونم صفحه رو با چه کدی بنویسم!! (من تقریباً تازه PHP رو شروع کردم)

باز هم ممنون

محمد سلیم آبادی
شنبه 19 مرداد 1392, 19:13 عصر
- فیلد رو یونیک کردم، ولی این خیلی حرفه ای نیست. فقط ثبت نمیکنه ولی دلیل عدم ثبت رو واسه کابر نمیگه.
تعجب میکنم میگید دلیل عدم ثبت رو واسه کاربر نمیگه!
شما یه جدول ایجاد کنید. سپس ستونی از آن را unique در نظر بگیرد و سعی کنید داده تکراری در آن درج کنید سپس SQL Server با یک پیغام خطایی مشابه این به شما اطلاع میده که دارین داده تکراری ثبت میکنید:
Msg 2627, Level 14, State 1, Line 2
Violation of UNIQUE KEY constraint ...

خب به سادگی میشه با دو بلاک try و catch این خطا رو مدیریت کرد. و پیغام مناسب خودتان را به کاربر نشون بدین به این شکل:

create table tt (i int unique)

insert tt values (1)

begin try
insert tt values (1)
end try
begin catch
if ERROR_NUMBER() = 2627
select 'Duplicate Value'
end catch

tgf_int
شنبه 19 مرداد 1392, 22:49 عصر
ممنون از راهنمایی هاتون
لطفاً در صورت امکان مورد دوم رو هم توضیح بدین و بگین از چه کدهایی باید استفاده کنم...

محمد سلیم آبادی
یک شنبه 20 مرداد 1392, 12:03 عصر
سوالتان را در تالار مناسب مطرح کنید.