إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

تحويل بروسيجر الى تريغر


13 رد (ردود) على هذا الموضوع

#1 mmsalman87

mmsalman87

    عضو مميز

  • الأعضــاء
  • 1,689 مشاركة
  • الاسم الأول:Maher
  • اسم العائلة:Salman
  • البـلـد: Country Flag
  • المنصب الحالي:Senior Oracle HCM SaaS Pre Sale Consultant

تاريخ المشاركة 06 July 2009 - 07:32 PM

عندي بروسيجر فيه يمنع الاضافة على الجدول اذا كان للموظف اكثر من اربعة اجازات او اثنتين ان كان دوامه جزئيا
السؤال اريد ان اقلبه الى database trigger لكي اضمن الكود مئة بالمئة
PROCEDURE emp_leave
IS
v_count number;
v_kind number;
BEGIN select count(to_char(leave_date_original,'mm/yyyy')) into v_count from leave
where leave_emp_id=:leave_emp_id;
select emp_kind into v_kind from employees
where emp_id=:leave_emp_id;
if v_kind = 1 and v_count>=4 then
message('áÇ íÌæÒ ÇáÇÓÊÆÐÇä ÇßËÑ ãä 4 ãÑÇÊ Ýí ÇáÔåÑ áãæÙÝí ÇáÏæÇã ÇáßÇãá');
message('áÇ íÌæÒ ÇáÇÓÊÆÐÇä ÇßËÑ ãä 4 ãÑÇÊ Ýí ÇáÔåÑ áãæÙÝí ÇáÏæÇã ÇáßÇãá');
elsif v_kind >= 2 and v_count >=2 then
message('áÇ íÌæÒ ÇáÇÓÊÆÐÇä ÇßËÑ ãä ãÑÊíä áãæÙÝí ÇáÏæÇã ÇáÌÒÆí');
message('áÇ íÌæÒ ÇáÇÓÊÆÐÇä ÇßËÑ ãä ãÑÊíä áãæÙÝí ÇáÏæÇã ÇáÌÒÆí');
else
message('ÛíÑ ãÚÑÝ Úáì ÇáäÙÇã');
end if;
raise form_trigger_failure;
END;

كيف ؟ وبكون مشكوركم

                                                                                             

                                                                                                                  Maher Salman

• Oracle Fusion Human Capital Management 11g Human Resources Certified Implementation Specialist 

Taleo (TEE): Onboarding Administration Ed 3 LVC, Oracle University.

• Taleo (TBE): Recruit Essentials Ed 4.1 LVC, Oracle University.

• Oracle Fusion HCM Implementation, Oracle University.

• Oracle Certified Professional Developer (OCP) - Oracle Forms: Build Internet Applications.

• Oracle Certified Associate Developer (OCA).

• Oracle E-Business Suite R12 Human Capital Management Certified Implementation Specialist (HCM)

                                                                                                                                        
                                                                                                           http://learnoracle.net                                                                                                                

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

أهم مواضيعي ( Oracle Developer )

- برنامج حفظ الكودات - My Codes

- كيفية عمل نظام متعدد اللغات

- انشاء شاشة دخول وتغيير كلمة السر والتحكم بالمستخدمين

- Import And Export On Toad

- التحكم في النظام من خلال الملف Formsweb.cfg

​- Advanced Dynamic List

- توليد ارقام وحروف عشوائية 

 

 

أهم مواضيعي ( Oracle HRMS)

 

Using Special Value set in oracle hrms 


#2 mustafagamiel

mustafagamiel

    مشرف قسم النماذج والمشاريع

  • فريق الإشراف
  • 2,095 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 06 July 2009 - 09:36 PM

السلام عليكم
شيل تعريف البروسيدور
واكتب تعريف ال trigger
create or replace trigger trigger_name  before insert or update on your_table
for each row
decalre
v_count number;
v_kind number;
BEGIN select count(to_char(leave_date_original,'mm/yyyy')) into v_count from leave
where leave_emp_id=:leave_emp_id;
select emp_kind into v_kind from employees
where emp_id=:leave_emp_id;
if v_kind = 1 and v_count>=4 then
raise_appllcation_error(-20211,'you cant');
elsif v_kind >= 2 and v_count >=2 then
raise_appllcation_error(-20211,'you cant');else
end if;
END;


أنا مشعارف أه معنى الرسالة لانها غير واضحة لكن يمكنك تعديله
عموما جربه

اللهم إن كان رزقي في الســــــــــماء فأنزله
وإن كان في الأرض فأخرجـه
وإن كان بعيدا فقربه وإن كان قريبا فيسره
وإن كان قليلا فكثره وإن كان كثيرا فبارك لي فيه

اللـــهم آمين
لا إله إلا الله وحده لاشريك له- له الملك وله الحمد وهو على كل شيء قدير
لا إله إلا أنت سبحانك-- إني كنت من الظالمين






#3 mmsalman87

mmsalman87

    عضو مميز

  • الأعضــاء
  • 1,689 مشاركة
  • الاسم الأول:Maher
  • اسم العائلة:Salman
  • البـلـد: Country Flag
  • المنصب الحالي:Senior Oracle HCM SaaS Pre Sale Consultant

تاريخ المشاركة 07 July 2009 - 08:27 AM

مشكور اخي ولكن عندي مشكلة
اريد لكل موظف اذا كان عدد استئذاناته 4 مرات في الشهر ان لايتم ادخال استئذان جديد
واذا كان موظف جزئي ان يسمح له بالاستئذانات مرتين فقط ؟ كيف ذلك لان جملتي فيها خطأ وهو انه يجلب لك عدد التواريخ كلها انا اريد بكل شهر اتمنى ان تكون وصلت الفكرة

                                                                                             

                                                                                                                  Maher Salman

• Oracle Fusion Human Capital Management 11g Human Resources Certified Implementation Specialist 

Taleo (TEE): Onboarding Administration Ed 3 LVC, Oracle University.

• Taleo (TBE): Recruit Essentials Ed 4.1 LVC, Oracle University.

• Oracle Fusion HCM Implementation, Oracle University.

• Oracle Certified Professional Developer (OCP) - Oracle Forms: Build Internet Applications.

• Oracle Certified Associate Developer (OCA).

• Oracle E-Business Suite R12 Human Capital Management Certified Implementation Specialist (HCM)

                                                                                                                                        
                                                                                                           http://learnoracle.net                                                                                                                

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

أهم مواضيعي ( Oracle Developer )

- برنامج حفظ الكودات - My Codes

- كيفية عمل نظام متعدد اللغات

- انشاء شاشة دخول وتغيير كلمة السر والتحكم بالمستخدمين

- Import And Export On Toad

- التحكم في النظام من خلال الملف Formsweb.cfg

​- Advanced Dynamic List

- توليد ارقام وحروف عشوائية 

 

 

أهم مواضيعي ( Oracle HRMS)

 

Using Special Value set in oracle hrms 


#4 abdu1_far

abdu1_far

    عضو نشط

  • الأعضــاء
  • 430 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 07 July 2009 - 10:02 AM

هتزود شرط على جملة السلكت الاولى

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

وهيكون التريجر كده

create or replace trigger trigger_name before insert or update on your_table
for each row
decalre
v_count number;
v_kind number;
BEGIN select count(to_char(leave_date_original,'mm/yyyy')) into v_count from leave
where leave_emp_id=:leave_emp_id and to_char(:new.leave_date_original,'mm') = to_char(leave_date_original,'mm');
select emp_kind into v_kind from employees
where emp_id=:leave_emp_id;
if v_kind = 1 and v_count>=4 then
raise_appllcation_error(-20211,'you cant');
elsif v_kind >= 2 and v_count >=2 then
raise_appllcation_error(-20211,'you cant');else
end if;
END;

قال رسول الله صلى الله عليه وسلم "إن لله عز وجل عباداً أختصهم بقضاء حوائج الناس ، حببهم إلي الخير وحبب الخير إليهم
هم الاّمنون من عذاب الله يوم القيامة " أوكما قال صلى الله عليه وسلم

#5 mmsalman87

mmsalman87

    عضو مميز

  • الأعضــاء
  • 1,689 مشاركة
  • الاسم الأول:Maher
  • اسم العائلة:Salman
  • البـلـد: Country Flag
  • المنصب الحالي:Senior Oracle HCM SaaS Pre Sale Consultant

تاريخ المشاركة 07 July 2009 - 10:17 AM

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

                                                                                             

                                                                                                                  Maher Salman

• Oracle Fusion Human Capital Management 11g Human Resources Certified Implementation Specialist 

Taleo (TEE): Onboarding Administration Ed 3 LVC, Oracle University.

• Taleo (TBE): Recruit Essentials Ed 4.1 LVC, Oracle University.

• Oracle Fusion HCM Implementation, Oracle University.

• Oracle Certified Professional Developer (OCP) - Oracle Forms: Build Internet Applications.

• Oracle Certified Associate Developer (OCA).

• Oracle E-Business Suite R12 Human Capital Management Certified Implementation Specialist (HCM)

                                                                                                                                        
                                                                                                           http://learnoracle.net                                                                                                                

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

أهم مواضيعي ( Oracle Developer )

- برنامج حفظ الكودات - My Codes

- كيفية عمل نظام متعدد اللغات

- انشاء شاشة دخول وتغيير كلمة السر والتحكم بالمستخدمين

- Import And Export On Toad

- التحكم في النظام من خلال الملف Formsweb.cfg

​- Advanced Dynamic List

- توليد ارقام وحروف عشوائية 

 

 

أهم مواضيعي ( Oracle HRMS)

 

Using Special Value set in oracle hrms 


#6 abdu1_far

abdu1_far

    عضو نشط

  • الأعضــاء
  • 430 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 07 July 2009 - 10:41 AM

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

يبقى هتغير بس وتضيف كلمة :new في التريجر
يعني بدل ما يكون الشرط اللي موجود في جملة السلكتايه الاولى كده

where leave_emp_id=:leave_emp_id and to_char(:new.leave_date_original,'mm') = to_char(leave_date_original,'mm');



هيكون كده

where leave_emp_id=:new.leave_emp_id and to_char(:new.leave_date_original,'mm') = to_char(leave_date_original,'mm');


ويبقى التريجر الجديد بالشكل ده

create or replace trigger trigger_name before insert or update on your_table
for each row
decalre
v_count number;
v_kind number;
BEGIN select count(to_char(leave_date_original,'mm/yyyy')) into v_count from leave
where leave_emp_id=:new.leave_emp_id and to_char(:new.leave_date_original,'mm') = to_char(leave_date_original,'mm');
select emp_kind into v_kind from employees
where emp_id=:leave_emp_id;
if v_kind = 1 and v_count>=4 then
raise_appllcation_error(-20211,'you cant');
elsif v_kind >= 2 and v_count >=2 then
raise_appllcation_error(-20211,'you cant');else
end if;
END;



على فكرة انا اصلا ما بصتش على الكود وصحته لاني اثق في كود الاخ مصطفى ، انا بس بصيت على المطلوب من حضرتك الخاص بالاستئذان خلال شهر معين

جرب كده

تم التعديل بواسطة abdu1_far, 07 July 2009 - 10:42 AM.

قال رسول الله صلى الله عليه وسلم "إن لله عز وجل عباداً أختصهم بقضاء حوائج الناس ، حببهم إلي الخير وحبب الخير إليهم
هم الاّمنون من عذاب الله يوم القيامة " أوكما قال صلى الله عليه وسلم

#7 mmsalman87

mmsalman87

    عضو مميز

  • الأعضــاء
  • 1,689 مشاركة
  • الاسم الأول:Maher
  • اسم العائلة:Salman
  • البـلـد: Country Flag
  • المنصب الحالي:Senior Oracle HCM SaaS Pre Sale Consultant

تاريخ المشاركة 07 July 2009 - 11:20 AM

التريغر لا يقبل العمل ويعطيني الخطأ التالي مع انني راجعته حرف حرف
PLS-00103: Encountered the symbol "END" when expecting one of the
following:
begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe

                                                                                             

                                                                                                                  Maher Salman

• Oracle Fusion Human Capital Management 11g Human Resources Certified Implementation Specialist 

Taleo (TEE): Onboarding Administration Ed 3 LVC, Oracle University.

• Taleo (TBE): Recruit Essentials Ed 4.1 LVC, Oracle University.

• Oracle Fusion HCM Implementation, Oracle University.

• Oracle Certified Professional Developer (OCP) - Oracle Forms: Build Internet Applications.

• Oracle Certified Associate Developer (OCA).

• Oracle E-Business Suite R12 Human Capital Management Certified Implementation Specialist (HCM)

                                                                                                                                        
                                                                                                           http://learnoracle.net                                                                                                                

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

أهم مواضيعي ( Oracle Developer )

- برنامج حفظ الكودات - My Codes

- كيفية عمل نظام متعدد اللغات

- انشاء شاشة دخول وتغيير كلمة السر والتحكم بالمستخدمين

- Import And Export On Toad

- التحكم في النظام من خلال الملف Formsweb.cfg

​- Advanced Dynamic List

- توليد ارقام وحروف عشوائية 

 

 

أهم مواضيعي ( Oracle HRMS)

 

Using Special Value set in oracle hrms 


#8 abdu1_far

abdu1_far

    عضو نشط

  • الأعضــاء
  • 430 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 07 July 2009 - 11:46 AM

لان حضرتك بتعمل SELECT في جدول وفي نفس الوقت بتعمل فيه ابديت او انسيرت
منطقيا الكود ده بيقولي ايه
في حالة الانسرت او الابديت ..... يعني كده الجدول معموله LOCK لانه في مود الانسرت او الابديت
وجوه التريجر بنقوله روح سلكت منه الجدول ، طب ازاي والجدول محجوز حاليا ... مطنقيا ما ينفعش
انت كده عايز تعمل 2 ترانزاكشن في نفس الواقت
طب الحل
هتستخدم ال PRAGMA

هتروح في الDECLARE وتزود السطر ده

PRAGMA AUTONOMOUS_TRANSACTION;
بس كده وجرب
لو ما استغلتش ياريت تبعت لي الجودل ده ، بس بلاش امتداد.RAR عشان مش هيفتح معايا هنا
جرب ياباشا
قال رسول الله صلى الله عليه وسلم "إن لله عز وجل عباداً أختصهم بقضاء حوائج الناس ، حببهم إلي الخير وحبب الخير إليهم
هم الاّمنون من عذاب الله يوم القيامة " أوكما قال صلى الله عليه وسلم

#9 mmsalman87

mmsalman87

    عضو مميز

  • الأعضــاء
  • 1,689 مشاركة
  • الاسم الأول:Maher
  • اسم العائلة:Salman
  • البـلـد: Country Flag
  • المنصب الحالي:Senior Oracle HCM SaaS Pre Sale Consultant

تاريخ المشاركة 07 July 2009 - 12:00 PM

لم يعمل الكود مع التعديل

مرفق الكود والجدول

لاتنسا ان رقم الموظف leave_emp_id
مربوط مع جدول الموظفين

تم التعديل بواسطة maher534510, 07 July 2009 - 12:00 PM.

                                                                                             

                                                                                                                  Maher Salman

• Oracle Fusion Human Capital Management 11g Human Resources Certified Implementation Specialist 

Taleo (TEE): Onboarding Administration Ed 3 LVC, Oracle University.

• Taleo (TBE): Recruit Essentials Ed 4.1 LVC, Oracle University.

• Oracle Fusion HCM Implementation, Oracle University.

• Oracle Certified Professional Developer (OCP) - Oracle Forms: Build Internet Applications.

• Oracle Certified Associate Developer (OCA).

• Oracle E-Business Suite R12 Human Capital Management Certified Implementation Specialist (HCM)

                                                                                                                                        
                                                                                                           http://learnoracle.net                                                                                                                

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

أهم مواضيعي ( Oracle Developer )

- برنامج حفظ الكودات - My Codes

- كيفية عمل نظام متعدد اللغات

- انشاء شاشة دخول وتغيير كلمة السر والتحكم بالمستخدمين

- Import And Export On Toad

- التحكم في النظام من خلال الملف Formsweb.cfg

​- Advanced Dynamic List

- توليد ارقام وحروف عشوائية 

 

 

أهم مواضيعي ( Oracle HRMS)

 

Using Special Value set in oracle hrms 


#10 abdu1_far

abdu1_far

    عضو نشط

  • الأعضــاء
  • 430 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 07 July 2009 - 02:28 PM

يا فندم التريجر شغال كويس
بس كلمة RAISE_APPLICATION_ERROR
كانت مكتوبه خطأ بس
وعادي ممكن تشيل
PRAGMA AUTONOMOUS_TRANSACTION;

جرب بس اكتب كلمة RAISE_APPLICATION_ERROR كده

انت بس كنت حاطط LL في كلمة APPLICATION ، هي المفروض LI

تم التعديل بواسطة abdu1_far, 07 July 2009 - 02:30 PM.

قال رسول الله صلى الله عليه وسلم "إن لله عز وجل عباداً أختصهم بقضاء حوائج الناس ، حببهم إلي الخير وحبب الخير إليهم
هم الاّمنون من عذاب الله يوم القيامة " أوكما قال صلى الله عليه وسلم

#11 mustafagamiel

mustafagamiel

    مشرف قسم النماذج والمشاريع

  • فريق الإشراف
  • 2,095 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 07 July 2009 - 02:32 PM

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

اللهم إن كان رزقي في الســــــــــماء فأنزله
وإن كان في الأرض فأخرجـه
وإن كان بعيدا فقربه وإن كان قريبا فيسره
وإن كان قليلا فكثره وإن كان كثيرا فبارك لي فيه

اللـــهم آمين
لا إله إلا الله وحده لاشريك له- له الملك وله الحمد وهو على كل شيء قدير
لا إله إلا أنت سبحانك-- إني كنت من الظالمين






#12 mmsalman87

mmsalman87

    عضو مميز

  • الأعضــاء
  • 1,689 مشاركة
  • الاسم الأول:Maher
  • اسم العائلة:Salman
  • البـلـد: Country Flag
  • المنصب الحالي:Senior Oracle HCM SaaS Pre Sale Consultant

تاريخ المشاركة 07 July 2009 - 04:15 PM

يا اخواني انا معاكم كلامكم صحيح ولكن نفس الخطأ مرفق الصورة للتاكد

                                                                                             

                                                                                                                  Maher Salman

• Oracle Fusion Human Capital Management 11g Human Resources Certified Implementation Specialist 

Taleo (TEE): Onboarding Administration Ed 3 LVC, Oracle University.

• Taleo (TBE): Recruit Essentials Ed 4.1 LVC, Oracle University.

• Oracle Fusion HCM Implementation, Oracle University.

• Oracle Certified Professional Developer (OCP) - Oracle Forms: Build Internet Applications.

• Oracle Certified Associate Developer (OCA).

• Oracle E-Business Suite R12 Human Capital Management Certified Implementation Specialist (HCM)

                                                                                                                                        
                                                                                                           http://learnoracle.net                                                                                                                

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

أهم مواضيعي ( Oracle Developer )

- برنامج حفظ الكودات - My Codes

- كيفية عمل نظام متعدد اللغات

- انشاء شاشة دخول وتغيير كلمة السر والتحكم بالمستخدمين

- Import And Export On Toad

- التحكم في النظام من خلال الملف Formsweb.cfg

​- Advanced Dynamic List

- توليد ارقام وحروف عشوائية 

 

 

أهم مواضيعي ( Oracle HRMS)

 

Using Special Value set in oracle hrms 


#13 Ahmad.Hasan

Ahmad.Hasan

    مشرف قسم الـ Forms & Reports والمشاريع

  • فريق الإشراف
  • 4,871 مشاركة
  • الاسم الأول:Ahmad
  • اسم العائلة:Hasan
  • البـلـد: Country Flag
  • المنصب الحالي:Oracle HCM Consultant

تاريخ المشاركة 07 July 2009 - 04:24 PM

السلام عليكم
مكتوب بالكود else بالاخير ما فائدتها ؟؟؟
انت عامل if مرتين
يعني مو لازم يكون عندك end if مرتين ؟؟؟

ملفات مرفقة

  • ملف مرفق  2.JPG   96.25كيلو   15 عدد مرات التحميل

.Oracle E-Business Suite R12 HCM Certified Implementation Specialist

 

.Oracle Fusion Human Capital Management 11g Human Resources Certified Implementation Specialist

 


#14 mmsalman87

mmsalman87

    عضو مميز

  • الأعضــاء
  • 1,689 مشاركة
  • الاسم الأول:Maher
  • اسم العائلة:Salman
  • البـلـد: Country Flag
  • المنصب الحالي:Senior Oracle HCM SaaS Pre Sale Consultant

تاريخ المشاركة 07 July 2009 - 05:16 PM

مشكور يا حبيب فعلا كلمة else هي المشكلة كلها مشكورين جميعا صدقا اني اشعر عندما ادخل هذا المنتدى كأني في بيتي مشكورين كلكم اخواني واحبائي

                                                                                             

                                                                                                                  Maher Salman

• Oracle Fusion Human Capital Management 11g Human Resources Certified Implementation Specialist 

Taleo (TEE): Onboarding Administration Ed 3 LVC, Oracle University.

• Taleo (TBE): Recruit Essentials Ed 4.1 LVC, Oracle University.

• Oracle Fusion HCM Implementation, Oracle University.

• Oracle Certified Professional Developer (OCP) - Oracle Forms: Build Internet Applications.

• Oracle Certified Associate Developer (OCA).

• Oracle E-Business Suite R12 Human Capital Management Certified Implementation Specialist (HCM)

                                                                                                                                        
                                                                                                           http://learnoracle.net                                                                                                                

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

أهم مواضيعي ( Oracle Developer )

- برنامج حفظ الكودات - My Codes

- كيفية عمل نظام متعدد اللغات

- انشاء شاشة دخول وتغيير كلمة السر والتحكم بالمستخدمين

- Import And Export On Toad

- التحكم في النظام من خلال الملف Formsweb.cfg

​- Advanced Dynamic List

- توليد ارقام وحروف عشوائية 

 

 

أهم مواضيعي ( Oracle HRMS)

 

Using Special Value set in oracle hrms