Foxtable(狐表)用户栏目专家坐堂 → 保存的速度问题


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

主题:保存的速度问题

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


加好友 发短信
等级:四尾狐 帖子:832 积分:5867 威望:0 精华:6 注册:2011/5/27 11:41:00
保存的速度问题  发帖心情 Post By:2012/7/25 8:59:00 [只看该作者]

狐爸:我现在在做一个考勤系统,里面有个排班表,我设计了一个自动排班的功能,能自动填加工号、班次号、日期等信息,我们公司1600名员工,以每个月30天计,48000条记录,我的自动排班3秒钟就生成了,但我将排班的信息保存进SQL SERVER数据库时,保存时间花了11分钟,我想请问一下,有没有快速保存的代码或方法,请赐教,谢谢!

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/7/25 9:02:00 [只看该作者]

保存48000条是必然慢的,特别是数据库不在本机的时候。


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


加好友 发短信
等级:三尾狐 帖子:732 积分:5491 威望:0 精华:14 注册:2011/8/28 12:49:00
  发帖心情 Post By:2012/7/25 9:02:00 [只看该作者]

那你直接用INSERT往数据库里面写数据嘛,不经过表


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


加好友 发短信
等级:四尾狐 帖子:832 积分:5867 威望:0 精华:6 注册:2011/5/27 11:41:00
  发帖心情 Post By:2012/7/25 17:12:00 [只看该作者]

飞兄:请教教我怎么写代码,我的排班键的代码是:

 

Dim i As new SQLCommand
Dim dt As DataTable
i.C
i.CommandText ="SELECT * from {XR人事表} where 离职日期 Is Null"
dt =i.ExecuteReader   '选取在职员工
Dim fd As Date =e.Form.Controls("qsr").value
Dim nd As Date =e.Form.Controls("zzr").value
Dim tsc As TimeSpan =nd -fd
Dim ts As Integer =tsc.TotalDays
Dim rq As Date
Tables("KQ考勤排班表").StopRedraw
If e.Form.Controls("qsr").value IsNot Nothing And e.Form.Controls("zzr").value IsNot Nothing Then '选取排班日期
    For l As Integer =0 To ts
        Dim fi As new Filler
        fi.SourceTable =dt
        fi.SourceCols ="编号,卡号,岗位编号,班级"
        fi.DataTable =DataTables("KQ考勤排班表")
        fi.DataCols ="工号,卡号,岗位编号,班级"
        fi.Fill() '填充数据进排班表
    Next
Else
    messagebox.show("请正确选择起始及终止日期")
    Return
End If


Dim drs As List(of DataRow) =DataTables("KQ考勤排班表").Select("")
Dim hs As Integer =(drs.count-1)/(ts+1)-1
Dim s As Integer
For c As Integer =0 To ts
    rq =fd.AddDays(c)
    For ii As Integer =0 To hs
        s =1+s
        drs(s-1)("日期") =rq
    Next
Next   '填加日期进排班表
Tables("KQ考勤排班表").ResumeRedraw

代码的大意是从后台的人事表中选取在职的人员,然后将相关资料填充进排班表,然后再将所选日期排进排班表,但现在的情况是所有数据都进了排班表中,不知怎么才能按您的意思直接进SQL SERVER呢,请赐教!


 回到顶部