تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تعديل على اجراء مخزن
#11
(11-04-23, 05:26 PM)new_programer كتب : لا.  استاذي الفاضل انا لا استعلم عن الباركود دة مجرد مثال  لان الكود عندى كبير
فعملت مثال مختصر للتوضيح الفكرة

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

لو يوجد بيانات يرجع بالباركود

لو مافيش بيانات هيتم انشاء باركود

لو أنك من البداية وضعت الاستعلام الذي لديك لاستفدت من الوقت للحصول على الحل
الرد }}}
تم الشكر بواسطة: new_programer
#12
(11-04-23, 05:30 PM) كتب :
(11-04-23, 05:26 PM)new_programer كتب : لا.  استاذي الفاضل انا لا استعلم عن الباركود دة مجرد مثال  لان الكود عندى كبير
فعملت مثال مختصر للتوضيح الفكرة

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

لو يوجد بيانات يرجع بالباركود

لو مافيش بيانات هيتم انشاء باركود

لو أنك من البداية وضعت الاستعلام الذي لديك لاستفدت من الوقت للحصول على الحل

تمام استاذى الفاضل

هوضح الكود  كامل   مع توضيح المطلوب
الرد }}}
تم الشكر بواسطة:
#13
(11-04-23, 07:03 PM)new_programer كتب :
(11-04-23, 05:30 PM) كتب :
(11-04-23, 05:26 PM)new_programer كتب : لا.  استاذي الفاضل انا لا استعلم عن الباركود دة مجرد مثال  لان الكود عندى كبير
فعملت مثال مختصر للتوضيح الفكرة

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

لو يوجد بيانات يرجع بالباركود

لو مافيش بيانات هيتم انشاء باركود

لو أنك من البداية وضعت الاستعلام الذي لديك لاستفدت من الوقت للحصول على الحل

تمام استاذى الفاضل

هوضح الكود  كامل   مع توضيح المطلوب

توقفت عند قولك (لو مافيش باركود يتم انشاء باركود) فكيف يتم إنشاءه داخل ال StoredProcedure ؟

عموما هذا حل بأن تنشئ StoredProcedure باسم GetBarCode مهمته جلب الباركود، وترسل له رقم المورد ورقم المخزن ورقم الوحدة
فإذا عاد برقم 0 فهذا يعني أنه ليس هناك باركود مسجل، فعندئذ عليك بإنشاء باركود جديد لحفظه مع بياناته بStoredProcedure خاص بالإضافة وليكن إسمه AddBarCode
كود :
CREATE PROCEDURE [dbo].[GetBarCode] (@itemCode int, @supplierCode int, @unitCode int)
AS
   RETURN (SELECT [barCode] FROM Uint_ItemsTbl  WHERE [ItemCode]=@itemCode AND [SupplierCode]=@supplierCode AND [UnitCode]=@unitCode )

كود :
Using cmd As New SqlCommand("GetBarCode", conn)
   cmd.CommandType = CommandType.StoredProcedure

   cmd.Parameters.AddWithValue("@itemCode", Int(txtItemCode.Text))
   cmd.Parameters.AddWithValue("@supplierCode", Int(txtSupplierCode.Text))
   cmd.Parameters.AddWithValue("@unitCode", Int(txtUnitCode.Text))

   Dim param As New SqlParameter("returnValue", Nothing)
   param.Direction = ParameterDirection.ReturnValue
   cmd.Parameters.Add(param)

   conn.Open()
   cmd.ExecuteNonQuery()
   conn.Close()

   Dim retVal As Integer = cmd.Parameters("returnValue").Value
   Select Case retVal
       Case 0
           txtBarCode.Text = "0"
           MsgBox("لا يوجد باركود")
       Case Is > 0
           txtBarCode.Text = retVal
           MsgBox("الباركود موجود مسبقاً" & vbNewLine & retVal)
   End Select

End Using

أما إذا أردت الاستعلام عن الباركود والإضافة إن لم يجده في عملية واحدة
فحينئذ عليك بإنشاء باركود جديد (من باب الإحتياط) ترسله مع رقم المورد ورقم المخزن ورقم الوحدة
فإذا كان هناك بار كود مسجل مسبقا يجلبه ويتجاهل الباركود الجديد
وإن لم يجد باركود مسجل مسبقا يقوم بإضافته مع بياناته المتعلقة به

إذا أردت العمليتين معا اعمل مشروع بسيط مع ملف قاعدة بيانات لتطبيق الفكرة عليه
الرد }}}
تم الشكر بواسطة: new_programer
#14
الله ينور عليك استاذى الكبير

كدة اتحلت نصف المطلوب

كيف
فإذا عاد برقم 0 فهذا يعني أنه ليس هناك باركود مسجل، فعندئذ عليك بإنشاء باركود جديد لحفظه مع بياناته بStoredProcedure خاص بالإضافة وليكن إسمه AddBarCode

كيف اضيف باركو جديد فى نفس ال Stored Procedure

هنا محتاج اذا عاد برقم 0

ياخد اخر باركود +1
وهيسجل الباركود

كيف اضيفها فى نفس ال بStoredProcedure
الرد }}}
تم الشكر بواسطة:
#15
(12-04-23, 10:58 PM)new_programer كتب : الله ينور   عليك  استاذى  الكبير

كدة اتحلت نصف المطلوب

كيف
فإذا عاد برقم 0 فهذا يعني أنه ليس هناك باركود مسجل، فعندئذ عليك بإنشاء باركود جديد لحفظه مع بياناته بStoredProcedure خاص بالإضافة وليكن إسمه AddBarCode

كيف اضيف  باركو جديد فى نفس ال  Stored Procedure

هنا محتاج  اذا عاد برقم 0

ياخد  اخر باركود +1
وهيسجل الباركود

كيف اضيفها فى نفس ال بStoredProcedure



هذا آخر تعديل
إذا لم تحصل على المطلوب، فكما ذكرت لك (اعمل مشروع بسيط مع ملف قاعدة بيانات لتطبيق الفكرة عليه)

كود :
ALTER PROCEDURE [dbo].[StoredProcedure2] (@itemCode int, @supplierCode int, @unitCode int)
AS
   DECLARE @barCode int
   SET @barCode = (SELECT [barCode] FROM Uint_ItemsTbl WHERE [ItemCode]=@itemCode AND [SupplierCode]=@supplierCode AND [UnitCode]=@unitCode)

   /* التأكد من موجود باركود مسبق */
   IF @barCode IS NOT NULL    
        RETURN @barCode -- الباركود المسجل     
    ELSE
        BEGIN TRY
            -- الباركود الجديد
            SET @barCode = (SELECT MAX([barCode]) + 1 FROM Uint_ItemsTbl)
            /* إدخال البيانات */
            INSERT INTO [Uint_ItemsTbl] ([barCode], [itemCode], [SupplierCode], [UnitCode]) VALUES (@barCode, @itemCode, @supplierCode, @unitCode)
        END TRY
        BEGIN CATCH
            RETURN -1
        END CATCH

   RETURN @barCode

كود :
Using cmd As New SqlCommand("StoredProcedure2", conn)
   cmd.CommandType = CommandType.StoredProcedure

   cmd.Parameters.AddWithValue("@itemCode", Int(txtItemCode.Text))
   cmd.Parameters.AddWithValue("@supplierCode", Int(txtSupplierCode.Text))
   cmd.Parameters.AddWithValue("@unitCode", Int(txtUnitCode.Text))

   Dim param As New SqlParameter("returnValue", Nothing)
   param.Direction = ParameterDirection.ReturnValue
   cmd.Parameters.Add(param)

   conn.Open()
   cmd.ExecuteNonQuery()
   conn.Close()

   Dim retVal As Integer = cmd.Parameters("returnValue").Value
   'MsgBox(retVal)
   Select Case retVal
       Case Is > 0
           txtBarCode.Text = retVal
       Case -1
           MsgBox("Return Value:  " & retVal & vbNewLine & "فشل")
   End Select

End Using

إذا لم تحصل على المطلوب، فكما ذكرت لك (اعمل مشروع بسيط مع ملف قاعدة بيانات لتطبيق الفكرة عليه)
الرد }}}
تم الشكر بواسطة: new_programer , new_programer
#16
(13-04-23, 12:19 AM) كتب :
(12-04-23, 10:58 PM)new_programer كتب : الله ينور   عليك  استاذى  الكبير

كدة اتحلت نصف المطلوب

كيف
فإذا عاد برقم 0 فهذا يعني أنه ليس هناك باركود مسجل، فعندئذ عليك بإنشاء باركود جديد لحفظه مع بياناته بStoredProcedure خاص بالإضافة وليكن إسمه AddBarCode

كيف اضيف  باركو جديد فى نفس ال  Stored Procedure

هنا محتاج  اذا عاد برقم 0

ياخد  اخر باركود +1
وهيسجل الباركود

كيف اضيفها فى نفس ال بStoredProcedure



هذا آخر تعديل
إذا لم تحصل على المطلوب، فكما ذكرت لك (اعمل مشروع بسيط مع ملف قاعدة بيانات لتطبيق الفكرة عليه)

كود :
ALTER PROCEDURE [dbo].[StoredProcedure2] (@itemCode int, @supplierCode int, @unitCode int)
AS
   DECLARE @barCode int
   SET @barCode = (SELECT [barCode] FROM Uint_ItemsTbl WHERE [ItemCode]=@itemCode AND [SupplierCode]=@supplierCode AND [UnitCode]=@unitCode)

   /* التأكد من موجود باركود مسبق */
   IF @barCode IS NOT NULL    
        RETURN @barCode -- الباركود المسجل     
    ELSE
        BEGIN TRY
            -- الباركود الجديد
            SET @barCode = (SELECT MAX([barCode]) + 1 FROM Uint_ItemsTbl)
            /* إدخال البيانات */
            INSERT INTO [Uint_ItemsTbl] ([barCode], [itemCode], [SupplierCode], [UnitCode]) VALUES (@barCode, @itemCode, @supplierCode, @unitCode)
        END TRY
        BEGIN CATCH
            RETURN -1
        END CATCH

   RETURN @barCode

كود :
Using cmd As New SqlCommand("StoredProcedure2", conn)
   cmd.CommandType = CommandType.StoredProcedure

   cmd.Parameters.AddWithValue("@itemCode", Int(txtItemCode.Text))
   cmd.Parameters.AddWithValue("@supplierCode", Int(txtSupplierCode.Text))
   cmd.Parameters.AddWithValue("@unitCode", Int(txtUnitCode.Text))

   Dim param As New SqlParameter("returnValue", Nothing)
   param.Direction = ParameterDirection.ReturnValue
   cmd.Parameters.Add(param)

   conn.Open()
   cmd.ExecuteNonQuery()
   conn.Close()

   Dim retVal As Integer = cmd.Parameters("returnValue").Value
   'MsgBox(retVal)
   Select Case retVal
       Case Is > 0
           txtBarCode.Text = retVal
       Case -1
           MsgBox("Return Value:  " & retVal & vbNewLine & "فشل")
   End Select

End Using

إذا لم تحصل على المطلوب، فكما ذكرت لك (اعمل مشروع بسيط مع ملف قاعدة بيانات لتطبيق الفكرة عليه)


 شكرا  جد   جدا   جدا     

 معلمي واستاذي الفاضل  .


تم   الانتهاء   من التعديل على  الكود  ويعمل الان  بنجاح  كما هو المطلوب   . 

لا اعلم كيف اشكرك على المساعدة . 
ربنا يوفقك ويكرمك  ويذيدك من علمه  ويجعله فى موازين حسناتك 


تم اضافة الكود التالي  - عندما يكون الجدول فارغ .
PHP كود :
  IF @barCode IS NULL 
                        SET  
@barCode=

الكود كامل بعد التعديل
PHP كود :
ALTER  PROCEDURE [dbo].[StoredProcedure2] (@itemCode int,@barCodeID int, @vindCode int,@StoreCode int, @unitCode int)
AS
 
  DECLARE @barCode int
   
--SET @barCode = (SELECT [barCodeFROM Uint_ItemsTbl WHERE [ItemCode]=@itemCode AND [vindCode]=@vindCode AND [StoreCode]=@StoreCode AND [UnitCode]=@unitCode )
 
SET @barCode = (SELECT [barCodeFROM Uint_ItemsTbl WHERE [ItemCode]=@itemCode AND [vindCode]=@vindCode  AND [UnitCode]=@unitCode )
 
  /* التأكد من موجود باركود مسبق */
 
  IF @barCode IS NOT NULL    
        RETURN 
@barCode -- الباركود المسجل     
    ELSE
        BEGIN 
TRY
 
           -- الباركود الجديد
            SET 
@barCode = (SELECT MAX([barCode]) + 1 FROM Uint_ItemsTbl)
 
             IF @barCode IS NULL 
                        SET  
@barCode=1
            
/* إدخال البيانات */
 
             --INSERT INTO [Uint_ItemsTbl] ([itemCode],[barCodeID],[barCode],[vindCode],[StoreCode],[UnitCode]) VALUES ([@itemCode],[@barCodeID],[@barCode],[@vindCode],[@StoreCode],[@UnitCode])
 
           INSERT INTO [Uint_ItemsTbl] (itemCode,barCodeID,barCode,vindCode,StoreCode,UnitCodeVALUES (@itemCode,@barCodeID,@barCode,@vindCode,@StoreCode,@unitCode)
 
       END TRY
 
       BEGIN CATCH
 
           RETURN -1
        END 
CATCH

 
  RETURN @barCode 


شرح بسيط للكود  لكي يستفيد منه الاخوة .

يوجد جدول الاصناف / الموردين / الوحدات( باركود لكل وحدة )
يتم ربط كل صنف مع مورد بكود خاص لاستخدامة فى بعض التقارير لاحقا وسهولة الاستعلامات للموردين مع الاصناف


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

   بيتم تحديد المورد  مع المخزن 

وعند ادراج صنف   يتم الاستعلام  فى جدول الوحدات  ( يعتبر جدول المخزون او  الاصناف اللى فى المخزن )

بيتم الاستعلام  عن الصنف  مع المورد   مع الوحدة     /  لان كل وحدة لها باركود منفرد بها  مربوط مع المورد


لو يوجد باركود مسجل من قبل   يتم احضارة  لاضافة علية الكمية المشتراة  بعد حفظ الفاتورة


اذا لم يوجد   باركود مسجل من قبل     بيتم  توليد باركود جديد فى جدول الوحدات ( المخزن )



-----------------------

الكود اخد مني فترة كبيرة ومحاولات كتير  جدا  لكن دون الوصول الى المطلوب 


لكن تم الوصول الى المطلوب  بفضل  مساعدة الاخوة الافاضل  

وبالاخص الكود الخاص باستاذي الكريم   (  عضو فعال )  الشكر لك   

وشكرا     جدا       عضو فعال
الرد }}}
تم الشكر بواسطة: yosif



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


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