الانتقال إلى المحتوى
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.

كيفية التعامل مع 3 بلوكات فى فورم ... الاول Control Block

Featured Replies

بتاريخ:

السلام عليكم اخواني
مشكلتي في هذا الكود

declare
cursor curs1 is select main.name , main.id from main where name = :main.listview ;
cursor curs2 is select traveling.id from main,traveling where main.name = :main.listview and traveling.id = main.id ;
n varchar2(30);
m number ;
s number ;

begin open curs1;
open curs2;
loop
fetch curs1 into n , m ;
fetch curs2 into s ;
exit when curs1%notfound;
exit when curs2%notfound;
:main.name:=n;
:main.id := m ;
:traveling.id:= s;
end loop;



end;



انا عندي جدولين الاول main و الثاني traveling
و هناك علاقة بين الجدولين عن طريق id
و عندي list item
و الفكره انه لما اريد اضغط على اي اسم في الليست المفروض يضع كل المعلومات في البلوكين
و لكن المشكلة انه هو يعمل صح لكن يضع في بلوك traveling فقط سجل واحد و ليس كل السجلات
و اي توضيح انا موجود


الجدولين هما main , traveling
main يحتوي على id و هو primary
travelin يحتوي على id و هو foreign

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

post-71502-1242026657_thumb.jpg

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

بتاريخ:

أخي الكريم
قم بعمل الاتي وعرفني النتيجة
select main.name , main.id into :main.name,:main.id from main where name = :main.listview ;

وبعد كده أنشيء الكيرسور

declare
cursor curs2 is select traveling.id from traveling where traveling.id = :main.id ;
begin open curs2;
go_block('traveling ');
loop
fetch curs2 into :traveling.id ;
next_record;
exit when curs2%notfound;
end loop;
end;



ولي تعليق بعد التجربة

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

اخي الكريم لسه فيه مشاكل و مو جاي يعمل صح
لكن next_record فيه شي جيد و سوف احاول ايضا
و انا اسف عشان احتمال مش عارف اوصل الفكره مضبوط بس اعمل ايه

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

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

اخي الكريم لسه فيه مشاكل
بالمناسبة انا جاعل ال items في بلوك traveling من نوع display item

بتاريخ:

الاخ yasiraq
هو انت ممكن تغير الطريقة اصلاً ، ولا حضرتك عايز حل المشكلة بالطريقة ده
اصل انا شايف ان فيه حل سهل ممكن يتعمل
حضرتك تعمل الليست ايتم على كونترول بلوك
وتعمل البلوكين التانيين ... ماستر ديتالز ، يعني اكيد الاتنين داتا بيز بلوك وليكن اسم البلوك الماستر MAIN_BLK

وتيجي على البلوك الماستر وتروح على البروبيرتي بتاعته وتعمل WHERE CLUSE

تكتب الشرط ده name = :main.listview

وبعد كده تعمل تريجر على الليست ايتم WHEN-MOUSE-DOUBLECLICK

وتكتب الكود

GO_BLOCK('MAIN_BLK');
CLEAR_BLOCK(NO_VALIDATE);
EXECUTE_QUERY;

لو الحل ده مناسبك ... جرب وقولي

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

السلام عليكم
اخي ممكن توضحلي اكثر عشان انا مبتدا و هذا اول مشروع لي
و بارك الله فيك

بتاريخ:

بص يا اخي

حضرتك هتعمل 3 بلوكات

واحد NONDATABASE BLOCK ليكن اسمه CONTROL_BLK

والتاني داتا بيز بلوك عادي على جدول main وليكن اسم البلوك main_BLK وتروح على البروبرتي بتعه وتروح على خاصية WHERE CLUSE وتكتب جواها الشرط ده
name = :main.listview

التالت داتا بيز بلوك برضه على جدول traveling وليكن اسمه traveling_BLK

هنعمل ريلاشن ما بين البلوك main_BLK والبلوك traveling_BLK عن طريق الايتم id

يعني الريلاشن هتكون main_BLK.ID = traveling_BLK.ID

كده يبقى احنا ظبطنا البلوكات ..... نعمل بأه التريجر

هتروح على listview وتعمل تريجر WHEN-MOUSE-DOUBLECLICK


وتكتب الكود

GO_BLOCK('MAIN_BLK');
CLEAR_BLOCK(NO_VALIDATE);
EXECUTE_QUERY;

كده لما اليوسر يدوس دبل كليك بالموس على الليست هيروح على البلوك الاول ويمسح الداتا اللي فيه وبعد كده هينفذ الكويري بناءاً على الشرط اللي احنا حطناه في البروبرتي اللي اسمها WHERE CLUSE ، واول لما يجيب داتا في البلوك الريلاشن هتشتغل وبالتالي هيجيب داتا في البلوك الديتالز بناءاً على البلوك الماستر اللي لسه جايبين فيه داتا حالا

اتمنى كده اكون قدرت اوصل المعلومة .... جرب وقولي

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

السلام عليكم اخي الكريم
انا فهمت طريقتك و هي جدا سلسه و بسيطة و سوالي هو
هل من الممكن ان اغير خواص الايتمز تبعي من text item الى display item
و السوال الثاني هو اين اضع ال list item هل اضعها في control_blk ?
و جزاك الله الف خير اخي الكريم

بتاريخ:

طبيعي يا أخي انك ممكن تغير من تكست ايتم إلى ديسبلاي أيتم ، بس بشرط هتسيب ايتم واحد على الاقل في البلوكين الماستر والديتالز ، علشان حضرتك بتقوله GO_BLOK وبالتالي لازم يكون فيه ايتم واحد يقف عليه في البلوك (NAVIGATION )

هتعلم على كل الايتم اللي عندك ماعدا واحد في كل بلوك زي ما اتفقنا وتروح على البروبرتي بتاعتهم وتخلليه display item

ولو الايتم اللي انت سيبته تكست ، خايف ان اليوسر يروح يعدل فيه او يعمل فيه حاجة جديدة
خللي الخواص التالته للايتم (INSERT_ALLOWED ,DELETE_ALLOWED,UPDATE_ALLOWED ) خلليهم NO

اجابة السؤال التاني ... نعم ، هتحط ال list item في control_blk

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

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

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

بتاريخ:

وجزاك مثل ما قولت .....
الحمد لله ان المشكلة اتحلت .... ربنا يوفقك

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

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

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

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

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

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.