以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教:查询页面,频繁报错:已添加了具有相同键的项  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=123832)

--  作者:bahamute
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间:2018/8/24 9:11:00
--  
狐表有没有更新到最新版。

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

--  作者:bahamute
--  发布时间: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
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间:2018/8/24 13:53:00
--  
新建项目,单独测试一下这个页面。还有问题把项目上传看看
--  作者:bahamute
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间:2018/8/24 14:21:00
--  
嗯,是有问题。已反馈。