以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助][讨论]添加的项目有所有者了  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=121143)

--  作者:sunion
--  发布时间:2018/6/29 21:44:00
--  [求助][讨论]添加的项目有所有者了
以下代码运行出现错误,错误提示“添加的项目有所有者了”

设计的目的是,从“考试科目”表的“学科”列中,动态批量生成每个学科与这个学科均分对比的结果,形成一段描述性文字。
不知道问题出在哪里?
请老师帮我看看,谢谢

\'---------------------
Dim rxt As New prt.RenderText \'定义一个文本对象
Dim pj4 As Table = Tables("学生查询四")
Dim pj0 As Table = Tables("学生查询")
Dim pj1 As Table = Tables("学生查询一")

Dim tpp As Table = Tables("考试科目")
For i As Integer = 0 To tpp.Rows.Count -1

Dim yw0 As Double = pj0.Compute("sum(" & tpp.Rows(i)("学科") & ")")
Dim yw4 As Double = pj4.Compute("avg(" & tpp.Rows(i)("学科") & ")")
Dim yw As Double = Format(yw0 - yw4,"0.0")
Dim yw3 As String = iif(yw0 = 0 Or yw4 = 0,"",tpp.Rows(i)("学科") & "学科超均分" & yw & "分,")

Dim zf0 As Double = pj0.Compute("sum(总分)")
Dim zf4 As Double = pj4.Compute("avg(总分)")
Dim zf As Double = Format(zf0 - zf4,"0.0")

Dim zfpm0 As Double = pj0.Compute("sum(总分排名)")
Dim zfpm1 As Double = pj1.Compute("sum(总分排名)")
Dim zfpm As Double = Format(zfpm1 - zfpm0,"0")

rxt.text = "分数分析:"
rxt.Style.FontBold = True \'字体加粗
rxt.Style.FontSize = 11 \'大体大小为16磅
rxt.Style.TextAlignHorz = prt.AlignHorzEnum.left \'水平居中排列
rxt.Style.Spacing.top = 15 \'和下面的对象(表格)距离3毫米
rxt.Style.Spacing.Bottom = 2 \'和下面的对象(表格)距离3毫米
doc.Body.Children.Add(rxt) \'加入到报表中

Dim rx11 As New prt.RenderText \'定义一个文本对象
rx11.text = "        此次考试您的孩子成绩总分为"& CurRow1("总分") & "分,总分名次为" & CurRow1("总分排名") & "名.与全班相比," & yw3 & "总分超均分" & zf & "分.与上期考试相比,总分名次进步" & zfpm & "名,希望您在繁忙的工作之余,对孩子多加鼓励,鞭策前行,我们期待孩子在未来取得更大的进步!"
rx11.Style.LineSpacing = 180 \'设置1.5倍行距
rx11.Style.FontSize = 10 \'大体大小为16磅
rx11.

--  作者:有点蓝
--  发布时间:2018/6/29 21:52:00
--  
看不出错误提示和这段代码有什么关系

跟踪看看是哪一句代码有问题
http://www.foxtable.com/webhelp/scr/1485.htm

--  作者:sunion
--  发布时间:2018/6/30 9:09:00
--  
老师好,这个方法很好用,马上定位出错误了,是next的位置放错了,调整了就可以运行了。

现在遇到另外一个问题:

考试科目表中学科列依次是:语文、数学、英语、物理、化学、体育
但生成的结果(综合文字分析)只有最后一个学科“体育”的分析,在它前面的学科语文、数学、英语、物理、化学全部没有。
不知道是哪个循环出现问题,麻烦老师帮忙看看,谢谢

出现的结果:

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20180630090249.png
图片点击可在新窗口打开查看


需要的效果:

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20180630090645.png
图片点击可在新窗口打开查看



代码如下:
Dim rxt As New prt.RenderText \'定义一个文本对象
Dim rx11 As New prt.RenderText \'定义一个文本对象

Dim pj4 As Table = Tables("学生查询四")
Dim pj0 As Table = Tables("学生查询")
Dim pj1 As Table = Tables("学生查询一")
Dim tpp As Table = Tables("考试科目")
For i As Integer = 0 To tpp.Rows.Count -1
    
    Dim yw0 As Double = pj0.Compute("sum(" & tpp.Rows(i)("学科") & ")")
    Dim yw4 As Double = pj4.Compute("avg(" & tpp.Rows(i)("学科") & ")")
    Dim yw As Double = Format(yw0 - yw4,"0.0")
    Dim yw3 As String = iif(yw0 = 0 Or yw4 = 0,"",tpp.Rows(i)("学科") & "学科超均分" & yw & "分,")
    
    Dim zf0 As Double = pj0.Compute("sum(总分)")
    Dim zf4 As Double = pj4.Compute("avg(总分)")
    Dim zf As Double = Format(zf0 - zf4,"0.0")
    
    Dim zfpm0 As Double = pj0.Compute("sum(总分排名)")
    Dim zfpm1 As Double = pj1.Compute("sum(总分排名)")
    Dim zfpm As Double = Format(zfpm1 - zfpm0,"0")
    
    rxt.text = "分数分析:"
    rxt.Style.FontBold = True \'字体加粗
    rxt.Style.FontSize = 11 \'大体大小为16磅
    rxt.Style.TextAlignHorz = prt.AlignHorzEnum.left \'水平居中排列
    rxt.Style.Spacing.top = 15 \'和下面的对象(表格)距离3毫米
    rxt.Style.Spacing.Bottom = 2 \'和下面的对象(表格)距离3毫米
    
    
    rx11.text = "        此次考试您的孩子成绩总分为"& CurRow1("总分") & "分,总分名次为" & CurRow1("总分排名") & "名.与全班相比," & yw3 & "总分超均分" & zf & "分.与上期考试相比,总分名次进步" & zfpm & "名,希望您在繁忙的工作之余,对孩子多加鼓励,鞭策前行,我们期待孩子在未来取得更大的进步!"
    rx11.Style.LineSpacing = 180 \'设置1.5倍行距
    rx11.Style.FontSize = 10 \'大体大小为16磅
    rx11.Style.TextAlignHorz = prt.AlignHorzEnum.left \'水平居中排列
    rx11.Style.Spacing.top = 2 \'和下面的对象(表格)距离3毫米
    rx11.Style.Spacing.Bottom = 6 \'和下面的对象(表格)距离3毫米
    
Next
doc.Body.Children.Add(rxt) \'加入到报表中
doc.Body.Children.Add(rx11) \'加入到报表中


--  作者:有点蓝
--  发布时间:2018/6/30 9:53:00
--  
next的位置还是放错了

……

Dim zfpm0 As Double = pj0.Compute("sum(总分排名)")
    Dim zfpm1 As Double = pj1.Compute("sum(总分排名)")
    Dim zfpm As Double = Format(zfpm1 - zfpm0,"0")
    rxt = New prt.RenderText
    rxt.text = "分数分析:"
    rxt.Style.FontBold = True \'字体加粗
    rxt.Style.FontSize = 11 \'大体大小为16磅
    rxt.Style.TextAlignHorz = prt.AlignHorzEnum.left \'水平居中排列
    rxt.Style.Spacing.top = 15 \'和下面的对象(表格)距离3毫米
    rxt.Style.Spacing.Bottom = 2 \'和下面的对象(表格)距离3毫米
    
    rx11 = New prt.RenderText
    rx11.text = "        此次考试您的孩子成绩总分为"& CurRow1("总分") & "分,总分名次为" & CurRow1("总分排名") & "名.与全班相比," & yw3 & "总分超均分" & zf & "分.与上期考试相比,总分名次进步" & zfpm & "名,希望您在繁忙的工作之余,对孩子多加鼓励,鞭策前行,我们期待孩子在未来取得更大的进步!"
    rx11.Style.LineSpacing = 180 \'设置1.5倍行距
    rx11.Style.FontSize = 10 \'大体大小为16磅
    rx11.Style.TextAlignHorz = prt.AlignHorzEnum.left \'水平居中排列
    rx11.Style.Spacing.top = 2 \'和下面的对象(表格)距离3毫米
    rx11.Style.Spacing.Bottom = 6 \'和下面的对象(表格)距离3毫米
    
doc.Body.Children.Add(rxt) \'加入到报表中
doc.Body.Children.Add(rx11) \'加入到报表中
Next

--  作者:sunion
--  发布时间:2018/6/30 12:29:00
--  

蓝老师,甜老师,修改代码后,运行结果是,每个学科独立成了一行

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20180630122705.png
图片点击可在新窗口打开查看

能不能所有学科在一起呢,也就是语文分析完,数学跟在后面,然后英语接在后面?

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20180630122825.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/6/30 13:36:23编辑过]

--  作者:有点蓝
--  发布时间:2018/6/30 14:00:00
--  
Dim rxt As New prt.RenderText \'定义一个文本对象
Dim rx11 As New prt.RenderText \'定义一个文本对象

Dim pj4 As Table = Tables("学生查询四")
Dim pj0 As Table = Tables("学生查询")
Dim pj1 As Table = Tables("学生查询一")
Dim tpp As Table = Tables("考试科目")

rxt.text = "分数分析:"
rxt.Style.FontBold = True \'字体加粗
rxt.Style.FontSize = 11 \'大体大小为16磅
rxt.Style.TextAlignHorz = prt.AlignHorzEnum.left \'水平居中排列
rxt.Style.Spacing.top = 15 \'和下面的对象(表格)距离3毫米
rxt.Style.Spacing.Bottom = 2 \'和下面的对象(表格)距离3毫米

rx11.Style.LineSpacing = 180 \'设置1.5倍行距
rx11.Style.FontSize = 10 \'大体大小为16磅
rx11.Style.TextAlignHorz = prt.AlignHorzEnum.left \'水平居中排列
rx11.Style.Spacing.top = 2 \'和下面的对象(表格)距离3毫米
rx11.Style.Spacing.Bottom = 6 \'和下面的对象(表格)距离3毫米

Dim zf0 As Double = pj0.Compute("sum(总分)")
Dim zf4 As Double = pj4.Compute("avg(总分)")
Dim zf As Double = Format(zf0 - zf4,"0.0")

Dim zfpm0 As Double = pj0.Compute("sum(总分排名)")
Dim zfpm1 As Double = pj1.Compute("sum(总分排名)")
Dim zfpm As Double = Format(zfpm1 - zfpm0,"0")

rx11.text = "        此次考试您的孩子成绩总分为"& CurRow1("总分") & "分,总分名次为" & CurRow1("总分排名") & "名.与全班相比,"
For i As Integer = 0 To tpp.Rows.Count -1
    
    Dim yw0 As Double = pj0.Compute("sum(" & tpp.Rows(i)("学科") & ")")
    Dim yw4 As Double = pj4.Compute("avg(" & tpp.Rows(i)("学科") & ")")
    Dim yw As Double = Format(yw0 - yw4,"0.0")
    Dim yw3 As String = iif(yw0 = 0 Or yw4 = 0,"",tpp.Rows(i)("学科") & "学科超均分" & yw & "分,")
    
    rx11.text = rx11.text & yw3 & "总分超均分" & zf & "分."
Next
rx11.text = rx11.text & "与上期考试相比,总分名次进步" & zfpm & "名,希望您在繁忙的工作之余,对孩子多加鼓励,鞭策前行,我们期待孩子在未来取得更大的进步!"
doc.Body.Children.Add(rxt) \'加入到报表中
doc.Body.Children.Add(rx11) \'加入到报表中