ارجو تعديل الكود بواستطة الاجراء المخزن - new_programer - 03-04-25
السلام عليكم
كل عام وانتم جميعا بخير
لدى كود استعلام وجلب بيانات الصنف بواستطة اجراء مخزن
الكود عبارة عن الاستعلام بكود الصنف مع كود المورد
فى وجود البيانات يتم جلب وارجاع بيانات الصنف الجدول عبارة عن كويري
لكن المشكلة عند عدم وجود الباركود
اريد انشاء باركود جديد وارسالة مع البيانات الصنف
ما الطريقة لارسال الباركود الجديد مع بيانات الكويري
دة الكود المستخدم لكن لا يعمل
كود :
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
RE: ارجو تعديل الكود بواستطة الاجراء المخزن - princelovelorn - 03-04-25
وعليكم السلام ورحمة الله وبركاته
جرب هذا الكود
كود :
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
RE: ارجو تعديل الكود بواستطة الاجراء المخزن - new_programer - 03-04-25
شكرا جدا princelovelorn
يعمل جيدا
اريد العملية بدون عملية الحفظ الباركود
ممكن بعد اذنك توضيح اكتر لانه استخدم ال MAX فى معظم الحقول
@itemCode2 NVARCHAR(50), -- استخدام طول محدد بدل MAX
RE: ارجو تعديل الكود بواستطة الاجراء المخزن - princelovelorn - 03-04-25
تفضل الكود بدون عملية التسجيل الجديدة
الفكرة بين 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
|