读书人

为什么这段代码会消耗小弟我大量时间

发布时间: 2012-02-27 10:00:22 作者: rapoo

为什么这段代码,会消耗我大量时间(5分钟以上)??
为什么这段代码,会消耗我大量时间(5分钟以上)??处量的记录总共约15000条,ACCESS 数据库,这些表都已建立自增量的字段主键。


'开始导入数据

CopyRowItem = DatasetInput.Tables( "Code ").Rows
For NN = 0 To CopyRowItem.Count - 1
CopyRow = DataSetBBzt.Tables( "Rep_code ").NewRow()
CopyRow( "bytYear ") = InputYear
CopyRow( "strCodeID ") = CopyRowItem(NN).Item( "strCodeID ")
CopyRow( "strCodeName ") = CopyRowItem(NN).Item( "strCodeName ")
CopyRow( "blnDepartment ") = CopyRowItem(NN).Item( "blnDepartment ")
CopyRow( "blnEnd ") = CopyRowItem(NN).Item( "blnEnd ")
CopyRow( "bytGrade ") = CopyRowItem(NN).Item( "bytGrade ")
CopyRow( "bytClass ") = CopyRowItem(NN).Item( "bytClass ")
CopyRow( "blnD_C ") = CopyRowItem(NN).Item( "blnD_C ")
CopyRow( "strMeasure ") = CopyRowItem(NN).Item( "strMeasure ")
CopyRow( "blnChange ") = CopyRowItem(NN).Item( "blnChange ")
CopyRow( "blnChild ") = CopyRowItem(NN).Item( "blnChild ")


CopyRow( "blnZero ") = CopyRowItem(NN).Item( "blnZero ")
CopyRow( "sngDepre ") = CopyRowItem(NN).Item( "sngDepre ")
CopyRow( "mnRemark ") = CopyRowItem(NN).Item( "mnRemark ")
DataSetBBzt.Tables( "Rep_code ").Rows.Add(CopyRow)
Next


CopyRowItem = DatasetInput.Tables( "Gledger ").Rows
For NN = 0 To CopyRowItem.Count - 1
CopyRow = DataSetBBzt.Tables( "Rep_gledger ").NewRow()
CopyRow( "bytYear ") = InputYear
CopyRow( "bytPeriod ") = CopyRowItem(NN).Item( "bytPeriod ")
CopyRow( "strCodeID ") = CopyRowItem(NN).Item( "strCodeID ")
CopyRow( "strBeginDirection ") = CopyRowItem(NN).Item( "strBeginDirection ")
CopyRow( "dblBeginBalance ") = CopyRowItem(NN).Item( "dblBeginBalance ")
CopyRow( "dblDebit ") = CopyRowItem(NN).Item( "dblDebit ")
CopyRow( "dblCredit ") = CopyRowItem(NN).Item( "dblCredit ")


CopyRow( "strEndDirection ") = CopyRowItem(NN).Item( "strEndDirection ")
CopyRow( "dblEndBalance ") = CopyRowItem(NN).Item( "dblEndBalance ")
CopyRow( "dblBeginBalanceCount ") = CopyRowItem(NN).Item( "dblBeginBalanceCount ")
CopyRow( "dblDebitCount ") = CopyRowItem(NN).Item( "dblDebitCount ")
CopyRow( "dblCreditCount ") = CopyRowItem(NN).Item( "dblCreditCount ")
CopyRow( "dblEndBalanceCount ") = CopyRowItem(NN).Item( "dblEndBalanceCount ")
DataSetBBzt.Tables( "Rep_gledger ").Rows.Add(CopyRow)
Next

WaitClear(Me)
'保存数据
WaitWindow(Me, "正在保存财务数据,请稍等... ")
Try
OleDbDataAdapterRep_code.Update(DataSetBBzt, "Rep_code ")
OleDbDataAdapterRep_gledger.Update(DataSetBBzt, "Rep_gledger ")
MsgBox( "已正确导入帐套资料! ", MsgBoxStyle.Information, "提示信息 ")
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Information, "导入失败 ")


Finally
End Try

[解决办法]
这种方法保存数据一般都比较慢
你的情况我也遇到过,改成用普通的INSERT来保存速度就快很多了
还有,你也可以把数据读到本机上再进行处理,减少数据在网络之间的传输时间

读书人网 >VB Dotnet

热点推荐