التنبيهات التالية ظهرت :
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 864 - File: showthread.php PHP 7.4.33 (Linux)
File Line Function
/showthread.php 864 errorHandler->error



تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[مقال] طريقة التحقق بأن البيانات التي تود ادارجها غير مكرره
#1
السلام عليكم  و رحمة الله و بركاته  ،،،

سأتحدث قليلا عن طريقة التحقق من وجود سجل سابق للبيانات التي تحاول اضافتها ، وذلك لعدم اهتمام المبرمجين الكبير لهذه المشكله او الاعتماد على الاستعلام اكثر من مره حتى يتحقق من وجود بيانات مكرره ، و اغلب من يعانوا  من هذه المكشله مطوري تطبيقات  الويب  فمجرد أن يقوم المتصفح ما لموقعك بعمل  Refreash لصفحه ما فانه بذلك قد اعاد طلب الاضافة الي قاعدة البيانات و بالطبع يال المفاجئه توجد سجلات مكرره في قاعدة البيانات  و في اسوأ الأحوال قد يلجأ الاخر الى تحويل المتصفح الى صفحه أخرى تظهر له رساله بان عملية الاضافة قد نجحت و كل هذا من اجل منع عملية refreash لنفس  Request و البعض قد يلجأ الى الاتصال بقاعدة البيانات و التحقق و من ثما يضيف و هذه جيده و لكن لماذا لا نجعل البرنامج يتصل لمره واحده فقط و يستعلم و يضيف مره واحده ، حسنا كيف سيتم  ذلك  ، فرضا ان لدينا  جدول بقاعدة البيانات  بهذا الشكل  :

   

فبكل بساطه ما علينا الا كتابة الاستعلام بهذه الطريقة  :
كود :
/* BEGIN COMMAND */
DECLARE @Par_LibCod_Name NVARCHAR(MAX /* Specified as 9 */) = 'محمد يحيى';
DECLARE @Par_LibCod_IsActive NVARCHAR(MAX /* Specified as 4 */) = 'true';
DECLARE @Par_LibCod_InsertDate NVARCHAR(MAX /* Specified as 10 */) = '2015-12-08';
DECLARE @Par_LibCod_UserInsert NVARCHAR(MAX /* Specified as 1 */) = '1';
/* END PARAMS */
 If Not Exists( Select *  FROM LibraryNodesTitle  where LibCod_Name= @Par_LibCod_Name and LibCod_IsActive= @Par_LibCod_IsActive and LibCod_InsertDate= @Par_LibCod_InsertDate and LibCod_UserInsert= @Par_LibCod_UserInsert  )
 Begin /*  البدأ بالاضافة اذا لما توجد ابيانات من قبل */
 insert into LibraryNodesTitle (  LibCod_Name , LibCod_IsActive , LibCod_InsertDate , LibCod_UserInsert)
 values (  @Par_LibCod_Name ,  @Par_LibCod_IsActive ,  @Par_LibCod_InsertDate ,  @Par_LibCod_UserInsert) ;  
 end
 else /*  تنفيذ شيء اخر */
 begin /*  البدأ بتنفيذ شيء اخر ، اما ارجاع رساله بان العنصر مكرر كما في هذا المثال او تعديل ...الخ*/
 RAISERROR('DuplicateRecord',10,1) RETURN /* ارجاع رسالة بان القيمة مكرره */
 end  
/* RESULTS */
SELECT 1 as Executed;
/* END COMMAND */


الشرح بالطبع موجود بداخل  جملة  SQL Query   ،  و الان كل ما عليك  انشاء استعلام  بال Ado.Net   يمرر القيم و ينفذ الاستعلام السابق .




هذا و الله المستعان

الرجاء من المشرفين نقل الموضوع الى المقالات SQL Server الخاص بالمنتدى الجديد
اسم معرفي : محمد يحيى
الرد }}}


الردود في هذا الموضوع
طريقة التحقق بأن البيانات التي تود ادارجها غير مكرره - بواسطة myalsailamy - 28-12-15, 12:36 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  إغلاق قاعدة البيانات قبل نسخها أبو خالد الشكري 21 4,136 30-01-23, 06:18 PM
آخر رد: Lesteraction
  [سؤال] كيف اقوم بتطبيع قاعدة البيانات علـّى ورق لبيانات الطالب لمنظومة الارشفة الالكترونية lole 0 839 08-11-22, 01:57 PM
آخر رد: lole
  محتاج طريقة او نسخة سيكوال اكسبريس 2008 تنصيب صامت new_programer 0 995 16-06-22, 03:26 AM
آخر رد: new_programer
Wink [سؤال] أكسس - سحب المستندات من اﻻسكانر مباشرة وإلحاق ملفات بأنواعها بقاعدة البيانات sql serv ramadaneng 0 950 07-02-22, 02:13 AM
آخر رد: ramadaneng
  [VB.NET] كود الاتصال بقاعدة البيانات Mido-9 2 6,740 29-01-22, 05:40 PM
آخر رد: رضوان الجماعي
  [SQL] طلب في طريقة كتابة جملة استعلام m4n2net2000 1 1,625 23-04-21, 07:49 AM
آخر رد: d3vc0d
  [سؤال] طريقة تحديث جدول بناء على بيانات جدول آخر sql server اليوم مبتدئة وغداً محترفة 5 4,885 23-04-21, 07:44 AM
آخر رد: d3vc0d
  الإتصال بقاعدة البيانات sql من خلال جهاز أخر ZaerAllail 3 2,099 31-01-21, 12:37 PM
آخر رد: ZaerAllail
  [سؤال] اريد رفع قاعدة البيانات على استضافة مدفوعة و نصيحة بشكل دقيق بالسرعة الممكنة theend200x 0 1,173 28-12-20, 02:36 PM
آخر رد: theend200x
  [SQL] إمتلاء قاعدة البيانات خلال 3 أشهر محمد خرد 3 3,207 29-09-20, 01:16 AM
آخر رد: ابو محمد محمد محمد

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم