بتاريخ: 11 مايو 200917 سنة comment_156438 السلام عليكم اخوانيمشكلتي في هذا الكود 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 , travelingmain يحتوي على id و هو primarytravelin يحتوي على id و هو foreignو بشكل ملخص اريد لما اضغط على اي اسم من الاسماء الموجوده في الليستتضهر المعلومات في الحقول تم تعديل 11 مايو 200917 سنة بواسطة yasiraq تقديم بلاغ
بتاريخ: 11 مايو 200917 سنة comment_156441 أخي الكريم قم بعمل الاتي وعرفني النتيجة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; ولي تعليق بعد التجربة تقديم بلاغ
بتاريخ: 11 مايو 200917 سنة كاتب الموضوع comment_156443 اخي الكريم لسه فيه مشاكل و مو جاي يعمل صحلكن next_record فيه شي جيد و سوف احاول ايضا و انا اسف عشان احتمال مش عارف اوصل الفكره مضبوط بس اعمل ايه تم تعديل 11 مايو 200917 سنة بواسطة mustafagamiel تقديم بلاغ
بتاريخ: 11 مايو 200917 سنة comment_156444 أخي جرب مرة أخرى لاني كنت غيرت فيه أنا لارى فيه مشكلة وياريت تقول ماذا ينتج لك تقديم بلاغ
بتاريخ: 11 مايو 200917 سنة كاتب الموضوع comment_156452 اخي الكريم لسه فيه مشاكلبالمناسبة انا جاعل ال items في بلوك traveling من نوع display item تقديم بلاغ
بتاريخ: 11 مايو 200917 سنة comment_156459 الاخ yasiraq هو انت ممكن تغير الطريقة اصلاً ، ولا حضرتك عايز حل المشكلة بالطريقة ده اصل انا شايف ان فيه حل سهل ممكن يتعمل حضرتك تعمل الليست ايتم على كونترول بلوكوتعمل البلوكين التانيين ... ماستر ديتالز ، يعني اكيد الاتنين داتا بيز بلوك وليكن اسم البلوك الماستر MAIN_BLKوتيجي على البلوك الماستر وتروح على البروبيرتي بتاعته وتعمل WHERE CLUSEتكتب الشرط ده name = :main.listview وبعد كده تعمل تريجر على الليست ايتم WHEN-MOUSE-DOUBLECLICKوتكتب الكود GO_BLOCK('MAIN_BLK');CLEAR_BLOCK(NO_VALIDATE);EXECUTE_QUERY;لو الحل ده مناسبك ... جرب وقولي تقديم بلاغ
بتاريخ: 11 مايو 200917 سنة كاتب الموضوع comment_156461 السلام عليكماخي ممكن توضحلي اكثر عشان انا مبتدا و هذا اول مشروع ليو بارك الله فيك تقديم بلاغ
بتاريخ: 11 مايو 200917 سنة comment_156466 بص يا اخي حضرتك هتعمل 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 ، واول لما يجيب داتا في البلوك الريلاشن هتشتغل وبالتالي هيجيب داتا في البلوك الديتالز بناءاً على البلوك الماستر اللي لسه جايبين فيه داتا حالااتمنى كده اكون قدرت اوصل المعلومة .... جرب وقولي تقديم بلاغ
بتاريخ: 11 مايو 200917 سنة كاتب الموضوع comment_156467 السلام عليكم اخي الكريمانا فهمت طريقتك و هي جدا سلسه و بسيطة و سوالي هو هل من الممكن ان اغير خواص الايتمز تبعي من text item الى display itemو السوال الثاني هو اين اضع ال list item هل اضعها في control_blk ?و جزاك الله الف خير اخي الكريم تقديم بلاغ
بتاريخ: 11 مايو 200917 سنة comment_156469 طبيعي يا أخي انك ممكن تغير من تكست ايتم إلى ديسبلاي أيتم ، بس بشرط هتسيب ايتم واحد على الاقل في البلوكين الماستر والديتالز ، علشان حضرتك بتقوله GO_BLOK وبالتالي لازم يكون فيه ايتم واحد يقف عليه في البلوك (NAVIGATION ) هتعلم على كل الايتم اللي عندك ماعدا واحد في كل بلوك زي ما اتفقنا وتروح على البروبرتي بتاعتهم وتخلليه display itemولو الايتم اللي انت سيبته تكست ، خايف ان اليوسر يروح يعدل فيه او يعمل فيه حاجة جديدة خللي الخواص التالته للايتم (INSERT_ALLOWED ,DELETE_ALLOWED,UPDATE_ALLOWED ) خلليهم NOاجابة السؤال التاني ... نعم ، هتحط ال list item في control_blk تقديم بلاغ
بتاريخ: 11 مايو 200917 سنة كاتب الموضوع comment_156475 اخي المشكلة انحلت و الحمد للهجزاك الله الف خير على المساعدة و ووفقك لما فيه خير لكاستفدت منك الكثير تم تعديل 11 مايو 200917 سنة بواسطة yasiraq تقديم بلاغ
بتاريخ: 12 مايو 200917 سنة comment_156551 وجزاك مثل ما قولت ..... الحمد لله ان المشكلة اتحلت .... ربنا يوفقك تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.