بتاريخ: 12 فبراير 200421 سنة comment_1198 السلام عليكم ورحمة الله وبركاته،، الزملاء الاعزاء لدي form بها بعض بيانات الموظفين تظهر بطريقة ال tabular . اريد أن اختار بعض ارقام الموظفين من هذه الشاشة وارسلها الى report لطباعة بيانات تخص ارقام الموظفين المحددة والمختاره من الform.اي السؤال بطريقة اخرى كيف يتم طباعة تقرير( يحتوى على مجموعه من بيانات الموظف ) بمعلومية رقم موظف واحد أو مجموعة ارقام موظفين مختارة ومحدده من الشاشه .مع تمنياتى لجميع افراد المنتدى بالتوفيق . تقديم بلاغ
بتاريخ: 13 فبراير 200421 سنة comment_1218 تحياتيعزيزي لتمرير قيمة من الـ Form إلى الـ Report مثلاً مثل رقم الدائرة او رقم موظف .كالتالي :سنأخذ مثال عن تمرير رقم الدائرة من الـForm الى الـ Report من جدول الموظفين للمستخدم SCOTT . إبدأ بعمل Report وعندما تصل إلى الــ SQLQuery Statmentاكتب التالي Select * From Emp Where deptno =: P1; P1 = Parameter سنقوم بإنشائه لاحقاًاحفظ التقرير بهذا الإمتداد مثلاً C:\Rep\Rep.rdf إعمل Form جديد يحتوي على جدول الـEmp .... واعمل في داخله زر (BUTTON) لكي نقوم بتمرير القيمه منه واستدعاء التقرير . قم بتغيير الخاصية التالية للزر Muse Navigate = No ثم قم بإضافة الكود التالي : عند ضغط الزر طبعاً When Button Pressed Declare PL paramlist; Begin PL:=create_parameter_List('p1'); add_parameter(PL,'p1',text_parameter,to_char(:deptno)); Run_product(Reports,'c:\rep\rep.rdf',asynchronous,RunTime,FileSystem,PL); Destroy_Parameter_List(PL); End; الآن بمجرد الضغط على الزر ستظهر لك نافذه صغيرة تطلب منك ادخال رقم الدائرة وهي تسمى الــ ParamForm ومن أجل إلغائها وأخذ القيمة مباشرة من الــDeptno الموجود في الشاشة قم بإضافة الجملة التالية قبل جملة الـ Run_product وبعد جملة Add_Parameter add_parameter(PL,'PARAMFORM',text_parameter,'NO'); تم تعديل 13 فبراير 200421 سنة بواسطة Oracle تقديم بلاغ
بتاريخ: 13 فبراير 200421 سنة كاتب الموضوع comment_1224 السلام عليكم ورحمة الله وبركاته،، الأخ / عادل شكرا جزيلا على الرد السريع والمتميز فى عرض طريقه الحل للمشكلة .المطلوب هو الاتي :1- الشاشه التى اتعامل معها بها 10 سجلات لموظفين مختلفين معروضه بطريقه الtabular ( سجلات تكراريه ) .2- اريد ان اختار ارقام محدده منها .3- بالضغط على مفتاح معين يتم استدعاء التقرير .4- هذا التقريريقوم بطباعة بيانات الموظفين المختارين فقط . الملخص : اختيار مجموعه من ارقام الموظفين من الشاشه وبالضغط على المفتاح مره واحده فقط يتم استدعاء التقرير لطباعة بياناتهم .وشكرا لتعاونكم معنا .. تقديم بلاغ
بتاريخ: 13 فبراير 200421 سنة comment_1236 السلام عليكم أخي أمجد هناك طريقة أسهل من عملية تمرير البيانات من النموذج الى التقرير خصوصا إذا كانات هذه البيانات مختلفة مثلا اختيار موظفين من اكثر من قسم فقط جرب المثال التالي وحمل الملفات المرفقة :1- هذا المثال سوف يكون على جدول الموظفين ال EMP لنضيف عامود جديد على هذا الجدول ونسميه S ALTER TABLE EMP ADD(S NUMBER(1)); 2-نقوم بإنشاء نموذج عادي يحتوي على بلوك الموظفين مع العامود الجديد S وسنمثل هذا العامود بصندوق اختيار CheckBox يحتمل احدى القيمتين 1 موظف مختار 0 موظف غير مختار .3-عند تشغيل النموذج سوف نقوم بإختيار الموظفين المراد ظهور معلوماتهم في التقرير وذلك بالضفط على صندوق الإختيار المقابل لكل موظف وعمل حفظ لهذه التغيييرات .3-نقوم ببناء تقرير عادي حيث سيكون شرط جملة الإستعلام فيه هو اظهار اي موظف يحتوي عامود S له على 1 اي انه موظف مختار .4-يمكننا ايضا اضافة "زر امر" في النموذج وتكون وظيفته هي مسح جميع التغييرات التي قمنا بها وذلك لإجل عملية اختيار جديدة BEGIN UPDATE EMP SET S=0; COMMIT; END; جرب المثال واخبرني بالنتيجة ....تحياتي PickEmp.zip تقديم بلاغ
بتاريخ: 14 فبراير 200421 سنة comment_1262 شكراً للاخ عادل والاخ msh فكره الاخ msh هي فكره رائعة جداً ولكن لدي بعض الملاحظات عليها 1- عمل تعديل في الtable structure هذا لا يفضل غالباً حيث انه يقوم بتعديل الtable structure في كل مره تحتاج فيها الى حل مشكله معينه في الform وذلك لعده اسباب انه عندما تقوم بتعديل الtable structure كان تقوم بحذف او ايضافه columen فانه سوف يؤثر على الdatabase objects المعتمده على هذا الجدول مثل الـ views ,procedures , functions , packages وغيرها بحيث تصبح invalidate .عملية ان تقوم بعمل commit من الـ form فانه سوف يعمل end لل tracsaction الخاص بهذا الsession مما قد يؤدي الى حفض بعض البيانات او حذفها . طريقة الاخ عادل هي الطريقة الغالب استخدامها في حالة تمرير بيانات من فورم الى تقرير .ولذلك اقترح بان نستخدم فكره الاخ msh ولكن باستخدام طريقه الاخ عادل وذلك لان الفكره التي استخدمها الاخ msh هي فعلاً حلى لسؤال الاخ امجد بحيث يتم عرض الموظفين الذين نختارهم عن طريقه الـcheck box. والان ندمج الطريقتين الرائعتين للاخوين msh و عادل1- نقوم بعمل check box ولكن لا يكون database item بحيث ان نعمله في الـ emp block ولكن نغير خاصية database item الى no2- نعمل function تقوم بارجاع الـwhere cluse بحث يتم ارسالها باستخدام الـ parameter الى الreport وهذه الـfunction FUNCTION Get_Cond RETURN VARCHAR2 IS Cond varchar2(2000) := '(1=2)'; BEGIN go_block('emp'); first_record; Loop If :is_select=1 Then Cond:=Cond || ' OR empno=' || :empno; End if; next_record; Exit when :system.last_record = 'TRUE'; End loop; Return ('Where ' || Cond) ; END; 3- في زر استدعا التقرير نستخدم نفس الكود الخاص بالاخ عادل مع تبديل قيمة الـparameter المسمى p1 الى قيمة الـfunction كالاتي Declare PL paramlist; Begin PL:=create_parameter_List('p1'); add_parameter(PL,'p1',text_parameter,get_cond); add_parameter(PL,'PARAMFORM',text_parameter,'NO'); Run_product(Reports,'c:\rep\rep.rdf',asynchronous,RunTime,FileSystem,PL); Destroy_Parameter_List(PL); End; 4-الان نعدل الـQuery الموجود في الـReport الى الاتي Select * From Emp &p1; الاخوه msh و عادل شكراً لكم وتقبلوا تحياتي ومتظرين المزيد من الابداع تقديم بلاغ
بتاريخ: 14 فبراير 200421 سنة comment_1278 السلام عليكمأخي خالد جزاك الله خيرا ، خطرت لي الفكرة بحيث أعمل loop على البلوك لكن لم أعرف كيفية كتابة الكود الخاص بالعملية ، وملاحظاتك صحيحة 100% والطريقة التي ذكرتها أفضل فعلا من التعديل على data structure خصوصا مع وجود عدد كبير من السجلات شكرا لك وهذا هو المطلوب .تحياتي تقديم بلاغ
بتاريخ: 14 فبراير 200421 سنة كاتب الموضوع comment_1302 السلام عليكم ,الزملاء الثلاثه الاخ / عادل والاخ / msh والاخ / خالدابعث اليكم بشكر خاص ثلاثى لكم جميعا على هذه المشاركة الايجابيه والهادفه والتى لا تتواجد فى كثير من المنتديات الاخرى . بداية اشكر الاخ / عادل على المبادرة السريعه فى حل الحاله التى طرحتهاثانيا اشكر الاخ/ msh على الفكرة الجديده التى عرضها للحل مع اضافة ملاحظه عليها انه فى حالة طباعة التقرير من اكثر من مستخدم فى نفس التوقيت ستحدث مشكلة لوجود اكثر من تعديل فى حقل الاختيار( الجديد ) بالجدول .ثالثا : شكرا للأخ / خالد على الاضافه المتميزه للحل , مع الفهم العميق لطبيعة وابعاد الفكره المطروحه للحل .عموما فى الختام اضافتي بسيطة جدا وهى وضع الحل النهائى فى خدمة اعضاء المنتدى للاستفاده من الافكار المطروحه للمناقشة .وشكر اخير للثلاثى المتميز.وجزاكم الله خيرا . PickEmpNew.zip تقديم بلاغ
بتاريخ: 14 فبراير 200421 سنة comment_1320 وعليكم السلام أخي أمجد شكرا على الملاحظة وكما ذكر العضو المتميز الأخ خالد فالأفضل عدم التعديل على البيانات وحل المشكلة من داخل النموذج ، وشكرا على طرح المثال المعدل ....تحياتي تقديم بلاغ
بتاريخ: 15 فبراير 200421 سنة comment_1354 شكراً لكم اخواني الجميع وانا الصراحه لا استطيع ان اعبر عن مدى شكري وتقديري لكم الذي يزداد يوماً بعد يوم , وكل ما نقوم بتقديمه ما هو الى واجب علينا كمسلمين ان نتعاون ونفيد بعضنا البعض .احب ان انوه ان مشاركاتكم تفيدنا اكثر مما نفيدكم وجزاكم الله الف خير . تقديم بلاغ
بتاريخ: 23 فبراير 200421 سنة comment_1927 الرجاء من الاستاذ خالد شرح funtion get_cordبالتفصيلوشكرا تقديم بلاغ
بتاريخ: 25 فبراير 200421 سنة comment_2098 السلام عليكمالاخ امجدالمثال لا يعمل اذا اختر اكثر من اثنان من السجلاتفارجو الايضاح وشكرا تقديم بلاغ
بتاريخ: 25 فبراير 200421 سنة كاتب الموضوع comment_2106 السلام عليكم ,الاخ / عمر لقد تم اختبار البرنامج من قبل , ولم ترد اية ملاحظات خلال ال10 ايام الماضية, بعد تجهيزه للتحميل , من الاخوه الذين حملوا البرنامج ولم تظهر الحاله التى ذكرتها .. الرجاء اعادة التحميل والتجربه مره اخرى .وشكرا لك . تقديم بلاغ
بتاريخ: 26 فبراير 200421 سنة comment_2122 السلام عليكمالاخ امجداذا تم اختيار سجلين يتم الذهاب الى التقريراما اذا تم اختيار اكثر من اثنين تظهر الرساة التاليةRep-0091 : Invalid value for parameter 'p1' المعذرة على التأخيـــــــــر في المشاركة تقديم بلاغ
بتاريخ: 26 فبراير 200421 سنة كاتب الموضوع comment_2133 السلام عليكم , الاخ / عمر الرسالة التى ظهرت لك من الreport وليس من الform - وهىrep-0091المفروض ما يتم تحريكة فى الparamter هو الشرط بالكامل مثل Where (1=2) OR empno=7369 OR empno=7521 OR empno=7654عموما سارسل لك نسخه اخرى مع الForm + report مع امكانية عرض الشرط الذي سيتم تحريكه الى التقرير داخل الp1جرب مره اخرى وبلغنى بالنتيجه New.zip تقديم بلاغ
بتاريخ: 26 فبراير 200421 سنة comment_2141 موضوع جيد جداً جزاك الله كل خير ويرب يشتغل عنديالمجاهد تقديم بلاغ
بتاريخ: 1 مارس 200421 سنة comment_2385 السلام عليكم ورحمة الله وبركاتهالاخ امجد مشكورييــــــــــــــــــــــــــــــــــــــــــــنوجزاك الله خيروربنا يوفق المشكلة التي كانت عندي في خصائص البرميتر لم اغير شي تقديم بلاغ
بتاريخ: 8 سبتمبر 200421 سنة comment_12321 بسم اللهماشاء الله على التجاوب الجميع والطرح البناء .أرجو أن تقبلوا عميق شكري لكم جميعاُ مع خالص الإحترام تقديم بلاغ
بتاريخ: 17 أكتوبر 200619 سنة comment_80930 السلام عليكم ورحمة الله.مثال جميل جدا. وبارك الله في كل المشاركين وتقبل الله صيامكم جميعا تقديم بلاغ
بتاريخ: 2 ديسمبر 200619 سنة comment_85620 أسأل الله العلي القدير ان يجعله في ميزان حسناتكم جميعا لمن ساهم في هذه المشاركة وجزاكم الله كل الخير علي الافادة تقديم بلاغ
بتاريخ: 4 يناير 200719 سنة comment_88467 الاجواة الكرام ارجو المساعدة فى تعليم التقارير ولكم جزير الشكر تقديم بلاغ
بتاريخ: 9 يناير 200719 سنة comment_88791 كل الشكر لصاحب الفكرة ولمن اجاب علية كتبة الله في موازين اعمالكم كان الله في عون العبد ما داما في عون اخية تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.