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

سؤال فى ال List Of Item يعتمد فى اظهار بياناته على another list of item


brave_fox

Recommended Posts



السلامُ عليكم ورحمة الله وبركاته
السادة الفضلاء : أرجو أن تكونوا بخير حال ... اللهُم آمين

لي سؤال أرجو جوابه من حضرتكم , واعتذر على تكرار سؤالى , ولكن حقيقة ً لم أفهم الجواب فى المرة السابقة , أو أني لم استطيع أن افهم حضراتكم سؤالى

السؤال باختصار : إذا كان عندى عمود فى الداتا بيز من النوع ( list of item ) وليكن مثلاً اسمه : محافظات
وعندى عمود آخر من نوع ( List of Item ) أيضا ً , وليكن اسمه : القري

أريد مثلاً إذا ضغطت فى العمود الأولى على ( محافظة الشرقية ) يقوم العمود الثانى تلقائيا ً : بإظهار القرى فى محافظات الشرقية ....



فما الخطوات بارك الله فيكم , وأرجو الإجابة ضرورى جداً حتى يكتمل مشروعى

وهل اقوم أولاً بكتابة ال List Of Item داخل الاعمدة , ثم كتابة الكود .... أم العكس





رابط هذا التعليق
شارك


جزاكم الله خيراً اخى
لكن حضرتك كاتب

trigger when list changed مثلا
وتكتب فيه
if (list_name) = (value) then
(list2) := value2
end ;


لكن انا مش عاوز قيمة واحدة بس
انا مثلاً لو عندى list_name = كذا
هعوز اطلع منها اكثر من قيمة , والمستخدم هو ال يختار


زى مثلا : اذا المحافظة = الشرقية
يكون القيمة = الزقازيق , منيا القمح , كذا , كذا , كذا

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

رابط هذا التعليق
شارك

اخي الحبيب شوف المثال ده هو اللي انت عايزه

LIST_ADDTO_LIST.rar

رابط هذا التعليق
شارك

السلام عليكم
اليك الحل وارجو ان تقوم بتطبيقه بطريقة صحيحة
اولا يتم انشاء جدول للمحافظات به كود المحافظة(مفتاح اساسى) - اسم المحافظة
ثانيا جدول للمناطق مربط بجدول المحافظات به كود المحافظة - كود المنطقة - اسم المنطقة
عمل الشاشة وبناء List of Item خاصة بالمحافظات
ثم عمل List of Item اخرى خاصة بالمناطق بحيث ان كود المحافظة فى جدول المناطق يساوى كود المحافظة فى جدول المحافظات
وبسبب هذا الشرط سوف يتم اظهار المناطق فقط الخاصة بالمحافظة المختارة فى List of Item الاولى
ارجة التطبيق و مراسلتى
معكم ولكم نتواصل
م احمد

رابط هذا التعليق
شارك


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

انا المثال بتاعى : انا عامل فورمة اسمها شؤن العاملين

والفورمة دى فيها اشياء كثيرة : اسم الموظف , ال p.k بتاع كل موظف , وتاريخ الالتحاق , ... وهكذا

من ضمن الاشياء دى
فى عمود عندى اسمه ( القسم ) وهو عبارة عن List of Item ويحوى بداخله اسماء اقسام معينة فى الشركة
وعمود آخر بجانبه اسمه ( الوظيفة ) وهو عبارة عن list of item ايضاً , وهو يحوى بداخله مجموعة من الوظائف

طريقة الربط ال اريدها ( ان القسم بيشمل مجموعة من الوظائف )
فمثلاً لو اختار : قسم الإدارة , فأريد بالتبعية أن تتحول القائمة بتاعة ال Jobs إلى ( مدير , وكيل , أمين , ..... )
لو مثلاً اخترت ( قسم التعليم ) , فأريد بالتبعية أن تتحول القائمة بتاعة ال jobs إلى ( مدرس , مدرسة , .....)
وهكذا

بالله عليكم حد يقولى الخطوات بالترتيب
وأنا لحد الآن عملت عمود ( الاقسام ) كــ list of value وو ضعت بداخله اسماء الاقسام ؟
وعمود الـ ( jobs ) كــ list of value

اعمل ايه بعد كده ؟؟

ارجو الجواب ...
بارك الله فيكم

رابط هذا التعليق
شارك

اخي الفاضل كما قال لك الاخوة من قبل
سوف تقوم بعمل CURSOR تملأ بها الليست الاولى حيث ارتجاع الداتا من جدول الاقسام
وعلى هذه الليست على التريجر WHEN_LIST_CHANGED سوف تقوم بعمل CURSOR يسترجع الداتا من جدول الوظائف بشرط القسم
حيث الشرط يكون الاستعلام كالتالي
SELECT *
FROM JOBS_TABLE
WHERE DEPARTMENT_ID =:FORM_BLOCK.DEPARTMENT_ID;
حيث :FORM_BLOCK.DEPARTMENT_ID:
يمثل ايتم ليست الاقسام بعد الاختيار

رابط هذا التعليق
شارك

brave_fox
إنت زبط الجدول بتاع الموظفين بالأول
1- بدل ما يدخل اسم القسم يدخل رقم القسم
2- بدل ما يدخل اسم الوظيفة ,يدخل رقم الوظيفه
3-اعمل جدول جديد للأقسام فيه رقم القسم و اسم القسم
4- اعمل جدول للوظائف فيه ( رقم الوظيفة + رقم القسم)برايمري كي أو حتى لو ما عملتهم برايمري كي ما في مشكله , بالاضافة إلى عامود اسم الوظيفة

رابط هذا التعليق
شارك



الأخوة الكرام اشكركم لحسن التفاعل , لكن حقيقة أنا مش عامل رقم لكل قسم عشان اعمل حكاية ال primary key
لكن الأعمدة ال عندى هي :-
1- اسم الموظف
2- تاريخ الميلاد
3- تاريخ الالتحاق
4- المؤهل
5- الديانة
6- التليفون
7- العنوان
6- القسم (list of value) : تحوى بداخلها اسماء الاقسام
7- الوظيفة (list of value ) : تحوى بداخلها مجموعة من الوظائف

فمعنديش (primary key ) لكل قسم , بل فقط اريد ربط القسم بالوظيفة

بحيث مثلاً اذا اختار ( القسم = التدريس ) --- فالبتبعية يظهر فى ( الوظيفة ) : مدرس , مدرسة , ..

اعتذر عن تكرار السؤال يا اخوة , ولكن ( القسم ) , والوظيفة , ملهمش p.k , بل عمودين عاديين خالص فى الجدول ..

هل وصلت الفكرة ... واكرر اعتذارى الشديد




رابط هذا التعليق
شارك

اخي بريف .. احييك لاجتهادك في بداية مشوارك
لكن ارى انك يجب ان تضع رقم كود لكل قسم وكل وظيفة , وهذا شئ هام جدا يفيدك كثيرا على مستوى النظام ككل وخاصة التقارير
ثانيا موضوع list ستكون سهلة جدا بإذن الله
نفترض انك قمت بعمل ما اشرت به عليك
الخطوة التالية
عمل record group لتعبئة القائمة الاولى وليكن اسمها main_bank
مثال لجملة الاستعلام select bank_name,to_char(bank_cd) bankcd from main_bank
عمل record group اخرى لفروع البنوك ولتكن جملتها كالتالي:
select branch_name,to_char(branch_cd) brcd where main_bank_cd = :bank_list

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

الخطوة الأخيرة هي كتابة تريجر when-list-changed لاعادة تعبئة القائمة الخاصة بالفروع من جديد ، حتى تتغير في كل مرة تتغير فيها قائمة البنوك الرئيسية

ودمتم سالمين

لا تنسانا من دعائك

رابط هذا التعليق
شارك




الأخوة الكرام اشكركم لحسن التفاعل , لكن حقيقة أنا مش عامل رقم لكل قسم عشان اعمل حكاية ال primary key
لكن الأعمدة ال عندى هي :-
1- اسم الموظف
2- تاريخ الميلاد
3- تاريخ الالتحاق
4- المؤهل
5- الديانة
6- التليفون
7- العنوان
6- القسم (list of value) : تحوى بداخلها اسماء الاقسام
7- الوظيفة (list of value ) : تحوى بداخلها مجموعة من الوظائف

فمعنديش (primary key ) لكل قسم , بل فقط اريد ربط القسم بالوظيفة

بحيث مثلاً اذا اختار ( القسم = التدريس ) --- فالبتبعية يظهر فى ( الوظيفة ) : مدرس , مدرسة , ..

اعتذر عن تكرار السؤال يا اخوة , ولكن ( القسم ) , والوظيفة , ملهمش p.k , بل عمودين عاديين خالص فى الجدول ..

هل وصلت الفكرة ... واكرر اعتذارى الشديد







مهو انت لازم تعمل جدول للأقسام و الوظائف عشان تعرف تربطهم

ولو مش عايز تعمل كده ,,, في طريقه ملتوية ممكن أقولك تعملها بس ده لو كانت الاقسام و الوظائف عددها قليل

هي قليله ولا لأ؟
رابط هذا التعليق
شارك

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

رابط هذا التعليق
شارك

اخي الفاضل
هناك علاقة بين كلا من الجدولين الاقسام والوظائف
فلا بد ان يحتوي جدول الوظائف على عمود لللاقسام يحدد اي قسم تنتمي اليه تلك الوظيفة
يمكنك تعديل جدول الاقسام بإضافة عمود رقم القسم بحيث يكون PRIMARY KEY
وكذلك اضافة عمودين للوظائف احدهما رقم الوظيفة PRIMARY KEY والاخر رقم القسمFOREIGN KEY

[left][left]ALTER TABLE (DEPT TABLE ) ADD (DEPT_NO NUMBER PRIMARY KEY;
ALTER TABLE (JOBS TABLE) ADD (JOB_NO NUMBER PRIMARY KEY,DEPT_NO NUMBER REFERENCES DEPT_NAME(DEPT_NO)); [/left]
[/left]


يتم اختيار الوظيفة طبقا لتساوي ارقام الاقسام

رابط هذا التعليق
شارك



الأخوة الكرام

مُمتن جداً لتفاعلكم معى , وعاجز عن شكر حضرتكم

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


هو جدول واحد أختنا الكريمة , وليسوا بجدولين ...




ولو مش عايز تعمل كده ,,, في طريقه ملتوية ممكن أقولك تعملها بس ده لو كانت الاقسام و الوظائف عددها قليل

هي قليله ولا لأ؟



الجدول ال انا عامله , فيه Primary Key وهو فقط الرقم القومى للموظف Social_No
وبعد كده اعمدة كالآتى
Emp_name
Birthday
hirdate
Gender
Quaalification
Dept_name ( وده عبارة عن List of item ) فيه حوالى أسماء خمسة أقسام
JOB : ( ودى برضو عبارة عن LIST OF ITEM )

ومن خلال لما اعمل اختيار لاسم قسم , أريد أن يندرج منه تقريباً على الأكثر ( خمسة وظائف ) , وهكذا لكل اختيار

ودى فعلاً انا عملتها فورمة , مش لسه هكريت من اول وجديد ...

يعنى الخلاصة :
ده جدول واحد
وP.K هو رقم الموظف
وال List OF Items داخل كل جدول من ال بسأل فيه مش هتكون كتيرة اوى يعنى .

شكراً للاخوة الكرام

تم تعديل بواسطة brave_fox
رابط هذا التعليق
شارك

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

رابط هذا التعليق
شارك

اخي قد تفهمت المطلوب على ما اظن
انت تملك جدول كما ذكرت يحوي بيانات الموظف وتريد اضافة بيانات الوظيفة والقسم للموظف
من خلال list of items وانت لست مضطرا في هذه الحالة لتعديلات في الجدول الخاص بالموظفين
ولكنك ستقوم بعمل جدول للاقسام

create table department (dept_no number primary key,dept_name varchar2(100));


ثم جدول لوظائف

create table jobs (job_no number primary key,job_name varchar2(100),dept_no references department(dept_no));



وفي الفورمة الخاصة بالموظفين سيتم ادخال بيانات القسم والوظيفة من خلال الليست ايتم حيث :
يتم ملء الليست من خلال استرجاع البيانات من الجداول تضع الكيرسور التالي في لتريجر when_new_item_instance

DECLARE
 CURSOR CUR_DEPT IS 
SELECT  DEPT_NAME
FROM DEPARTMENT
ORDER BY DEPT_NO;
BEGIN

FOR  I IN CUR_DEPT
	LOOP 
ADD_LIST_ELEMENT('Dept_name',1,I.DEPT_NAME,I.DEPT_NAME);
EXIT WHEN SQL%NOTFOUND ;
END LOOP;
END;


وكذلك ملء ليست الوظائف بوضع الكيرسور التالي في التريجر WHEN_LIST_CHANGED على الليست الخاص بالاقسام :

DECLARE
 CURSOR CUR_JOBS IS 
SELECT  JOB_NAME
FROM JOBS
WHERE DEPT_NO=(SELECT DEPT_NO 
FROM DEPARTMENTS
WHERE DEPT_NAME=:DEPT_NAME)
ORDER BY JOBS_NO;
BEGIN
	FOR  I IN CUR_JOBS
	LOOP 
ADD_LIST_ELEMENT('JOB',1,I.JOB_NAME,I.JOB_NAME);
EXIT WHEN SQL%NOTFOUND ;
END LOOP;
END;

رابط هذا التعليق
شارك

لقد قمت باظافة موضوع جديد في شرح اعتماد قائمة على قائمة اخرى اتمنى الاطلاع عليه وان شاء الله يفي بالغرض

رابط هذا التعليق
شارك

  • بعد 8 سنة...
في ٢٢‏/٥‏/٢٠١١ at 09:53, عزيز القادري said:

اعتماد قائمة على قائمة اخرى اتمنى الاطلاع عليه وان شاء الله يفي بالغرض

ممكن الرابط

رابط هذا التعليق
شارك

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

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

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

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

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

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