Foxtable(狐表)用户栏目专家坐堂 → 请教:查询页面,频繁报错:已添加了具有相同键的项


  共有3592人关注过本帖树形打印复制链接

主题:请教:查询页面,频繁报错:已添加了具有相同键的项

帅哥哟,离线,有人找我吗?
bahamute
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1425 积分:11332 威望:0 精华:0 注册:2008/9/1 22:20:00
请教:查询页面,频繁报错:已添加了具有相同键的项  发帖心情 Post By:2018/8/24 8:41:00 [显示全部帖子]

页面生成后,点击查询按钮,偶尔提示:已添加了具有相同键的项

添加的与主键有关的内容如蓝色代码所示,AddContent是不需要设置主键的,所以没找到有重复的键的项,问题到底出在哪里呢?


Dim cmd As new SQLCommand

cmd.C

cmd.CommandText = str

Dim dt As DataTable

dt = cmd.ExecuteReader


With wb.AddTabBar("", "tb1", 0)

    .AddPage("page1","列表项","./images/button.png")

    .AddPage("page2","表格","./images/msg.png")

End With


With wb.AddTable("page2","Table1")

    .CreateFromDataTable(dt)

End With


With wb.AddArticle("page1","ar1")

    For i As Integer = 0 To dt.datarows.count - 1

        Dim dr As DataRow = dt.datarows(i)

        .AddContent("<br/><b>合同编号:</b> " & dr("合同编号"))

        .AddContent("<b>合同名称:</b> " & dr("合同名称"))

            For Each dc As DataCol In dt.datacols

                If dc.name <> "合同编号" And dc.name <> "合同名称" Then

                    .AddContent("<b>" & dc.name & ": </b>" & dr(dc.name))

                End If

            Next

        .AddContent("<a href='./ContractsInfo/" & dr("合同编号") & ".pdf'>单击此处</a>下载pdf文档(5M)")

        .AddContent("- - - - - - - - - 第" & i+1 & "条/共" & dt.datarows.count & "条 - - - - - - - - -")

    Next

End With

wb.AppendHTML("<style>Table.fox_table {text-align: center}</style>")

e.WriteString(wb.Build) '生成网页

[此贴子已经被作者于2018/8/24 12:52:59编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1425 积分:11332 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2018/8/24 11:58:00 [显示全部帖子]

以下是引用有点蓝在2018/8/24 9:11:00的发言:
狐表有没有更新到最新版。

这个如果不影响使用可以不理会

已升级到最新版,报错更频繁了,使用弹框反复测试,能弹出“a”,之后报错,所以问题出在蓝色代码段,但AddContent不需要设置主键,到底哪个主键重复了?

With wb.AddArticle("page1","ar1")

    messagebox.show("a")

    For i As Integer = 0 To dt.datarows.count - 1

        Dim dr As DataRow = dt.datarows(i)

        .AddContent("<br/><b>合同编号:</b> " & dr("合同编号"))

        .AddContent("<b>合同名称:</b> " & dr("合同名称"))

            For Each dc As DataCol In dt.datacols

                If dc.name <> "合同编号" And dc.name <> "合同名称" Then

                    .AddContent("<b>" & dc.name & ": </b>" & dr(dc.name))

                End If

            Next

        .AddContent("<a href='./ContractsInfo/" & dr("合同编号") & ".pdf'>单击此处</a>下载pdf文档(5M)")

        .AddContent("- - - - - - - - - 第" & i+1 & "条/共" & dt.datarows.count & "条 - - - - - - - - -")

    Next

End With

messagebox.show("b")


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

[此贴子已经被作者于2018/8/24 12:27:48编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1425 积分:11332 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2018/8/24 12:49:00 [显示全部帖子]

修改上述代码,弃用AddArticle组件,直接采用InsertHTML方式逐行生成,结果还是报错,“已添加具有相同的主键”

Dim cmd As new SQLCommand
cmd.C
cmd.CommandText = str
Dim dt As DataTable
dt = cmd.ExecuteReader

' With wb.AddTabBar("", "tb1", 0)
' .AddPage("page1","列表项","./images/button.png")
' .AddPage("page2","表格","./images/msg.png")
' End With

For i As Integer = 0 To dt.datarows.count - 1
    Dim dr As DataRow = dt.datarows(i)
    wb.InsertHTML("<br/>")
    wb.InsertHTML("<b>合同编号:</b> " & dr("合同编号") & "<br/>")
    wb.InsertHTML("<b>合同名称:</b> " & dr("合同名称") & "<br/>")
    For Each dc As DataCol In dt.datacols
        If dc.name <> "合同编号" And dc.name <> "合同名称" Then
            wb.InsertHTML("<b>" & dc.name & ": </b>" & dr(dc.name) & "<br/>")
        End If
    Next
    wb.InsertHTML("<b>浏览文档: </b> <a href='./ContractsInfo/" & dr("合同编号") & ".pdf'>单击此处</a>下载pdf文档(大小约为5M)<br/>")
    wb.InsertHTML("- - - - - - - - - 第" & i+1 & "条/共" & dt.datarows.count & "条 - - - - - - - - -","align='center' style='margin-top:25px'")
Next
[此贴子已经被作者于2018/8/24 12:49:55编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1425 积分:11332 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2018/8/24 14:14:00 [显示全部帖子]

以下是引用有点蓝在2018/8/24 13:53:00的发言:
新建项目,单独测试一下这个页面。还有问题把项目上传看看

dt = cmd.ExecuteReader

怀疑跟 dt 的记录数有关,几十条记录的时候没大有问题,上百条的时候,报错就比较多了。上了200多都不用测试,次次报错。
问题是,生成网页,200多条合同的简要信息不会是超出FT或者网页的处理范围了吧。

[此贴子已经被作者于2018/8/24 14:16:29编辑过]

 回到顶部