30-07-13, 09:23 AM
لتجنب تكرار قيمة حتى لو ان قاعدة البيانات لن تسمح بالتكرار فإنك تريد عمل تحقق من المدخلات أليس كذلك ؟
الحالة الأولى :عندما تريد إنشاء سجل جديد
تنفذ هذه الجملة لتحصل على عدد السجلات التي فيها القيمة المميزة
Select Count(*) Where [UniqueField]=@UniqueValue
عندما تنفذ ExecuteScalar ستعود هذه الدالة بقيمة عددية فيها عدد الصفوف الي تحتوي على هذه القيمة
إذا كانت القيمة أكبر من صفر (يعني واحد وفوق) يعني القيمة ستكون مكررة وبالتالي لاتسمج بعملية إنشاء سجل بهذه القيمة
الحالة الثانية: عندما تريد تغيير القيمة لسجل موجود مسبقاً
في هذه الحالة يجب أن يكون لديك PrimaryKey ثابت لايتغير يفضل AutoNumber
ستكون الجملة كالتالي
Select Count(*) Where [UniqueField]=@UniqueValue And [ID]<>@IDValue
ثم تتابع كما في الحالة الأولى
الحالة الأولى :عندما تريد إنشاء سجل جديد
تنفذ هذه الجملة لتحصل على عدد السجلات التي فيها القيمة المميزة
Select Count(*) Where [UniqueField]=@UniqueValue
عندما تنفذ ExecuteScalar ستعود هذه الدالة بقيمة عددية فيها عدد الصفوف الي تحتوي على هذه القيمة
إذا كانت القيمة أكبر من صفر (يعني واحد وفوق) يعني القيمة ستكون مكررة وبالتالي لاتسمج بعملية إنشاء سجل بهذه القيمة
الحالة الثانية: عندما تريد تغيير القيمة لسجل موجود مسبقاً
في هذه الحالة يجب أن يكون لديك PrimaryKey ثابت لايتغير يفضل AutoNumber
ستكون الجملة كالتالي
Select Count(*) Where [UniqueField]=@UniqueValue And [ID]<>@IDValue
ثم تتابع كما في الحالة الأولى
