تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ارجو تعديل الكود بواستطة الاجراء المخزن
#1
السلام عليكم 

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

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

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

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

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

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

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

كود :
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
الرد }}}
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاته
جرب هذا الكود


كود :
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
لا إله إلا الله وحده لا شريك له له الملك وله الحمد وهو على كل شئ قدير
سبحان الله وبحمده سبحان الله العظيم
سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولا حول ولا قوة إلا بالله العلى العظيم
رب أغفر لي 

الرد }}}
تم الشكر بواسطة: new_programer , new_programer
#3
شكرا جدا princelovelorn

يعمل جيدا

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

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

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

الفكرة بين 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
لا إله إلا الله وحده لا شريك له له الملك وله الحمد وهو على كل شئ قدير
سبحان الله وبحمده سبحان الله العظيم
سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولا حول ولا قوة إلا بالله العلى العظيم
رب أغفر لي 

الرد }}}
تم الشكر بواسطة:



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


يقوم بقرائة الموضوع: