緊急!科目評語問題(SSTAM請幫幫手)

本文由 KC 在 2005-11-29 發表於 "WebSAMS 討論區" 討論區

  1. 10517336

    KC
    Expand Collapse

    文章:
    24
    讚:
    0

    各位高人,你好:

    有以下數端問題,希望善心人能幫幫手

    1.請問科目分卷(如中文科分卷是中文讀本),是否可以在科目分卷輸入評語?

    2.如何在P表中作以下科目評語之修改?例如己在websams中輸入中文科之科目評語,但想轉到在分卷中文讀本中顯示,如何修改公式辦到這個目的?先謝謝!

     

    KC

     

     
  2. 10517336

    KC
    Expand Collapse

    文章:
    24
    讚:
    0

    補充現在之設計:

    正常來說會顯示某科分數及評語(這裏以*代替評語),

    如:  陳大文   中國語文   70 *

                       - 中文讀本  90

    {@Grade_ATA2} + if isnull({tb_asr_rptpSCORE.ChComment_ATA2}) or len({tb_asr_rptpSCORE.ChComment_ATA2}) = 0 then
    ""
    else
    "*"

    但如何將科目評語移位至分卷上,例

    如:  陳大文   中國語文   70

                       - 中文讀本  90 *

    煩請賜教

     
  3. Charles

    Charles
    Expand Collapse

    [parsehtml]<P>1. WebSAMS 暫不支援這功能。</P> <P>2. 最簡單的方法是在科目評語前加一個轉行字符</P> <P>chr(13)+({tb_asr_rptpSCORE.ChComment_ATA2})</P> <P>Charles</P>[/parsehtml]
     
    #3 Charles, 2005-11-29
  4. 10517336

    KC
    Expand Collapse

    文章:
    24
    讚:
    0

    唔好意思,但咁做會唔會影響其他沒有分卷的科目?因為只有中,英文科才有分卷,但這個程式似乎會出晒所有科目,咁做其他科咪有會跳左落下一行?

     
  5. Charles

    Charles
    Expand Collapse

    [parsehtml]<P>將科目和科目分卷分2個subreport顯示,可參考Report P(科目評語)。</P> <P>Charles</P>[/parsehtml]
     
    #5 Charles, 2005-11-29
  6. 10517336

    KC
    Expand Collapse

    文章:
    24
    讚:
    0

    不好意思,小弟未能領悟Charles所教之做法,但可否在report p中做手腳:例如做一個string出黎,用作把在科目顯示的remark,自動對應地調到相關科目分卷中顯示?

    如:

    1. 陳大文   中國語文   70 *
                     - 中文讀本  90
                     - 中文作文  75

                  英國語文   80 *
                     - 英文讀本  90
                     - 英文作文  75

                 數學        100*

                 宗教          60

    自動從科目調到分卷:

    2. 陳大文   中國語文   70
                     - 中文讀本  90*
                     - 中文作文  75

                  英國語文   80 
                     - 英文讀本  90
                     - 英文作文  75*

                 數學        100*

    Deadline在即,謝謝賜教和急救!謝謝!

     

                 宗教          60

     
  7. Charles

    Charles
    Expand Collapse

    [parsehtml]<P>應該是可以的。</P> <P>Charles</P>[/parsehtml]
     
    #7 Charles, 2005-11-30
  8. 10517336

    KC
    Expand Collapse

    文章:
    24
    讚:
    0
    Charles兄,可否賜教如何請那個公式,感激,謝謝!
     
  9. Charles

    Charles
    Expand Collapse

    [parsehtml]<P>請聯絡校主求助。</P> <P>Charles</P>[/parsehtml]
     
    #9 Charles, 2005-11-30
  10. SIM - SS Tam

    SIM - SS Tam
    Expand Collapse

    [parsehtml]<P>I hope it is not too late. You can try the following formula.<BR>(Since I do not have any suitable data for testing, tell me if the formula has any error.)</P> <P>shared stringVar compComment;<BR><A href="mailto:{@Grade_ATA2">{@Grade_ATA2</A>}+<BR>(<BR>if isnull({tb_asr_rptpSCORE.ChComment_ATA2}) or len({tb_asr_rptpSCORE.ChComment_ATA2}) = 0 then <BR>&nbsp; (if (not isnull({TB_ASR_RptPScore.CHSUBJCOMNAME})) and ((trim({TB_ASR_RptPScore.CHSUBJCOMNAME}) = '中文讀本') or (trim({TB_ASR_RptPScore.CHSUBJCOMNAME}) = '英文作文')) then<BR>&nbsp;&nbsp;&nbsp;&nbsp; compComment<BR>&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp; '')<BR>else <BR>&nbsp; if ({TB_ASR_RptPScore.CHSUBJNAME} = '中國語文') or ({TB_ASR_RptPScore.CHSUBJNAME} = '英國語文') then<BR>&nbsp;&nbsp;&nbsp; ((if isnull({tb_asr_rptpSCORE.ChComment_ATA2}) or len({tb_asr_rptpSCORE.ChComment_ATA2}) = 0 then <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compComment := ''<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compComment := {tb_asr_rptpSCORE.ChComment_ATA2});<BR>&nbsp;&nbsp;&nbsp; '')<BR>&nbsp; else <BR>&nbsp;&nbsp;&nbsp; {tb_asr_rptpSCORE.ChComment_ATA2})</P>[/parsehtml]
     
    #10 SIM - SS Tam, 2005-11-30
  11. 10517336

    KC
    Expand Collapse

    文章:
    24
    讚:
    0

    真的很感激SS-Tam出手幫助,真不知道如何答謝,無言感激!

    雖然可以把remark搬移到分卷項目那裏,但為何有部分原先沒有科目備註的同學(因並非每個同學都有科目備註),卻在搬移到分卷後突然出現了?

     
  12. SIM - SS Tam

    SIM - SS Tam
    Expand Collapse

    [parsehtml]<P>唔好意思,果然有集小虫.可試改成以下公式.</P> <P>shared stringVar compComment;<BR>if isnull({tb_asr_rptpSCORE.ChComment_ATA4}) or len({tb_asr_rptpSCORE.ChComment_ATA4}) = 0 then <BR>(<BR>if (not isnull({TB_ASR_RptPScore.CHSUBJCOMNAME})) and ((trim({TB_ASR_RptPScore.CHSUBJCOMNAME}) = '中國讀本') or (trim({TB_ASR_RptPScore.CHSUBJCOMNAME}) = '英文作文')) then<BR>compComment<BR>else<BR>''<BR>)<BR>else <BR>if ({TB_ASR_RptPScore.CHSUBJNAME} = '中國語文') or ({TB_ASR_RptPScore.CHSUBJNAME} = '英國語文') then<BR>(<BR>(<BR>if isnull({tb_asr_rptpSCORE.ChComment_ATA4}) or len({tb_asr_rptpSCORE.ChComment_ATA4}) = 0 then <BR>compComment := ''<BR>else<BR>compComment := {tb_asr_rptpSCORE.ChComment_ATA4}<BR>);<BR>''<BR>)<BR>else <FONT color=#ff0000>(<BR>compComment := '';<BR></FONT>{tb_asr_rptpSCORE.ChComment_ATA4}<BR><FONT color=#ff0000>)</FONT></P>[/parsehtml]
     
    #12 SIM - SS Tam, 2005-12-01
  13. SIM - SS Tam

    SIM - SS Tam
    Expand Collapse

    [parsehtml]<P>Sorry, I use my testing version for the amendment. Please use the following one for your school's case. You need to add the text in red colour only.</P> <P>shared stringVar compComment;<BR><A href="mailto:{@Grade_ATA2">{@Grade_ATA2</A>}+<BR>(<BR>if isnull({tb_asr_rptpSCORE.ChComment_ATA2}) or len({tb_asr_rptpSCORE.ChComment_ATA2}) = 0 then <BR>&nbsp; (if (not isnull({TB_ASR_RptPScore.CHSUBJCOMNAME})) and ((trim({TB_ASR_RptPScore.CHSUBJCOMNAME}) = '中文讀本') or (trim({TB_ASR_RptPScore.CHSUBJCOMNAME}) = '英文作文')) then<BR>&nbsp;&nbsp;&nbsp;&nbsp; compComment<BR>&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp; '')<BR>else <BR>&nbsp; if ({TB_ASR_RptPScore.CHSUBJNAME} = '中國語文') or ({TB_ASR_RptPScore.CHSUBJNAME} = '英國語文') then<BR>&nbsp;&nbsp;&nbsp; ((if isnull({tb_asr_rptpSCORE.ChComment_ATA2}) or len({tb_asr_rptpSCORE.ChComment_ATA2}) = 0 then <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compComment := ''<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compComment := {tb_asr_rptpSCORE.ChComment_ATA2});<BR>&nbsp;&nbsp;&nbsp; '')<BR>&nbsp; else <FONT color=#ff0000>(<BR>&nbsp;&nbsp;&nbsp; compComment := '';<BR></FONT>&nbsp;&nbsp;&nbsp; {tb_asr_rptpSCORE.ChComment_ATA2})<BR>&nbsp;<FONT color=#ff0000> )</FONT><BR></P>[/parsehtml]
     
    #13 SIM - SS Tam, 2005-12-01
  14. 10517336

    KC
    Expand Collapse

    文章:
    24
    讚:
    0

    多謝您呀SS-Tam,成功了!

    最後少少一問,當同一樣的程式放到成績表P中一個用cross-tab整的大榜表格時,中英文皆不能顯示評語,但其他科目則可顯示;相反放到成績表P卻能100%運作正常,是否cross-tab影響?要不要稍作修改?

    謝謝

     

     
  15. SIM - SS Tam

    SIM - SS Tam
    Expand Collapse

    [parsehtml]<P>此公式的目的就是當遇到中英文科時不顯示評語,儲起來到適當的分卷時再顯示.</P> <P>如果你個cross-tab只顯示科目評語,中英文科當然不會顯示.</P>[/parsehtml]
     
    #15 SIM - SS Tam, 2005-12-02
  16. 10517336

    KC
    Expand Collapse

    文章:
    24
    讚:
    0

    我用cross-tab是顯示各科分數,而科目評語則用'*'去代替{tb_asr_rptpSCORE.ChComment_ATA2},但中英文科仍然不能正確顯示,其他沒有分卷科目的就沒有問題,會不會我有東西弄錯了?

    謝謝

     
  17. 10517336

    KC
    Expand Collapse

    文章:
    24
    讚:
    0

    即是說,cross-tab summarized field中,寫了以下的公式,卻出現了上述的情況:

    local stringvar compcomment;
    if {@#SETTING_ATA2_DROPEXEMPTIND} <> ' ' then
        {@#SETTING_ATA2_DROPEXEMPTIND}
    else if {@#SETTING_ATA2_ASSBYGRADE} = 'Y' then
      if {@#SETTING_ATA2_PASSIND} = 'Y' then
        trim(left({TB_ASR_RPTPSCORE.ENGRADE_ATA2}, 2)) + (
    if isnull({tb_asr_rptpSCORE.ChComment_ATA2}) or len({tb_asr_rptpSCORE.ChComment_ATA2}) = 0 then
      (if (not isnull({TB_ASR_RptPScore.CHSUBJCOMNAME})) and ((trim({TB_ASR_RptPScore.CHSUBJCOMNAME}) = '中文讀本') or (trim({TB_ASR_RptPScore.CHSUBJCOMNAME}) = '英文讀本')) then  compComment
       else
         '')
    else
      if ({TB_ASR_RptPScore.CHSUBJNAME} = '中國語文') or ({TB_ASR_RptPScore.CHSUBJNAME} = '英國語文') then
        ((if isnull({tb_asr_rptpSCORE.ChComment_ATA2}) or len({tb_asr_rptpSCORE.ChComment_ATA2}) = 0 then
            compComment := ''
          else
            compComment := '*');
        '')
      else  (
        compComment := '';

        '*')
    )
      else
      '(' + trim(left({TB_ASR_RPTPSCORE.ENGRADE_ATA2}, 2))+')'
    else
    if {@#SETTING_ATA2_PASSIND} = 'Y' then
        totext(tonumber({TB_ASR_RPTPSCORE.SCORE_ATA2}),0) + (
    if isnull({tb_asr_rptpSCORE.ChComment_ATA2}) or len({tb_asr_rptpSCORE.ChComment_ATA2}) = 0 then
      (if (not isnull({TB_ASR_RptPScore.CHSUBJCOMNAME})) and ((trim({TB_ASR_RptPScore.CHSUBJCOMNAME}) = '中文讀本') or (trim({TB_ASR_RptPScore.CHSUBJCOMNAME}) = '英文讀本')) then  compComment
       else
         '')
    else
      if ({TB_ASR_RptPScore.CHSUBJNAME} = '中國語文') or ({TB_ASR_RptPScore.CHSUBJNAME} = '英國語文') then
        ((if isnull({tb_asr_rptpSCORE.ChComment_ATA2}) or len({tb_asr_rptpSCORE.ChComment_ATA2}) = 0 then
            compComment := ''
          else
            compComment := '*');
        '')
      else  (
        compComment := '';

        '*')
    )
     else
     '(' + totext(tonumber({TB_ASR_RPTPSCORE.SCORE_ATA2}),0)+')' 

     
  18. SIM - SS Tam

    SIM - SS Tam
    Expand Collapse

    未能掌握所遇的問題,能否如最初的方法將有問題的結果及期望的結果展示出來.
     
    #18 SIM - SS Tam, 2005-12-02
  19. 10517336

    KC
    Expand Collapse

    文章:
    24
    讚:
    0

    其實小弟是用了http://resources.emb.gov.hk/sa2410/edcity/Templates/reportps1/reportps1.rpt

    的大榜表(P表)

    當中的cross-tab有 @detail 公式, 內裏使用 {@grade_ata2};

    {@grade_ata2}則寫有以下之公式

    local stringvar compcomment;
    if {@#SETTING_ATA2_DROPEXEMPTIND} <> ' ' then
        {@#SETTING_ATA2_DROPEXEMPTIND}
    else if {@#SETTING_ATA2_ASSBYGRADE} = 'Y' then
      if {@#SETTING_ATA2_PASSIND} = 'Y' then
        trim(left({TB_ASR_RPTPSCORE.ENGRADE_ATA2}, 2)) + (
    if isnull({tb_asr_rptpSCORE.ChComment_ATA2}) or len({tb_asr_rptpSCORE.ChComment_ATA2}) = 0 then
      (if (not isnull({TB_ASR_RptPScore.CHSUBJCOMNAME})) and ((trim({TB_ASR_RptPScore.CHSUBJCOMNAME}) = '中文讀本') or (trim({TB_ASR_RptPScore.CHSUBJCOMNAME}) = '英文讀本')) then  compComment
       else
         '')
    else
      if ({TB_ASR_RptPScore.CHSUBJNAME} = '中國語文') or ({TB_ASR_RptPScore.CHSUBJNAME} = '英國語文') then
        ((if isnull({tb_asr_rptpSCORE.ChComment_ATA2}) or len({tb_asr_rptpSCORE.ChComment_ATA2}) = 0 then
            compComment := ''
          else
            compComment := '*');
        '')
      else  (
        compComment := '';

        '*')
    )
      else
      '(' + trim(left({TB_ASR_RPTPSCORE.ENGRADE_ATA2}, 2))+')'
    else
    if {@#SETTING_ATA2_PASSIND} = 'Y' then
        totext(tonumber({TB_ASR_RPTPSCORE.SCORE_ATA2}),0) + (
    if isnull({tb_asr_rptpSCORE.ChComment_ATA2}) or len({tb_asr_rptpSCORE.ChComment_ATA2}) = 0 then
      (if (not isnull({TB_ASR_RptPScore.CHSUBJCOMNAME})) and ((trim({TB_ASR_RptPScore.CHSUBJCOMNAME}) = '中文讀本') or (trim({TB_ASR_RptPScore.CHSUBJCOMNAME}) = '英文讀本')) then  compComment
       else
         '')
    else
      if ({TB_ASR_RptPScore.CHSUBJNAME} = '中國語文') or ({TB_ASR_RptPScore.CHSUBJNAME} = '英國語文') then
        ((if isnull({tb_asr_rptpSCORE.ChComment_ATA2}) or len({tb_asr_rptpSCORE.ChComment_ATA2}) = 0 then
            compComment := ''
          else
            compComment := '*');
        '')
      else  (
        compComment := '';

        '*')
    )
     else
     '(' + totext(tonumber({TB_ASR_RPTPSCORE.SCORE_ATA2}),0)+')' 

    然而,小弟在未有分卷問題時,各科能正常顯示以 *號代替之科目評語(如下)

              中國語文          英國語文          
                        中文讀本          英文作文   數學  ........ 

    1.陳小明    80*   79       90*      92       85*
    2.陳大明    60     62       91*      100     90*

    可是,當改寫了公式後,中英文科的科評消失了,也沒有顯示到分卷上,但其他各科則正確:

              中國語文          英國語文          
                        中文讀本          英文作文   數學  ........ 

    1.陳小明    80     79       90      92       85*
    2.陳大明    60     62       91      100     90*

    這會否是cross-tab 的問題?外,程式可能還有一點bugs,當使用成績表時,有學生應該是沒有分卷評語,但卻給他顯示了...

    很感謝SS-Tam再花時間和心機替小弟解決困難,謝謝! :)

     

     

     
  20. SIM - SS Tam

    SIM - SS Tam
    Expand Collapse

    [parsehtml]<P>!點解個keyword - <STRONG>shared</STRONG> 變咗造 <STRONG>local</STRONG> 嘅?</P>[/parsehtml]
     
    #20 SIM - SS Tam, 2005-12-05