منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : ارجو تعديل الكود بواستطة الاجراء المخزن
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم 

 كل عام وانتم جميعا بخير 

لدى كود  استعلام  وجلب بيانات الصنف بواستطة اجراء مخزن

الكود عبارة عن الاستعلام بكود الصنف مع كود المورد 
فى وجود البيانات يتم جلب  وارجاع بيانات الصنف  الجدول عبارة عن كويري 

لكن المشكلة عند عدم وجود الباركود 

اريد انشاء باركود جديد وارسالة مع البيانات الصنف 

ما الطريقة لارسال الباركود الجديد مع بيانات الكويري 

دة الكود المستخدم لكن لا يعمل 

كود :
ALTER PROCEDURE [dbo].[Get_CkeckbarCode55]
     @itemCode2  nvarchar (max),
@ClaintID int
AS
Begin
BEGIN TRY
--استعلام عن وجود الباركود
 SELECT [barCode] FROM [Items_BarcodeQry] WHERE [ItemCode2]=@itemCode2 AND ClaintID=@ClaintID
 IF @@ROWCOUNT > 0
----فى حالة وجود بيانات متطابقة للاستعلام - جلب جميع البيانات
 SELECT * FROM [Items_BarcodeQry] WHERE [ItemCode2]=@itemCode2 AND ClaintID=@ClaintID
     ELSE
    --فى حالة عدم وجود بيانات متطابقة
    ----يتم انشاء باركود جديد وارسالة مع بيانات
    DECLARE @barCode int
       SET @barCode = (SELECT MAX([barCode]) + 1 FROM [dbo].[Items_UintesTbl])
         IF @barCode IS NULL
                       SET  @barCode=1          
             SELECT  @barCode,itemCode ,itemName,itemGroup,itemCategory,itemSize,itemColor,UintName ,ItemPrice  FROM [Items_BarcodeQry]
             WHERE [ItemCode2]=@itemCode2 AND ClaintID=@ClaintID
 --end
END TRY
BEGIN CATCH
   ROLLBACK TRANSACTION   -- if error, roll back any chanegs done by any of the sql statements
   exec dbo.Report_error
END CATCH
END
وعليكم السلام ورحمة الله وبركاته
جرب هذا الكود


كود :
ALTER PROCEDURE [dbo].[Get_CkeckbarCode55]
   @itemCode2 NVARCHAR(50), -- استخدام طول محدد بدل MAX
   @ClaintID INT
AS
BEGIN
   SET NOCOUNT ON;
   --استعلام عن وجود الباركود
   BEGIN TRY
       BEGIN TRANSACTION
       
       IF EXISTS (SELECT 1 FROM [Items_BarcodeQry]
                 WHERE [ItemCode2] = @itemCode2 AND ClaintID = @ClaintID)
----فى حالة وجود بيانات متطابقة للاستعلام - جلب جميع البيانات 
      BEGIN
           SELECT *
           FROM [Items_BarcodeQry]
           WHERE [ItemCode2] = @itemCode2
               AND ClaintID = @ClaintID
       END
       ELSE
    --فى حالة عدم وجود بيانات متطابقة
    ----يتم انشاء باركود جديد وارسالة مع بيانات
       BEGIN
           DECLARE @barCode INT
           SELECT @barCode = ISNULL(MAX([barCode]),0) + 1
           FROM [Items_BarcodeQry]
           
           INSERT INTO [Items_BarcodeQry] ([barCode], [ItemCode2], [ClaintID])
           VALUES (@barCode, @itemCode2, @ClaintID)
           
           SELECT @barCode AS NewBarCode,
                  itemCode, itemName, itemGroup,
                  itemCategory, itemSize, itemColor,
                  UintName, ItemPrice  
           FROM [Items_BarcodeQry]
           WHERE [ItemCode2] = @itemCode2
               AND ClaintID = @ClaintID
       END
       
       COMMIT TRANSACTION
   END TRY
   BEGIN CATCH
       IF @@TRANCOUNT > 0
           ROLLBACK TRANSACTION
           
       EXEC dbo.Report_error
   END CATCH
END
شكرا جدا princelovelorn

يعمل جيدا

اريد العملية بدون عملية الحفظ الباركود

ممكن بعد اذنك توضيح اكتر لانه استخدم ال MAX فى معظم الحقول

@itemCode2 NVARCHAR(50), -- استخدام طول محدد بدل MAX
تفضل الكود بدون عملية التسجيل الجديدة

الفكرة بين 50 او ال MAX 
انك تستخدم القيمة اللى هاتحتاج لها فعلا فقط لا غير

كود :
ALTER PROCEDURE [dbo].[Get_CkeckbarCode55]
   @itemCode2 NVARCHAR(50), -- استخدام طول محدد بدل MAX
   @ClaintID INT
AS
BEGIN
   SET NOCOUNT ON;
   -- استعلام عن وجود الباركود
   BEGIN TRY
       BEGIN TRANSACTION
       
       IF EXISTS (SELECT 1 FROM [Items_BarcodeQry]
                 WHERE [ItemCode2] = @itemCode2 AND ClaintID = @ClaintID)
       BEGIN
           -- فى حالة وجود بيانات متطابقة للاستعلام - جلب جميع البيانات  
           SELECT *
           FROM [Items_BarcodeQry]
           WHERE [ItemCode2] = @itemCode2
               AND ClaintID = @ClaintID
       END
       
       COMMIT TRANSACTION
   END TRY
   BEGIN CATCH
       IF @@TRANCOUNT > 0
           ROLLBACK TRANSACTION
           
       EXEC dbo.Report_error
   END CATCH
END