المشاركات : 19
المواضيع 0
الإنتساب : Apr 2023
السمعة :
7
الشكر: 21
تم شكره 32 مرات في 28 مشاركات
(11-04-23, 05:26 PM)new_programer كتب : لا. استاذي الفاضل انا لا استعلم عن الباركود دة مجرد مثال لان الكود عندى كبير
فعملت مثال مختصر للتوضيح الفكرة
انا محتاج اعمل استعلام لو يوجد باركود
الصنف مع المورد مع المخزن مع الوحدة
لو يوجد بيانات يرجع بالباركود
لو مافيش بيانات هيتم انشاء باركود
لو أنك من البداية وضعت الاستعلام الذي لديك لاستفدت من الوقت للحصول على الحل
المشاركات : 237
المواضيع 68
الإنتساب : Nov 2018
السمعة :
6
الشكر: 132
تم شكره 126 مرات في 87 مشاركات
(11-04-23, 05:30 PM) كتب : (11-04-23, 05:26 PM)new_programer كتب : لا. استاذي الفاضل انا لا استعلم عن الباركود دة مجرد مثال لان الكود عندى كبير
فعملت مثال مختصر للتوضيح الفكرة
انا محتاج اعمل استعلام لو يوجد باركود
الصنف مع المورد مع المخزن مع الوحدة
لو يوجد بيانات يرجع بالباركود
لو مافيش بيانات هيتم انشاء باركود
لو أنك من البداية وضعت الاستعلام الذي لديك لاستفدت من الوقت للحصول على الحل
تمام استاذى الفاضل
هوضح الكود كامل مع توضيح المطلوب
المشاركات : 19
المواضيع 0
الإنتساب : Apr 2023
السمعة :
7
الشكر: 21
تم شكره 32 مرات في 28 مشاركات
(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
أما إذا أردت الاستعلام عن الباركود والإضافة إن لم يجده في عملية واحدة
فحينئذ عليك بإنشاء باركود جديد (من باب الإحتياط) ترسله مع رقم المورد ورقم المخزن ورقم الوحدة
فإذا كان هناك بار كود مسجل مسبقا يجلبه ويتجاهل الباركود الجديد
وإن لم يجد باركود مسجل مسبقا يقوم بإضافته مع بياناته المتعلقة به
إذا أردت العمليتين معا اعمل مشروع بسيط مع ملف قاعدة بيانات لتطبيق الفكرة عليه
المشاركات : 237
المواضيع 68
الإنتساب : Nov 2018
السمعة :
6
الشكر: 132
تم شكره 126 مرات في 87 مشاركات
الله ينور عليك استاذى الكبير
كدة اتحلت نصف المطلوب
كيف
فإذا عاد برقم 0 فهذا يعني أنه ليس هناك باركود مسجل، فعندئذ عليك بإنشاء باركود جديد لحفظه مع بياناته بStoredProcedure خاص بالإضافة وليكن إسمه AddBarCode
كيف اضيف باركو جديد فى نفس ال Stored Procedure
هنا محتاج اذا عاد برقم 0
ياخد اخر باركود +1
وهيسجل الباركود
كيف اضيفها فى نفس ال بStoredProcedure
المشاركات : 19
المواضيع 0
الإنتساب : Apr 2023
السمعة :
7
الشكر: 21
تم شكره 32 مرات في 28 مشاركات
(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
إذا لم تحصل على المطلوب، فكما ذكرت لك (اعمل مشروع بسيط مع ملف قاعدة بيانات لتطبيق الفكرة عليه)
المشاركات : 237
المواضيع 68
الإنتساب : Nov 2018
السمعة :
6
الشكر: 132
تم شكره 126 مرات في 87 مشاركات
14-04-23, 05:02 PM
(آخر تعديل لهذه المشاركة : 14-04-23, 05:15 PM {2} بواسطة new_programer.)
(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=1
الكود كامل بعد التعديل
PHP كود :
ALTER PROCEDURE [dbo].[StoredProcedure2] (@itemCode int,@barCodeID int, @vindCode int,@StoreCode int, @unitCode int) AS DECLARE @barCode int --SET @barCode = (SELECT [barCode] FROM Uint_ItemsTbl WHERE [ItemCode]=@itemCode AND [vindCode]=@vindCode AND [StoreCode]=@StoreCode AND [UnitCode]=@unitCode ) SET @barCode = (SELECT [barCode] FROM 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,UnitCode) VALUES (@itemCode,@barCodeID,@barCode,@vindCode,@StoreCode,@unitCode) END TRY BEGIN CATCH RETURN -1 END CATCH
RETURN @barCode
شرح بسيط للكود لكي يستفيد منه الاخوة .
يوجد جدول الاصناف / الموردين / الوحدات( باركود لكل وحدة )
يتم ربط كل صنف مع مورد بكود خاص لاستخدامة فى بعض التقارير لاحقا وسهولة الاستعلامات للموردين مع الاصناف
الكود عند انشاء فاتورة مشتريات جديدة
بيتم تحديد المورد مع المخزن
وعند ادراج صنف يتم الاستعلام فى جدول الوحدات ( يعتبر جدول المخزون او الاصناف اللى فى المخزن )
بيتم الاستعلام عن الصنف مع المورد مع الوحدة / لان كل وحدة لها باركود منفرد بها مربوط مع المورد
لو يوجد باركود مسجل من قبل يتم احضارة لاضافة علية الكمية المشتراة بعد حفظ الفاتورة
اذا لم يوجد باركود مسجل من قبل بيتم توليد باركود جديد فى جدول الوحدات ( المخزن )
-----------------------
الكود اخد مني فترة كبيرة ومحاولات كتير جدا لكن دون الوصول الى المطلوب
لكن تم الوصول الى المطلوب بفضل مساعدة الاخوة الافاضل
وبالاخص الكود الخاص باستاذي الكريم ( عضو فعال ) الشكر لك
وشكرا جدا عضو فعال
|