Foxtable(狐表)用户栏目专家坐堂 → 参照帮助中的Edit函数创建了对应的页面 当前可以实现新增基础 删除基础 编辑基础 但是不能实现新增明细 和显示已经具有的明细


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

主题:参照帮助中的Edit函数创建了对应的页面 当前可以实现新增基础 删除基础 编辑基础 但是不能实现新增明细 和显示已经具有的明细

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
参照帮助中的Edit函数创建了对应的页面 当前可以实现新增基础 删除基础 编辑基础 但是不能实现新增明细 和显示已经具有的明细  发帖心情 Post By:2021/2/4 15:01:00 [显示全部帖子]


参照帮助中的Edit函数创建了对应的页面   当前可以实现新增基础 删除基础  编辑基础  但是不能实现新增明细 和显示已经具有的明细  
经查貌似明细数据没有写入数据库表    麻烦老师帮忙看看下面代码中哪个部分有问题呢  是参照帮助操作的

以下内容是专门发给有点蓝浏览

运行效果

图片点击可在新窗口打开查看此主题相关图片如下:12121.gif
图片点击可在新窗口打开查看


[此贴子已经被作者于2021/2/4 16:54:04编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)哪段代码是新增明细的?哪段代码又是...  发帖心情 Post By:2021/2/4 15:18:00 [显示全部帖子]

'稿件发表明细编辑
Dim mr As DataRow '要编辑的稿件发表明细
Dim IsNew As Boolean '此变量用于标记是否要新增明细
If e.GetValues.ContainsKey("uuid") = False OrElse e.GetValues.ContainsKey("addnext") '如果是新增稿件基础,或这包括addnext参数
    IsNew = True '将IsNew参数设置为True,表明需要新增稿件发表明细
ElseIf e.GetValues.ContainsKey("uuid") Then '如果传递了稿件发表明细主键
    mr = DataTables("稿件发表明细").SQLFind("[uuid]=" & e.GetValues("uuid")) '找出此稿件发表明细进行编辑
End If
If IsNew OrElse mr IsNot Nothing  Then
    With wb.AddInputGroup("form1","ipg2",iif(IsNew,"新增明细","编辑明细"))
        If IsNew Then '如果是新增稿件发表明细
            .AddInput("发表时间","发表时间","date")
            .AddInput("发表平台","发表平台","text")
            .AddInput("平台类型","平台类型","text")
            .AddInput("平台级别","平台级别","text")
            .AddInput("文章链接","文章链接","text")
        Else
            .AddHiddenValue("DetailID",mr("uuid")) '插入一个隐藏的稿件发表明细主键,此值将随表单数据一并提交到服务器.
            .AddInput("发表时间","发表时间","date").Value = mr("发表时间")
            .AddInput("发表平台","发表平台","text").value = mr("发表平台")
            .AddInput("平台类型","平台类型","text").Value = mr("平台类型")
            .AddInput("平台级别","平台级别","text").Value = mr("平台级别")
            .AddInput("文章链接","文章链接","text").Value = mr("文章链接")
        End If
    End With
End If
'生成稿件发表明细表格
If e.GetValues.ContainsKey("uuid") AndAlso  srs.count > 0 Then '如果不是新增稿件基础,且稿件发表明细行数大于0,则生成稿件发表明细表格.
    With wb.AddTable("form1","detailTable") '为了区分,明细表的名字设为detailTable
        .head.AddRow("发表时间","发表平台","平台级别","文章链接")
        .ColWidth="1px,2px,8px,90px"
        For Each sr As DataRow In srs
            With .body.AddRow()
                .Primarykey =sr("uuid")
                Dim s As String=sr("发表平台")
                Dim s1 As String = sr("平台级别")
                Dim s11 As String = sr("文章链接")
                If s11.Length > 10 Then
                    s11 = s11.SubString(0,25) & "..."
                End If
                .AddCells(sr("发表时间"),s,s1,s11)'逐个单元格增加
            End With
        Next
    End With
    '设计菜单
    With wb.AddActionSheet("","menu")
        .Add("mnudAdd", "增加明细").Attribute="" '调用js函数
        .Add("mnuEdit", "编辑明细").Attribute =""
        .Add("mnuDelete", "删除明细").Attribute ="""
        .Add("mnuCancel","取消","",True)
    End With
End If



老师   按照帮助例子中mr定义的是明细表变量  在帮助代码中也没有看见类似pr.save保存代码  如果要写mr.save应该放在哪个位置呢?
因为明细表没有数据  所以明细表格的内容也没有显示出来

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)上面这种代码是在界面新增明细的编辑...  发帖心情 Post By:2021/2/4 16:54:00 [显示全部帖子]



图片点击可在新窗口打开查看此主题相关图片如下:12121.gif
图片点击可在新窗口打开查看


Dim e As RequestEventArgs = args(0)
'保存稿件基础
Dim dr As DataRow = DataTables("稿件基础").SQLFind("uuid='" & e.PostValues("uuid") & "'")
Dim nms() As String = {"uuid","文章类别","文章属性","文章标题","文章作者","文章作者1","文章作者2","文章作者3","文章作者4","文章作者5","文章内容","文章时间","登记时间","登记单位"}  '""
If dr IsNot Nothing Then
    For Each nm As String In nms
        If e.PostValues.ContainsKey(nm) Then
            dr(nm)= e.PostValues(nm)
        End If
    Next
End If
dr.Save()
'保存明细
Dim valid As Boolean '用于判断用户是否 输入了稿件发表明细数据
nms = New String() {"uuid","文章标题","发表时间","发表平台","平台类型","平台级别","文章链接","编辑人","备注"}
For Each nm As String In nms
    If e.PostValues.ContainsKey(nm) Then
        valid = True '如果 输入了稿件发表明细数据,将valid变量设置为True
    End If
Next
If valid Then '如果提交了稿件发表明细数据
    Dim sr As DataRow
    If e.PostValues.ContainsKey("DetailID") Then '如果传递了稿件发表明细主键
        sr = DataTables("稿件发表明细").SQLFind("[uuid]=" & e.PostValues("DetailID"))
        If sr Is Nothing  Then  '多用户环境,必须考虑其他用户删除此明细的可能,避免程序报错
            Return ""
        End If
    Else
        sr = DataTables("稿件发表明细").SQLAddNew() '增加一个稿件发表明细
        sr("uuid") = dr("uuid")
    End If
    For Each nm As String  In nms
        sr(nm) = e.PostValues(nm)
    Next
    sr.Save()  '必须保存,而且必须在最后保存,因为用SQLAddNew增加的行,一旦保存,就不能再引用此行
End If


.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:自定义函数,Save
详细错误信息:
调用的目标发生了异常。
未将对象引用设置到对象的实例。
[此贴子已经被作者于2021/2/4 17:04:08编辑过]

 回到顶部