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

تحريك بيانات من الform الى الreport


Amgad

Recommended Posts

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

 

كود الزر المستخدم لعرض التقرير

Declare
PL paramlist;
Begin
PL1:=create_parameter_List('stud_n');
add_parameter(PL,'stud_n',text_parameter,Get_Stud);
add_parameter(PL,'PARAMFORM',text_parameter,'NO');
PL2:=create_parameter_List('class_n');
add_parameter(PL,'class_n',text_parameter,Get_Class);
add_parameter(PL,'PARAMFORM',text_parameter,'NO');

PL3:=create_parameter_List('year_n');
add_parameter(PL,'year_n',text_parameter,Get_Year);
add_parameter(PL,'PARAMFORM',text_parameter,'NO');

PL4:=create_parameter_List('mon_n');
add_parameter(PL,'mon_n',text_parameter,Get_Mon);
add_parameter(PL,'PARAMFORM',text_parameter,'NO');

if     :global.found = 'N' then
        message('No data selected'); message(' ');
else     
Run_product(Reports,'D:\Osamapro\a\PickEmpNew\emprepnew.rdf',asynchronous,RunTime,FileSystem,PL);
end if;
Destroy_Parameter_List(PL);
End;
---------------------------------------------------------------------
report query to show the report from more table:
SELECT   MM .WRITTING, MM.ORAL,MM.ACTIVE, MM.HOMEWORKE,MM.TOTAL, MM.SUM_M,S.STUD_NAME,
Y.YEAR_NAME,C.CLASS_NAME,M.MON_NAME, SH.SHOBA_NAME, SUB.SUB_NAME
 FROM  MONTH_MARK MM, STUDENT S,YEARS Y,CLASSES C,MONTH M,SHOBA SH,SUBJECT SUB
WHERE ( MM.STUD_NO = S.STUD_NO     
AND  MM.YEAR_NO =  Y.YEAR_NO
 AND MM.SUB_NO = SUB.SUB_NO
 AND  MM.MON_NO = M.MON_NO
 AND S.SHOBA_NO = SH.SHOBA_NO
AND SH.CLASS_NO = C.CLASS_NO
AND SUB.CLASS_NO = C.CLASS_NO
AND  MM.CLASS_NO = C.CLASS_NO
AND  MM.CLASS_NO  = :CLASS_N
AND  MM.MON_NO = :MON_N
AND   MM.STUD_NO = :STUD_N
AND   MM.YEAR_NO = :YEAR_N)
ORDER BY MM.SUB_NO;
----------------------------------------
functions to invoke the parameters:

FUNCTION Get_Class RETURN VARCHAR2
IS
Cond varchar2(2000) := '(1=2)';
BEGIN
:global.found := 'N';
go_block('year_stud');
first_record;
 Loop
  If :selected= 1 Then
      :global.found := 'Y';
   Cond:=Cond || ' OR class_no=' || :class_no;
  End if;
  next_record;
  Exit when :system.last_record = 'TRUE';
 End loop;
 first_record;
Return ('Where ' || Cond) ;
END Get_Class;
----------------------------------
FUNCTION Get_Stud RETURN VARCHAR2
IS
Cond varchar2(2000) := '(1=2)';
BEGIN
:global.found := 'N';
go_block('year_stud');
first_record;
 Loop
  If :selected= 1 Then
      :global.found := 'Y';
   Cond:=Cond || ' OR stud_no=' || :stud_no;
  End if;
  next_record;
  Exit when :system.last_record = 'TRUE';
 End loop;
 first_record;
Return ('Where ' || Cond) ;
END Get_Stud;
--------------------------------------------
FUNCTION Get_Year RETURN VARCHAR2
IS

  Cond varchar2(2000) := '(1=2)';
BEGIN
:global.found := 'N';
go_block('year_stud');
first_record;
 Loop
  If :selected= 1 Then
      :global.found := 'Y';
   Cond:=Cond || ' OR year_no=' || :year_n;
  End if;
  next_record;
  Exit when :system.last_record = 'TRUE';
 End loop;
 first_record;
Return ('Where ' || Cond) ;
END;
--------------------------------------------
FUNCTION Get_Mon RETURN VARCHAR2
IS
Cond varchar2(2000) := '(1=2)';
BEGIN
:global.found := 'N';
go_block('year_stud');
first_record;
 Loop
  If :selected= 1 Then
      :global.found := 'Y';
   Cond:=Cond || ' OR mon_no=' || :mont;
  End if;
  next_record;
  Exit when :system.last_record = 'TRUE';
 End loop;
 first_record;
Return ('Where ' || Cond) ;
END Get_Mon;

وهذه الجداول

CREATE TABLE CLASSES (
  CLASS_NO                                                NUMBER(2),
  CLASS_NAME                                          VARCHAR2(20 BYTE)                NOT NULL,
  STATUS                                                      NUMBER(1),
  LEVEL_NO                                                NUMBER(2),
  PRIMARY KEY (CLASS_NO),
  FOREIGN KEY ( LEVEL_NO)  REFERENCES  LEVELS (LEVEL_NO) ON DELETE CASCADE);
-------------------------------------------------------------------------------------------------------------------------------------
CREATE TABLE SHOBA (
  SHOBA_NO                                           NUMBER(2),
  SHOBA_NAME                                     VARCHAR(20)                 NOT NULL,
  CLASS_NO                                            NUMBER(2) ,
  STATUS                                                  NUMBER(1),
 PRIMARY KEY (SHOBA_NO,CLASS_NO),
 FOREIGN KEY (CLASS_NO)  REFERENCES CLASSES (CLASS_NO) ON DELETE CASCADE);
------------------------------------------------------------------------------------------------------------------------------
CREATE TABLE STUDENT (
  STUD_NO                                                  NUMBER(5),
  STUD_NAME                                            VARCHAR2(50 BYTE)           NOT NULL,
  AGE                                                             NUMBER(3),
  ADRESS                                                    VARCHAR2(30 BYTE),
  SEX                                                            NUMBER(1),
  BRITH_DATE                                           DATE,
  BRITH_PLACE                                        VARCHAR2(20 BYTE),
  PARENT_NAME                                      VARCHAR2(50 BYTE),
  PARENT_PHONE                                   VARCHAR2(20 BYTE),
  PARENT_WORKPHONE                      VARCHAR2(20 BYTE),
  JOB_ADRESS                                        VARCHAR2(30 BYTE),
  STATUS                                                    NUMBER(1),
  S_PHOTO                                               LONG RAW,
 LEVEL_NO                                               NUMBER(2),
 CLASS_NO                                              NUMBER(2),
 SHOBA_NO                                              NUMBER(2),
 NAT_NO                                                     NUMBER(3),
JOB_NO                                                      NUMBER(3),
RELATION_NO                                          NUMBER(2),
 PRIMARY KEY (STUD_NO),
 FOREIGN KEY (LEVEL_NO)  REFERENCES  LEVELS (LEVEL_NO) ON DELETE CASCADE,
 FOREIGN KEY (CLASS_NO) REFERENCES CLASSES (CLASS_NO) ON DELETE CASCADE,
 FOREIGN KEY(SHOBA_NO,CLASS_NO) REFERENCES SHOBA(SHOBA_NO,CLASS_NO) ON DELETE CASCADE,
 FOREIGN KEY (NAT_NO) REFERENCES  NATIONALITY (NAT_NO) ON DELETE CASCADE,
 FOREIGN KEY (JOB_NO) REFERENCES  JOB (JOB_NO) ON DELETE CASCADE,
 FOREIGN KEY (RELATION_NO) REFERENCES  RELATION (RELATION_NO) ON DELETE CASCADE);
------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE TABLE SUBJECT (
  SUB_NO                                                   NUMBER(2),
  SUB_NAME                                             VARCHAR2(20 BYTE)                   NOT NULL,
  CLASS_NO                                              NUMBER(2),
  STATUS                                                    NUMBER(1),
  PRIMARY KEY  (SUB_NO,CLASS_NO ),
FOREIGN KEY (CLASS_NO) REFERENCES  CLASSES (CLASS_NO) ON DELETE CASCADE);
-----------------------------------------------------------------------
CREATE TABLE MONTH (
MON_NO           NUMBER(2),
MON_NAME      VARCHAR2(20),
 PRIMARY KEY (MON_NO));
-------------------------------------------------------------------------------
CREATE TABLE  MONTH_MARK (
WRITTING            NUMBER(4)     ,
ORAL                     NUMBER(4)     ,
ACTIVE                  NUMBER(4)     ,
HOMEWORKE      NUMBER(4)     ,
TOTAL                   NUMBER(4)    ,
SUM_M                   NUMBER(4)   ,
 STUD_NO              NUMBER(5),
 SUB_NO                NUMBER(2),
  MON_NO               NUMBER(2),
CLASS_NO             NUMBER(2),
YEAR_NO              NUMBER(3),  
  FOREIGN KEY (MON_NO)  REFERENCES  MONTH (MON_NO) ON DELETE CASCADE,
FOREIGN KEY (STUD_NO)  REFERENCES STUDENT (STUD_NO) ON DELETE CASCADE,
FOREIGN KEY (SUB_NO,CLASS_NO) REFERENCES SUBJECT (SUB_NO,CLASS_NO) ON DELETE CASCADE ,
 FOREIGN KEY (YEAR_NO) REFERENCES YEARS(YEAR_NO) ON DELETE CASCADE,
 FOREIGN KEY (CLASS_NO) REFERENCES CLASSES (CLASS_NO) ON DELETE CASCADE );
------------------------------------------------------------------------
CREATE TABLE YEAR_STUD (
  REGISTER                                           NUMBER(5),
  STUD_NO                                            NUMBER(5),
  CLASS_NO                                         NUMBER(2),
  SHOBA_NO                                        NUMBER(2),
  LEVEL_NO                                         NUMBER(5),
  YEAR_N                                           NUMBER(3),
 PRIMARY KEY (REGISTER),
FOREIGN KEY (STUD_NO) REFERENCES STUDENT (STUD_NO) ON DELETE CASCADE,
 FOREIGN KEY (CLASS_NO) REFERENCES CLASSES (CLASS_NO) ON DELETE CASCADE,
FOREIGN KEY(SHOBA_NO,CLASS_NO) REFERENCES SHOBA(SHOBA_NO,CLASS_NO) ON DELETE CASCADE,
FOREIGN KEY (LEVEL_NO)  REFERENCES LEVELS (LEVEL_NO) ON DELETE CASCADE,
 FOREIGN KEY (YEAR_N) REFERENCES YEARS (YEAR_NO) ON DELETE CASCADE );
رابط هذا التعليق
شارك

  • الردود 53
  • البداية
  • اخر رد

أكثر المشاركين في هذا الموضوع

  • Amgad

    9

  • عمر باسلم

    5

  • msh

    3

  • khaled

    2

أكثر المشاركين في هذا الموضوع

الصور المنشورة

السلام عليكم ورحمة الله 

 

الأخ / أسامة هزاع

 

اعتقد ان استخدامك لأمر واحد لإسترجاع البيانات من جميع الجداول ليس هو الحل الأفضل

FROM  MONTH_MARK , STUDENTYEARSCLASSES MONTH SHOBA SUBJECT

 

فتوجد لديك امكانيات ضمن ادوات اعداد التقرير يمكن استخدامها مثل تعريف متغيرات لاسترجاع وصف البيانات مثل أسم الشهر من جدول اسماء الشهور وايضا اسم الشعبة واسم التصنيف

 ( اسماء الشهور اساسا لا تحتاج الى جدول لأن الشهور عددها معروف واسمائها ثابته )   

 

اعتقد ان تصميم الجداول والعلاقات يحتاج مراجعه واليك رسمة ال erd  من خلال اوامر الsql  المرسلة منك 

 

-----------------

إن أمكن ارسل صورة من شاشة تجهيز البيانات لإستدعاء التقرير 

لأنك استخدمت  four loops   لتجهيز المتغيرات واعتقد انها ممكن ان تكون one loop 

لأنك تتعامل مع one block = 

go_block('year_stud');

student.gif

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

  • بعد 11 شهور...
  • بعد 7 شهور...

شكرا لك اخي امجد على مساعدتك ..ولكني قد حللت المشكلة وان شاء الله سوف ارفع الحل قريباً؟

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

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

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

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

×   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.

جاري التحميل



×
×
  • أضف...

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

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