以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  保存的速度问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=21800)

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

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


--  作者:飞
--  发布时间:2012/7/25 9:02:00
--  

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


--  作者:小猪鑫鑫
--  发布时间: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呢,请赐教!