Foxtable(狐表)用户栏目专家坐堂 → 后台新增


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

主题:后台新增

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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
后台新增  发帖心情 Post By:2017/12/2 11:29:00 [只看该作者]

老师为提高保存速度,我用sqladdnew 保存后加载,但我感觉用户体验不好,能不能新增一行后就加载所新增的当前行

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


加好友 发短信
等级:超级版主 帖子:106665 积分:542508 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/12/2 11:31:00 [只看该作者]


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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2017/12/2 12:06:00 [只看该作者]

If js.Contains("教务主任") Then
    Dim njdh As String
    Dim bjdh As String
    Dim dt As Table = Tables("初中报名_table2")
    If dt.Rows.count>0
        Dim p As WinForm.ProgressBar
        p = e.Form.Controls("ProgressBar1")
        p.Maximum = dt.Rows.Count '设置最大值
        p.Minimum = 0 '设置最小值
        p.Value = 0 '设置当前值
        Dim dwmc As String = _usergroup
        Dim com4 As String =  e.Form.Controls("combobox4").text
        If  com4 > ""
            Dim Cols1() As String = {"学校名称","年级","班级","学生姓名","学生ID","身份证件号","学籍号","班级"}
            Dim Cols2() As String = {"单位名称","年级代码","班级","姓名","学生ID","身份证件号","学籍号","班级全称"}
            Dim su As Integer = 0
            Dim dr2 As DataRow
            For Each dr1 As Row In dt.Rows
                Dim Filter As String = ""
                If dr1.IsNull("身份证件号") Then
                    filter = "身份证件号 is Null and 姓名 = '" & dr1("学生姓名") & "' and 班级全称='" & dr1("班级") & "'"
                Else
                    filter = "身份证件号 = '" & dr1("身份证件号") & "' and 姓名 =  '" & dr1("学生姓名") & "' and 班级全称= '" & dr1("班级") & "'"
                End If
                dr2 = DataTables("成绩").Find(filter)
                If dr2 Is Nothing Then dr2 = DataTables("成绩").sqlAddNew()
                For i As Integer = 0 To Cols1.Length -1
                    Select Case i
                        Case 0
                            dr2(Cols2(i)) = dr1(Cols1(i))
                        Case 1
                            dr2(Cols2(i)) = trim(str(val(dr1(Cols1(i)).Substring(4,2)+3)))
                            njdh =trim(str(val(dr1(Cols1(i)).Substring(4,2)+3)))
                        Case 3,4,5,6
                            dr2(Cols2(i)) = dr1(Cols1(i))
                        Case 7
                            dr2(Cols2(i)) = dr1(Cols1(i))
                            Dim c() As Char = {"级", "班"}
                            Dim str As String = dr1(Cols1(i))
                            If str > "" Then
                                Dim s1() As String = str.Split(c)
                                If s1.length >= 2 AndAlso s1(0).length >= 6 Then
                                    bjdh= s1(1) .PadLeft(2,"0")
                                End If
                            End If
                    End Select
                Next
                dr2("考试名称") = com4
                dr2("免统审核") = False
                dr2("学段")="初中"
                Dim dr As DataRow
                dr = DataTables("学校信息").Find("单位全称 = '" & _usergroup & "'and 学段 = '初中'" )
                If dr IsNot Nothing
                    dr2("学校")= dr("单位")
                    dr2("学校代码")= dr("学校代码")
                    dr2("类别") = dr("类别")
                    Dim year As String = trim(com4.Substring(0,2))
                    Dim v As Integer = cint(year)
                    Dim ji As String = com4.Substring(2,1)
                    Dim j As Integer
                    If ji = "春"
                        j = 0
                    End If
                    If ji = "秋"
                        j = 1
                    End If
                    dr2("年级") = trim(str(v - val(trim(njdh)) + j +9))
                    dr2("学校班级") = dr("学校班级用简称") & trim(str(v - val(trim(njdh)) + j +9)) & "." & bjdh
                End If
               dr2.save
                Dim id As Integer = DataTables("成绩").Compute("Max(_Identify)")
                Dim Filter1 As String = "[_Identify] > " & id
                DataTables("成绩").AppendLoad(Filter1)
                DataTables("成绩").load
                su = su +1
                p.Value = su
            Next
            
            '  Dim sux As String = "本次新增或修改报名学生共计" & su & "人"
            ' MessageBox.show(sux,"导入总计",MessageBoxButtons.OK)
            '   DataTables("成绩").loadfilter = "考试名称 ='"& com4 &"' and 单位名称 = '"& _usergroup &"' And 学段 ='初中'"
            'DataTables("成绩").load
            
            p.Value = 0
            Dim dt2 As Table = Tables("初中报名_table1")
            e.Form.Controls("Label2").text = "初中考号表" & su & "个学生名单"
            Dim lbl1 As WinForm.Label = e.Form.Controls("Label1")
            Dim lbl2 As WinForm.Label = e.Form.Controls("Label2")
            If e.Form.Controls("table1").width > lbl1.Width
                lbl1.Left = (e.Form.Controls("table1").width - lbl1.Width ) / 2
            End If
            If e.Form.Controls("table2").width > lbl2.Width
                lbl2.Left = (e.Form.Controls("table2").width - lbl2.Width ) / 2
            End If
        Else
            MessageBox.show("考试名称不能为空","提示",MessageBoxButtons.OK)
        End If
    Else
        MessageBox.show("你没有选择好要报考的学生,请选择好参考学生学生","提示",MessageBoxButtons.OK)
        
    End If
Else
    MessageBox.show("业务主管方可办理","提示",MessageBoxButtons.OK)
End If
Dim dt1 As DataTable = DataTables("成绩")
Dim cb1 As WinForm.ComboBox = e.form.Controls("ComboBox1")
cb1.ComboList =" |" & dt1.GetComboListString("年级")


老师,用这个方式为什么要死机呢,是什么原因,该怎样写,我的想法是后台新增一条就加载一条


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


加好友 发短信
等级:超级版主 帖子:106665 积分:542508 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/12/2 12:20:00 [只看该作者]

如果循环的次数多,使用sqladdnew 后台逐条新增,比在窗口编辑完毕然后一起保存(datatable.save)的效率还要低得多多多

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


加好友 发短信
等级:八尾狐 帖子:1936 积分:14844 威望:0 精华:0 注册:2016/4/28 9:58:00
  发帖心情 Post By:2017/12/2 12:36:00 [只看该作者]

我测试了更快,因为用datatable.save,记录少还好办,越多保存时间会几何倍增,用addnew是单条记录时间一定,现在就是想仿addnew效果,增加一条当前表就多显示一行

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


加好友 发短信
等级:超级版主 帖子:106665 积分:542508 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/12/2 14:13:00 [只看该作者]

Dim id As Integer = DataTables("成绩").Compute("Max(_Identify)")
Dim Filter1 As String = "[_Identify] > " & id
DataTables("成绩").AppendLoad(Filter1)
DataTables("成绩").load

改为

DataTables("成绩").AppendLoad(filter)

 回到顶部