الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اريد جمع ما يستقبله البروسيدجر علي حقل وطرحه من حقل اخر

بدأه hassan51993 في 12 أغسطس 2012 · 10 رد · 765 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

اخواني الكرام

مطلوب مني عمل برنامج ويتم ربطه يالسيكوال 2008

من ضمن ما هو مطلوب ان يقوم البرنامج بعملية جرد لما تم بيعه وما هو متبقي في المخزن

صنعت جدول به اسم المُنتج والمخزون والمباع والمتبقي

صنعت Stored proc يستقبل الكميه التي تباع في الطلب الواحد فأريد ان هذه الكمية يتم اضافتها علي حقل المُباع وطرحها من حقل المخزون و أريد حساب الباقي ووضعه في حقله المُخصص له

ارجو الاجابه في أسرع وقت ولكم مني التحية

والسلام عليكم ورحمة الله وبركاته

#2
hassan51993 كتب:

السلام عليكم ورحمة الله

اخواني الكرام

مطلوب مني عمل برنامج ويتم ربطه يالسيكوال 2008

من ضمن ما هو مطلوب ان يقوم البرنامج بعملية جرد لما تم بيعه وما هو متبقي في المخزن

صنعت جدول به اسم المُنتج والمخزون والمباع والمتبقي

صنعت Stored proc يستقبل الكميه التي تباع في الطلب الواحد فأريد ان هذه الكمية يتم اضافتها علي حقل المُباع وطرحها من حقل المخزون و أريد حساب الباقي ووضعه في حقله المُخصص له

ارجو الاجابه في أسرع وقت ولكم مني التحية

والسلام عليكم ورحمة الله وبركاته

هل من مُجيب؟؟؟؟؟؟

#3

ضع هيكل الجدول الذي أنشأته + نسخة عن الـ stored procedure الذي كتبته،

حتى لا تتعب الآخرين في كتابة شئ غير متوافق مع ما لديك ويضيع وقتهم سدى.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#4

بالمرفقات صورة الجداول

ما اريده هو تريجر يعمل بمجرد عمل insert في جدول orders وذلك باستخدام هذا ال procedger


ALTER proc [dbo].[InsertOrder]
@parcode varchar(50),
@quantity int,
@Date datetime
as
begin
insert into orders (parcode,quantity,Date) values(@parcode,@quantity,@Date)
end


فيعمل علي اضافة القيمة المدخله (quantity)

في حقل saled ليصبح لدي ما تم بيعه

ويقوم بطرح هذه الكميه من ما هو في stock ليصبح لدي ما هو في المخزن

post-263166-066600300 1344954193_thumb.p

المرفقات
Untitled.png
#5

مممم

هل تريد التصميم الصحيح لعملية حساب المخزون وملاحظات أخرى؟

- تنشئ جدول للـ Items يتضمن معلومات كاملة عن المنتجات المتوفرة (في الماضي، الآن وفي المستقبل)

بالإضافة إلى عمود تسمّيه مثلاً IsDeleted من النمط BOOLEAN ويكون أساسك هو العمود ID الذي هو PK.

كلما قامت الشركة باستدراج منتجات جديدة، تقوم بإضافتها لهذا الجدول.

عندما تريد الشركة إيقاف تسويق منتج ما، تقوم بوضع القيمة TRUE في العمود IsDeleted وبالتالي في استعلامك عن المنتجات تقوم بجلب جميع الـ Items التي يتوافق فيها الشرط IsDeleted = FALSE.

عندما تريد الشركة إعادة تسويق منتج ملغي سابقاً، تضع القيمة FALSE للعمود IsDeleted.

هذه الخطوة مهمّة حتى لا يؤثر حذف منتج على التقارير التي قد يقوم البرنامج بتصديرها الآن ولاحقاً.

- في جدول Orders تقوم فقط بإدراج الأعمدة: OID, ItemID, Qty, Date

بالتالي عندما تحتاج لتصحيح اسم منتج ما، فيكفي أن تقوم بالتعديل في جدول Items وتلقائياً تكون التعديلات نافذة في جدول Orders بدلاً من تسجيل اسم المنتج بالكامل (أيضاً فتسجيل الاسم مع الباركود في كل طلبية يعني زيادة غير مبررة في حجم البيانات المضافة للقاعدة).

الآن فيما يتعلق بالمخزون...

تقوم بإنشاء جدول جديد يتضمن جميع عمليات "الشراء" التي تمت، و جدول خاص بـ "المرتجعات" إن كان هناك مرتجعات في البرنامج الذي تعمل عليه.

الجدولين يتضمنان الأعمدة التي ترغب بها لتحمل معلومات عن هذه العمليات..

مثلاً "الشراء" سيتضمن ID, ItemID, Qty, Date, UnitPrice, ...

لحساب المخزون:

1- تقوم بحساب SUM(Qty) AS a من جدول المشتريات بين تاريخين: البداية تكون بداية العام والنهاية يكون اليوم الذي ترغب بحساب المخزون الذي توافر فيه (مثلاً قد ترغب بحساب المخزون الذي توفر في الأشهر الثلاثة الأولى فقط)

2- تقوم بحساب مجموع المرتجعات (إن وجدت)

3- تقوم بحساب SUM(Qty) AS b من جدول Orders بين تاريخين: البداية تكون بداية العام والنهاية يكون اليوم الذي ترغب بحساب المخزون الذي توافر فيه

4- المخزون في نهاية المدة المحددة يكون: a - b أي مجموع مشترياتك حتى نهاية تلك المدة مطروحاً منها مجموع ما تم بيعه.

أنصحك بالتفكير بشكل جيد بتصميم قاعدة البيانات لديك كأمر أساسي لتسهيل عملية التطوير على البرنامج الآن وفي المستقبل.

3

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#6

بارك الله فيك اخي الكريم أنا لا زلت أتعلم السيكوال ولكن لدي عنها معلومات الي حد ما معقوله

ردك زادني علما وسأعمل علي تنفيذه وان واجهتني مشاكل فسأعود اليك

جزاك الله عني خيرا وجعل ما قدمته لي في ميزان حسناتك

تم تعديل هذه المشاركة بواسطة hassan51993 في 15 أغسطس 2012 في 19:10

#7

اخي الكريم فعلت ما اخبرتني به ولكن الان لدي مشكله اخري وهي. انني اريد ان يدخل المستخدم الباركود والكميه فيتم تلقائيا ادراج ال itemId في orders ولا اعلم هذه الكيفيه

#8

الـ Bar code هو وسيلة للتعريف عن المنتج وبالتالي يجب أن تكون قيمته مخزّنة في جدول Items لكل منتج من المنتجات للتعريف عنه.

عندما تقوم بإدخال الـ bar code من المستخدم أو من الجهاز القارئ له، فحينها يمكنك بسهولة تحديد الـ ItemID في sub query

على سبيل المثال:

insert into Orders (ItemID, Qty, Date) values ((select ID from Items where Barcode = @Barcode), @Qty, @Date)

الـ sub query هو استعلام ثانوي داخل الاستعلام الرئيسي كما ترى في المثال أعلاه.

طبعاً الـ @Barcode, @Qty, @Date هي القيم التي ستقوم بتمريرها للاستعلام بالطريقة المناسبة لك وفق لغة البرمجة التي تعمل بها، أو تمريرها كبارامترات ومن ثم استخدامها داخل الـ stored procedure.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#9

بارك الله فيك اخي الكريم شكرا جزيلا لك. وجعله الله في ميزان حسناتك

#10

الحمد لله تم كل شيء بنجاح ولكن بقي شيء وهو أني أريد تأمين قاعدة البيانات من خطر انقطاع التيار الكهربي مثلا أو تهنيج الجهاز فقد سمعت عن استخدام جملة rollback و commit transaction و Error@@ ولكن لا اعلم كيف استخدام هذه الجمل

#11

ضعه في موضوع منفصل لأنه سؤال مختلف.

هذا أفضل لمن يريد البحث عن مثل هذه المعلومة.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…