بتاريخ: 7 أغسطس 200817 سنة comment_135347 السلام عليكم..عندي table اسمه projects فيه بيانات البروجكتس .. بستخدم ال coulmns (prj_num ,parent_prj) في ال SQL Query بترجع ال Childs لكل بروجكتselect lpad(' ',2*(level-1)) || to_char(prj_NUM)from Projectsstart with PARENT_prj =:master_block.prj_numconnect by prior prj_NUM = PARENT_prj)السؤال: أنا بشتغل على الفورم وعاوزه أطلع ال results في data block علشان أعرضها على ال screen.كيف ممكن أخلي ال results يطلعو في data block يتحمل multi records ؟؟ أنا عملت creation ل data block (block146) 1 وحطيت فيه Item4 وخليته tabular علشان أعرض فيه كل الresults وخليته from clause query ,وحطيتselect lpad(' ',2*(level-1)) || to_char(prj_NUM) into :BLOCK146.item4 from Projects start with PARENT_prj = :master_block.prj_num connect by prior prj_NUM = PARENT_prj; في Query Data Source Name بس لقيت مشاكل وماعرضلي results وبيطلعلي بال run مشكله block146 must have at least one primary keyازا ممكن أي حد عنده خبره في الموضوع يساعدني فيه... تقديم بلاغ
بتاريخ: 7 أغسطس 200817 سنة comment_135353 مرحبا أخت ناديةمشكلتك بسيطه بإذن الله في أكثر من طريقه لحلهاالأولى اذا كان datablock مربوط مع database يمكن انك تضعي الشرط في where clause propertyوالطريقه الثانية اذا كان datablock غير مربوط مع database فبالإمكان استخدام الـ cursorواذا احتجتي لأي مساعده فهذه ايميلاتي[email protected][email protected] تقديم بلاغ
بتاريخ: 7 أغسطس 200817 سنة كاتب الموضوع comment_135357 ال block غير مربوط بال data base وحاولت استخدم cursor بس ماعرفت في اي مكان يجب وضعهأنا عاوزه لما ال user يسوي query تطلع ال results من ال query في ال data block انا وضعت ال cursor فيpost query لل master block بس طلعلي erros في ال run منها Illegal restricted procedure next_record in post-query triggerوهاد ال cursor اللي استخدمتو declare cursor C1 is select lpad(' ',2*(level-1)) || to_char(prj_NUM) from projetcsstart with PARENT_prj= :master_block.prj_NUMconnect by prior prj_NUM = PARENT_prj;Begin open C1; loop fetch C1 into :BLOCK149.prj; exit when C1%notfound; next_record; end loop; close C1; first_record; end; تقديم بلاغ
بتاريخ: 7 أغسطس 200817 سنة comment_135406 مرحباهذا الكود الصحيح واكتبيه داخل التريجر على مستوى الفورم الذي اسمه key-exeqry declare cursor C1 is select lpad(' ',2*(level-1)) || to_char(prj_NUM) from projetcs start with PARENT_prj= :master_block.prj_NUM connect by prior prj_NUM = PARENT_prj; Begin execute_query; open C1; go_item('BLOCK149.prj'); loop fetch C1 into :BLOCK149.prj; exit when C1%notfound; next_record; end loop; close C1; first_record; end; ثم بعد ذلكيجب انشاء ما يلي على مستوى الفورمon-error trigger ويكتب بداخله كلمة null;on-message trigger ويكتب بداخله كلمة null;وعلى فكرة أنا نسيت أعرف بنفسي بالبدايةانا عامر من السعودية تقديم بلاغ
بتاريخ: 10 أغسطس 200817 سنة كاتب الموضوع comment_135629 شكرا جزيلا أخ عامر على المساعده...حطيت ال cursor على مستوى الفورم في key-exeqry بس هناك عدة مشاكل منها:ال query تصير لاول record فقط ويظهر ال childs في لبلوك بس لما انتقل الى next record لبروجكت آخر معلومات البروجكت الاول تبقى في البلوك ومايصير excute لل childs لل records اللي بعدها ... كيف يمكن حل هذه المشكله؟والمشكله الثانيه انه الحين مانقدر نسوي search على ريكورد معين لانه لما نضغط زر ال search وبعدين نضغط زر ال excute query بينفذ ال cursor ومابيسوي سيرش على ال record !! تقديم بلاغ
بتاريخ: 10 أغسطس 200817 سنة comment_135637 مرحباأنا أعطيتك الحل بناءا على ال cursor اللي بعثتيهلكن لماذا لا يكون ال datablock مربوط مع ال database وبهذه الطريقه ما في داعي تغلبي نفسك بال cursorعلى العمومابعثي لي الشاشه والجداول وأنا راح أحل لك كل المشاكل وأبعثها الك مره ثانية جاهزة تقديم بلاغ
بتاريخ: 11 أغسطس 200817 سنة comment_135735 مرحبالقد اتطلعت على الملف الذي أرسلته لي ولاحظت ما يليproj_num نوعه number وparent_prj نوعه varchar2يجب أن يكونا من نفس النوع وبالتالي بإمكانك ربط الداتابلوك مع قاعدة البياناتوقومي بانشاء العلاقه التالية بين الداتا بلوك الأول والداتا بلوك الثانيparent_prj=proj_numوريحي حالك من الcursorواذا ما زبطت معك ابعثي لي الفورم أساعدك فيه مع جملة الcreate للجدول تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.