الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

أريد طريقة أنه اذا تم بيع أي بضاعة يتم عملية الطرح بشكل تلقائي

Featured Replies

بتاريخ:

أنا عندي برنامج بسيط لحركة المبيعات ويوجد جدول موجود فيه البضائع وأريد طريقة أنه اذا تم بيع أي بضاعة يتم عملية الطرح بشكل تلقائي يظهر المتبقي من البضائع ضمن مربع وشكراً لكم

  • الردود 27
  • المشاهدات 6.4k
  • البداية
  • اخر رد

أكثر المشاركين في هذا الموضوع

Most Popular Posts

  • السلام عليكم Declare vn_quantity Number; Begin Begin Select Quantity Into vn_quantity From Store_Table Where Item_Code :=:Blk_1.Item_Code; Exception When No_Data_Found Then

الصور المنشورة

بتاريخ:

السلام عليكم

Declare
 vn_quantity         Number;
Begin
Begin
 Select Quantity
   Into vn_quantity
   From Store_Table
  Where Item_Code :=:Blk_1.Item_Code;

  Exception When No_Data_Found Then
   vn_quantity := 0;
End;

If Nvl(vn_quantity, 0) - Nvl(:Blk_1.Quantity, 0) > 0 Then
 Update Store_Table
    Set Quantity  = Nvl(Quantity, 0) - Nvl(:Blk_1.Quantity, 0)
  Where Item_Code = :Blk_1.Item_Code;
  
  Commit;
Else
 Message('No Enough Quantity');  
 Message('No Enough Quantity');
 Raise Form_Trigger_Failure;
End If; 
End; 
 



ان تعثرت في فهم اي نقطة في الكود بلغني.

بالتوفيق.

  • بعد 3 أسابيع...
بتاريخ:

جزاك الله خيرا

بتاريخ:
  • كاتب الموضوع

أخي العزيز لو سمحت أريد أن تخبرني أين يوضع هذا الكود ولو تكرمت علينا بشرحه نكون ممنونين لك وشكرين الجهود التي تبذلها معنا

بتاريخ:

يوضع فى التريجر الخاص بمفتاح حفظ الفاتورة
when_button_pressed

بتاريخ:
  • كاتب الموضوع

أخي العزيز أطال الله عمرك وأنت بكامل الصحة والعافية الترايغر شغال تمام ونجحت العملية
عند إجراء حركة بيع أو شراء يتم تحديث جدول الأصناف بشرط التحزين عند إضافة كل سجل
هل يوجد طريقة يتم بها التخزين بعد الإنتهاء من إضافة كافة مواد الفاتورة
أكرر الشكر والإمتنان لك على معلوماتك القيمة .
ونفع الله بك كل من يسعى إلى تعلم الأوراكل لخدمة الإنسانية

بتاريخ:
  • كاتب الموضوع

أخي العزيز ملاحظة أذا كان هناك صنف في جدول الأصناف على سبيل المثال هارد موجود منه العدد8
وأردنا أن نضيفه في عملية بيع في الفاتورة عدد 8 لايتم التخزين وان تم لايتأثر جدول الأصناف
لاحظت أن كل صنف يجب أن يبقى له 1 بعد كل عملية بيع

بتاريخ:

أخي العزيز أطال الله عمرك وأنت بكامل الصحة والعافية الترايغر شغال تمام ونجحت العملية
عند إجراء حركة بيع أو شراء يتم تحديث جدول الأصناف بشرط التحزين عند إضافة كل سجل
هل يوجد طريقة يتم بها التخزين بعد الإنتهاء من إضافة كافة مواد الفاتورة
أكرر الشكر والإمتنان لك على معلوماتك القيمة .
ونفع الله بك كل من يسعى إلى تعلم الأوراكل لخدمة الإنسانية



السلام عليكم
بامكانك عمل Loop على مستوى البلوك وبداخله الكود السابق...
بحيث عند تعديل كامل الاصناف يتم الحفظ...
حاول ان تعملها وازا ما زبطت بنساعدك فيها ان شاءالله...



أخي العزيز ملاحظة أذا كان هناك صنف في جدول الأصناف على سبيل المثال هارد موجود منه العدد8
وأردنا أن نضيفه في عملية بيع في الفاتورة عدد 8 لايتم التخزين وان تم لايتأثر جدول الأصناف
لاحظت أن كل صنف يجب أن يبقى له 1 بعد كل عملية بيع



السلام عليكم
لا اتوقع ان هذا الكلام يحدث من خلال الكود السابق..
لانه يتم التشييك قبل عملية الـ Update...
الرجاء مراجعة الكود والتحقق...
موفق.
بتاريخ:
  • كاتب الموضوع

الرجاء من الأخوة الكرام أفيدوني لم يبقى عندي إلا هذه المعضلة

بتاريخ:

السلام عليكم

أخي الكريم ممكن أن تلائم الكود السابق وتبنيه على شكل تريقر على الجدول

أي ان تجعل التريقر ينطلق وسيكون التعديل لكل الحركات

وهذا بداية الكود
CREATE OR REPLACE TRIGGER Trig_Store_Table
After Update Or iNSERT oR DELETE
On Store_Table
Referencing New As New Old As Old For Each Row

Declare



Begin

----------------
IF Inserting Then
----------------
اكتب الاشياء التي تريد ان تحدث في حالة الاضافة

----------------
ELSIF deleting Then
----------------
اكتب الاشياء التي تريد ان تحدث في حالة االحذف


----------------
ELSIF Updating Then
----------------
اكتب الاشياء التي تريد ان تحدث في حالة التعديل


END IF;

END;


ملاحظة
لتعامل مع القيم الجديدة التي تم إضافتها في الجدول

:New.NAME_FIELD

تم تعديل بواسطة المتميز1

بتاريخ:
  • كاتب الموضوع

أخي العزيز ربي لايحرمنا منك ومن أفكارك عساك تكمل لنا الشرح والاضافات والله ليس لنا غيركم وكل الشكر لكم

بتاريخ:

اخي الكريم وضح لي الجداول التي تريد التأثير عليها وأنا إن شاء الله أحاول أجهزها لك

بتاريخ:
  • كاتب الموضوع

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

إعذرني على مسميات الحقول بالعربي لأني ضمن الجدول سميتهم بناءً على رموز

ويوجد هناك جداول وحقول أخرى لم أذكرها ولكن الجداول التي ذكرتها هي التي أريد أن أجري عليها التغيرات
أكرر شكري الجزيل لك

بتاريخ:

CREATE OR REPLACE TRIGGER Trig_Store_Table
After Update Or iNSERT oR DELETE
On sold
Referencing New As New Old As Old For Each Row

Declare

qNT NUMBER; -- متغير نضع فيه الكمية من جدول االأصناف 

Begin

-- جدول الاصناف هو Category
--  Quantity احقل الكمية في جدول الأصناف  
-- جدول المبيعات Sold
-- SOLD_Quantity حقل الكمية في جدول المبيعات 
begin
Select Quantity  -- استعلام عن  الكمية للعنصر 
   Into qNT
   From category
  Where Item_ID =:NEW.ITEM_ID;

  Exception When No_Data_Found Then
   qNT := 0;
End;


----------------
IF Inserting Then
----------------


If Nvl(qNT , 0) - Nvl(:NEW.SOLD_Quantity, 0) > 0 Then
 Update category 
	Set Quantity  = Nvl(qNT , 0) - Nvl(:NEW.SOLD_Quantity, 0)
  Where Item_ID = :NEW.ITEM_ID;
END IF ;

----------------
ELSIF deleting Then
----------------

Update category 
	Set Quantity  = Nvl(qNT , 0) + Nvl(:OLD.SOLD_Quantity, 0)
  Where Item_ID = :NEW.ITEM_ID;

----------------
ELSIF Updating Then
---------------

If (Nvl(qNT , 0) + Nvl(:OLD.SOLD_Quantity, 0)) - Nvl(:NEW.SOLD_Quantity, 0)  > 0 Then
 Update category 
	Set Quantity  = (Nvl(qNT , 0) + Nvl(:OLD.SOLD_Quantity, 0)) - Nvl(:OLD.SOLD_Quantity, 0) 
  Where Item_ID = :NEW.ITEM_ID;
END IF ;

END IF;

END;



أخي الكريم جرب هذا ورد لي خبر

بتاريخ:

CREATE OR REPLACE TRIGGER Trig_Store_Table
After Update Or iNSERT oR DELETE
On sold
Referencing New As New Old As Old For Each Row

Declare

qNT NUMBER; -- متغير نضع فيه الكمية من جدول االأصناف

Begin

-- جدول الاصناف هو Category
-- Quantity احقل الكمية في جدول الأصناف
-- جدول المبيعات Sold
-- SOLD_Quantity حقل الكمية في جدول المبيعات
begin
Select Quantity -- استعلام عن الكمية للعنصر
Into qNT
From category
Where Item_ID =:NEW.ITEM_ID;

Exception When No_Data_Found Then
qNT := 0;
End;


----------------
IF Inserting Then
----------------


If Nvl(qNT , 0) - Nvl(:NEW.SOLD_Quantity, 0) > 0 Then
Update category
Set Quantity = Nvl(qNT , 0) - Nvl(:NEW.SOLD_Quantity, 0)
Where Item_ID = :NEW.ITEM_ID;
END IF ;

----------------
ELSIF deleting Then
----------------

Update category
Set Quantity = Nvl(qNT , 0) + Nvl(:OLD.SOLD_Quantity, 0)
Where Item_ID = :NEW.ITEM_ID;

----------------
ELSIF Updating Then
---------------

If (Nvl(qNT , 0) + Nvl(:OLD.SOLD_Quantity, 0)) - Nvl(:NEW.SOLD_Quantity, 0) > 0 Then
Update category
Set Quantity = (Nvl(qNT , 0) + Nvl(:OLD.SOLD_Quantity, 0)) - Nvl(:OLD.SOLD_Quantity, 0)
Where Item_ID = :NEW.ITEM_ID;
END IF ;

END IF;

END;

أخي الكريم جرب هذا ورد لي خبر



بعد تعديله
CREATE OR REPLACE TRIGGER Trig_Store_Table
After Update Or iNSERT oR DELETE
On sold
Referencing New As New Old As Old For Each Row
Declare

qNT NUMBER; -- متغير نضع فيه الكمية من جدول االأصناف 

Begin

-- جدول الاصناف هو Category
--  Quantity احقل الكمية في جدول الأصناف  
-- جدول المبيعات Sold
-- SOLD_Quantity حقل الكمية في جدول المبيعات 
begin
Select Quantity  -- استعلام عن  الكمية للعنصر 
   Into qNT
   From category
  Where Item_ID =:NEW.ITEM_ID;

  Exception When No_Data_Found Then
   qNT := 0;
End;


----------------
IF Inserting Then
----------------



 Update category 
	Set Quantity  = Nvl(qNT , 0) - Nvl(:NEW.SOLD_Quantity, 0)
  Where Item_ID = :NEW.ITEM_ID;

----------------
ELSIF deleting Then
----------------

Update category 
	Set Quantity  = Quantity + Nvl(:OLD.SOLD_Quantity, 0)
  Where Item_ID = :old.ITEM_ID;

----------------
ELSIF Updating Then
---------------

 Update category 
	Set Quantity  = (Nvl(qNT , 0) + Nvl(:OLD.SOLD_Quantity, 0)) - Nvl(:new.SOLD_Quantity, 0) 
  Where Item_ID = :NEW.ITEM_ID;


END IF;

END;
/ 

بتاريخ:
  • كاتب الموضوع

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

بتاريخ:
  • كاتب الموضوع

أخي المتميز بارك الله فيك وكثر من أمثالك لقد جربت الترايغير
دخلت على اليوزر الذي أنشأت الجداول عليه وأضف الترايغير
تظهر لي رسالة تم تكوين ترايغير مع أخطاء ترجمة الرجاء منك كيف الحل ولك جزيل الشكر

بتاريخ:

السلام عليكم ورحمة الله وبركاته
اخي الكريم لقد جربت أنا هذا التريقر واشتغل عندي لكن
أرجو ان تتأكد من عدة أشياء اولا اسماء الجداول هل غيرت في التريقر أسماء الجداول حسب الجداول لديك وأيظأ راس التريقر

CREATE OR REPLACE TRIGGER Trig_Store_Table
After Update Or iNSERT oR DELETE
on
[اسم الجدول المبيعات]


الشئ الثاني ممكن أن تعمل
select * from user_errors
لكي تظهر الاخطاء وماهي

تم تعديل بواسطة المتميز1

بتاريخ:
  • كاتب الموضوع

أخي العزيز شكراً لك كثيراً حاولت ولكن نفس الطريقة سأرفق لك الترايغير بعد التعديل والخطاً الذي يظهر

EE.txt

post-12497-043487400 1296126234_thumb.gif

بتاريخ:
  • كاتب الموضوع

أخي العزيز أشكرك من كل قلبي لقد حاولت عن طريق استكشاف الخطاً ونجحت بفضل الله ثم بفضلك

بقي شيء أخر ياصديقي العزيز وهو عندما أنشأت النوافذ على الديفلوبر 6 وصممت الفاتورة أصبحت عند كل بيع صنف ينقص أوتوماتيكياً
ولكن المشكلة هي أنه لو الموجود من صنف معين عدد 10 وأردت أن أبيع 11 تخزن القيمة بالفاتورة وبالعودة إلى جدول الاصناف أجد أن هنال اشارة - جانب الرقم الذي زودته على البيع
هل هناك طريقة بحيث تظهر رسالة تخبرك بأن الموجود من الصنف هو 10 ولايمكن البيع
ولك جزيل الاحترام والتقدير
لقد أفدتني كثيراً والله على ماأقول شهيد

بتاريخ:

أخي الكريم إعمل أستعلام عن الكمية للصنف من جدول الكميات ثم إطرحة من الكمية في الشاشة إذا كانت النتيجة أكبر من الصفر

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

بتاريخ:

أخي الكريم إعمل أستعلام عن الكمية للصنف من جدول الكميات ثم إطرحة من الكمية في الشاشة إذا كانت النتيجة أكبر من الصفر

اسمح بالفاتورة مالم اظهر رسالة للمستخدم أن الكمية أكبر من المخزون (الحدث في when- validat_items(

بتاريخ:
  • كاتب الموضوع

أخي الكريم يعجز اللسان عن شكرك وكما قلت لك أنني مبتدأ في الأوراكل ولاأملك إلا قدر بسيط من المعلومات وأسعى من خلال هذا المنتد العظيم ومن خلال الأعضاء المتميزين أمثالك أن أطور خبرتي ومعرفتي
لذلك أرجو منك رجاء خاص أن تصبر علي لأنني أحتاج إلى أمثلة كي أطبق عليها فأرجوا منك مثال على ذلك
- يوجد لدي جدول مشتريات أضيف فيه كافة المشتريات من الموردين جربت الترايعير الذي أرسلته لي مع بعض التعديل نجحت في ذلك
ولكن يوجد لدي حقل في جدول الأصناف سعر الشراء - سعر المبيع كما يوجد في مفصل فاتورة الشراء نفس الحقول كيف يتم تحديث الحقول الموجودة في جدول الأصناف يتزامن ذلك مع تحديث الكمية .
والشكر لك لايوجد لدي ماأعطيك اياه مقابل مساعدتك لي إلا أن أدعي لك بدوام الصحة والعافية لك ولعائلتك جميعاً ونفع بك أهلك

بتاريخ:
  • كاتب الموضوع

أخي العزيز عند محاولتي للدخول إلى قاعدة البيانات ظهر لي هذا الخطا المرفق ولا أعلم ماهو سبب ذلك

post-12497-084396200 1296282249_thumb.gif

بتاريخ:

أخي الكريم لا أعلم ما هي المشكلة بالضبط لكن أنظر إلى هذا الرابط يتكلم على نفس المشكلة

http://araboug.org/ib/index.php?showtopic=40314&view=findpost&p=185557


أما بالنسبة لتعديل المبلغ في جدول الأصناف فإنه من وجهة نظري لا يتم تعديل هذا السعر لانه لابد من حفظ سعر الشراء ويكون هناك حقل أخر يكون فيه سعر البيع يتم إنزال هذا السعر مباشرة عند أختيار الصنف في فاتورة البيع ولا يتم تعديل هذا الحقلين وإنما التغيير يكون في الفاتورة للبيع وليس في جدول الاصناف . والأفضل إستشارة اشخاص خبير في عملية تحليل الأنظمة لكي يطلعك على ماهو الصحيح تجاه هذه الحركة

تم تعديل بواسطة المتميز1

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.