View Full Version : مشخص کردن مقدار تکراری
mz6488
جمعه 13 مرداد 1391, 10:05 صبح
سلام.من یه برنامه با C# از ظریق دیتابیس sql درست کردم.می خوام دستوری رو قرار بدم که کاربر شماره تکراری رو وارد نکنه.الگوریتم این کار رو بلدم ولی مشکلی هست اینه که نمیدونم وقتی که مقداری رو از دیتابیس پیدا نکرد،به جای اون چه مقداری رو تو متغیر کمکی قرار میده؟با null هم امتخان کردم جواب نداد.من از کد زیر دارم تو خود sql امتخان میکنم.اگه میشه این کد رو واسم کاملش کنید
declare @x1 int,@x2 int
set @x1=(select id from customer where ID=1000)
if(@x1!=null)
set @x2=-1;
else
set @x2=1
print @x2;
الان خروجی این کد باید -1 بشه که به جای اون 1 رو چاپ میکنه.این رو هم بگم که نوع x2 رو با nvarchar امتحان کردم ولی جواب نداد
یه سوال دیگه:من این کدها رو چه جوری تو تاپیک بزارم که خوب نمایش داده بشه؟
sajjad_kochekian
جمعه 13 مرداد 1391, 11:38 صبح
فکر کنم این کمکت کنه
DECLARE @x INT =ISNULL((SELECT COUNT(code) FROM dbo.Prd_Documents
GROUP BY code
having COUNT(code)>=1
),0)
SELECT @x
mz6488
جمعه 13 مرداد 1391, 14:01 عصر
این کد ارور داد(البته عنوان جدول و فیلد خودم رو گذاشتم).ولی مشکل کد من روی شرط اوله.اگه میتونی مد خودم رو اصلاحش کن.
mz6488
جمعه 13 مرداد 1391, 14:51 عصر
حالا مشکلم حل شد.اینم کدش به صورت پروسیجر تا بقیه هم استفاده کنن
ALTER PROCEDURE dbo.SEAcustomer @id int
AS
declare @x int
set @x=(select id from customer where id=@id)
if(@x=@id)
return 1
else
return -1
یعنی اگه مقدار بازگشتی 1 شد پس این مقدار قبلا وجود داشته و با دستور شرطی تو ویژوال استودیو میتونید یک مانع واسه درج شماره تکراری درست کنید
firststep
جمعه 13 مرداد 1391, 15:11 عصر
برای ارسال کد به سایت از دکمه های PAS , C
++ , C# ....
که در بالای ادیتورت هست بایستی استغاده کنی این دکمه ها تگ هایی رو اضافه می کنه که شما بایستی وسط اونها کدتون رو قرار بدید......
خیلی کاره خوبی مردی که کد رفع مشکلتو قرار دادی
speralda
جمعه 13 مرداد 1391, 15:20 عصر
درود
درمورد سوال دومتون
وقتی تایپیک جدید میخواهید ایجاد کنید یا پاسخ گوی یک تایپیک باشید همانند تصویر زیر که در کادر قرمز رنگ مشخص شده برای سما هست.
حالا مثلا میخواهید کد sql وارد کنید باید روی SQL کلیک کنید بعد [/sql][sql] برای شما نمایش داده میشود کدهای خود را بین آن دو کروشه قرار دهید.
90682
nilmil_nil
جمعه 13 مرداد 1391, 15:30 عصر
دوست عزیز
این تریگر رو روی هر جدولی اعمال کنی جدول دیگه مقدار تکراری توش وارد نمیشه
ALTER TRIGGER [dbo].[BankDuplicateCheck]
ON [dbo].[Banks]
after INSERT, UPDATE/*, DELETE */
AS
if(select count(*) from Banks,inserted where banks.Bank_AccountNo=inserted.Bank_AccountNo) <>1
rollback transaction
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.