تحياتي.....
اعمل نموذجا واعمل فيه (command) وفي الحدث "عتد النقر" ضع الكود التالي:
DoCmd.SetWarnings False
DoCmd.RunSQL "SELECT Students.Nu, MatName.[MatName] AS PP, 1 AS I, StudDeg.P1 AS AA INTO A FROM MatName INNER JOIN (Students INNER JOIN StudDeg ON Students.Nu = StudDeg.Nu) ON MatName.MatNo = StudDeg.MatNo;", -1
DoCmd.RunSQL "INSERT INTO A ( Nu, PP, I, AA ) SELECT Students.Nu, MatName.[MatName] AS PP, 2 AS I, StudDeg.E1 AS AA FROM MatName INNER JOIN (Students INNER JOIN StudDeg ON Students.Nu = StudDeg.Nu) ON MatName.MatNo = StudDeg.MatNo;", -1
DoCmd.RunSQL "INSERT INTO A ( Nu, PP, I, AA ) SELECT Students.Nu, MatName.[MatName] AS PP, 3 AS I, StudDeg.P2 AS AA FROM MatName INNER JOIN (Students INNER JOIN StudDeg ON Students.Nu = StudDeg.Nu) ON MatName.MatNo = StudDeg.MatNo;", -1
DoCmd.RunSQL "INSERT INTO A ( Nu, PP, I, AA ) SELECT Students.Nu, MatName.[MatName] AS PP, 4 AS I, StudDeg.E2 AS AA FROM MatName INNER JOIN (Students INNER JOIN StudDeg ON Students.Nu = StudDeg.Nu) ON MatName.MatNo = StudDeg.MatNo;", -1
DoCmd.RunSQL "INSERT INTO A ( Nu, PP, I, AA ) SELECT Students.Nu, MatName.[MatName] AS PP, 5 AS I, StudDeg.M AS AA FROM MatName INNER JOIN (Students INNER JOIN StudDeg ON Students.Nu = StudDeg.Nu) ON MatName.MatNo = StudDeg.MatNo;", -1
ثم اعمل استعلاما وضع الكود ادناه فيه ستظهر لك الدرجات حسب المادة ثم حسب الحقول المطلوبة من قبلك لكن بتبديل P1 ب 1 و E1 ب 2..... و هكذا:
TRANSFORM Avg(A.AA) AS AvgOfAA
SELECT Students.Nu, Students.HName, Students.FName, Students.GName, Students.LName
FROM A INNER JOIN Students ON A.Nu = Students.Nu
GROUP BY Students.Nu, Students.HName, Students.FName, Students.GName, Students.LName
PIVOT [PP] & ;
مع تحياتي
ازاد عبدالله ميرخان
كوردستان / دهوك