急!怎样用VB6向Access2003中批量添加数据?

luffy9202 2016-01-29 11:28:16
是这样,我的数据库中有一个库存日报的表,每天启动程序的时候要向表中添加一个今天的库存信息,大概有150多条。即每天要增加150条数据,假如中间有两天没有启动程序,那么第三天启动时要添加3*150即450条。之前用conn.excute执行,如果只添加150条速度还可以,如果是两天或以上,那么程序就会无响应,第二次启动才能写入。后来改成rs.addnew,也是同样的情况,数据少的时候还挺快,不到1S,多了根本运行不起来。现贴下代码。
On Error Resume Next
Dim rstTitles As New ADODB.Recordset
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Environ$("USERPROFILE") & "\Application Data\专卖店管理系统\study.mdb" & ";Mode=ReadWrite;Persist Security Info=False"
conn.Open

Dim a As Date
Dim t1 As String, t2 As String
t1 = Time$()
conn.BeginTrans
rstTitles.LockType = adLockPessimistic '不能使用adLockBatchOptimistic或adLockReadOnly
rstTitles.CursorType = adOpenDynamic
rstTitles.Open "select * from 库存日报", conn
'-----添加新的库存记录-----'
rs.Open "select * from 库存日报 where format(日期,'yyyy-mm-dd')='" & Format(Date, "yyyy-mm-dd") & "'", conn, 3, 3
If rs.RecordCount = 0 Then
rs1.Open "select * from 库存日报 order by 日期,产品编码", conn, 3, 3
rs1.MoveLast
a = rs1("日期")
For i = Format(rs1("日期") + 1, "yyyy-mm-dd") To Format(Date, "yyyy-mm-dd")
While rs1("日期") = a
rstTitles.AddNew
rstTitles("产品编码") = rs1("产品编码")
rstTitles("产品名称") = rs1("产品名称")
rstTitles("单位") = rs1("单位")
rstTitles("类别") = rs1("类别")
rstTitles("期初数量") = rs1("期末数量")
rstTitles("入库数量") = 0
rstTitles("销售数量") = 0
rstTitles("压货数量") = 0
rstTitles("自用数量") = 0
rstTitles("零售数量") = 0
rstTitles("退货数量") = 0
rstTitles("借入数量") = 0
rstTitles("调换数量") = 0
rstTitles("期末数量") = rs1("期末数量")
rstTitles("日期") = Format(i, "YYYY-MM-DD")
rstTitles.Update
' SQL = "insert into 库存日报(产品编码,产品名称,单位,类别,期初数量,入库数量,销售数量,压货数量,自用数量,零售数量,退货数量,借入数量,调换数量,期末数量,日期)VALUES("""
' SQL = SQL & rs1("产品编码") & ""","""
' SQL = SQL & rs1("产品名称") & ""","""
' SQL = SQL & rs1("单位") & ""","""
' SQL = SQL & rs1("类别") & ""","""
' SQL = SQL & rs1("期末数量") & ""","""
' SQL = SQL & 0 & ""","""
' SQL = SQL & 0 & ""","""
' SQL = SQL & 0 & ""","""
' SQL = SQL & 0 & ""","""
' SQL = SQL & 0 & ""","""
' SQL = SQL & 0 & ""","""
' SQL = SQL & 0 & ""","""
' SQL = SQL & 0 & ""","""
' SQL = SQL & rs1("期末数量") & ""","""
' SQL = SQL & Format(i, "YYYY-MM-DD") & """)"
' conn.Execute SQL
rs1.MovePrevious
Wend
rs1.MoveLast
Next
rs1.Close
End If
rs.Close

conn.CommitTrans
rstTitles.Close
conn.Close
t2 = Time$()
MsgBox t1 & " " & t2

求可用方法。
...全文
426 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
程序员老干部 2016-03-03
  • 打赏
  • 举报
回复
insert into 用这个,不要打开记录集
luffy9202 2016-02-29
  • 打赏
  • 举报
回复
谢谢大家热心帮助! 在这里统一回复以上:三楼赛高,果然是那里有问题,用format都改为日期格式可以正常使用!四楼,因为是循环,我不知道怎么用一句代码实现。五楼,通过注释掉该句,发现了另一个错误哈哈。 谢谢大家!阿里嘎多!
一笑拔剑 2016-02-03
  • 打赏
  • 举报
回复
On Error Resume Next 别用 看看错误在哪里
vansoft 2016-02-03
  • 打赏
  • 举报
回复
同一个库里的话,直接insert into select 一条语句搞定。
X-i-n 2016-01-30
  • 打赏
  • 举报
回复
几百条数据运行起来会卡死这肯定不正常 检查一下标红代码的逻辑 On Error Resume Next Dim rstTitles As New ADODB.Recordset conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Environ$("USERPROFILE") & "\Application Data\专卖店管理系统\study.mdb" & ";Mode=ReadWrite;Persist Security Info=False" conn.Open Dim a As Date Dim t1 As String, t2 As String t1 = Time$() conn.BeginTrans rstTitles.LockType = adLockPessimistic '不能使用adLockBatchOptimistic或adLockReadOnly rstTitles.CursorType = adOpenDynamic rstTitles.Open "select * from 库存日报", conn '-----添加新的库存记录-----' rs.Open "select * from 库存日报 where format(日期,'yyyy-mm-dd')='" & Format(Date, "yyyy-mm-dd") & "'", conn, 3, 3 If rs.RecordCount = 0 Then rs1.Open "select * from 库存日报 order by 日期,产品编码", conn, 3, 3 rs1.MoveLast a = rs1("日期") For i = Format(rs1("日期") + 1, "yyyy-mm-dd") To Format(Date, "yyyy-mm-dd") While rs1("日期") = a rstTitles.AddNew rstTitles("产品编码") = rs1("产品编码") rstTitles("产品名称") = rs1("产品名称") rstTitles("单位") = rs1("单位") rstTitles("类别") = rs1("类别") rstTitles("期初数量") = rs1("期末数量") rstTitles("入库数量") = 0 rstTitles("销售数量") = 0 rstTitles("压货数量") = 0 rstTitles("自用数量") = 0 rstTitles("零售数量") = 0 rstTitles("退货数量") = 0 rstTitles("借入数量") = 0 rstTitles("调换数量") = 0 rstTitles("期末数量") = rs1("期末数量") rstTitles("日期") = Format(i, "YYYY-MM-DD") rstTitles.Update ' SQL = "insert into 库存日报(产品编码,产品名称,单位,类别,期初数量,入库数量,销售数量,压货数量,自用数量,零售数量,退货数量,借入数量,调换数量,期末数量,日期)VALUES(""" ' SQL = SQL & rs1("产品编码") & """,""" ' SQL = SQL & rs1("产品名称") & """,""" ' SQL = SQL & rs1("单位") & """,""" ' SQL = SQL & rs1("类别") & """,""" ' SQL = SQL & rs1("期末数量") & """,""" ' SQL = SQL & 0 & """,""" ' SQL = SQL & 0 & """,""" ' SQL = SQL & 0 & """,""" ' SQL = SQL & 0 & """,""" ' SQL = SQL & 0 & """,""" ' SQL = SQL & 0 & """,""" ' SQL = SQL & 0 & """,""" ' SQL = SQL & 0 & """,""" ' SQL = SQL & rs1("期末数量") & """,""" ' SQL = SQL & Format(i, "YYYY-MM-DD") & """)" ' conn.Execute SQL rs1.MovePrevious Wend rs1.MoveLast Next rs1.Close End If rs.Close conn.CommitTrans rstTitles.Close conn.Close t2 = Time$() MsgBox t1 & " " & t2
luffy9202 2016-01-29
  • 打赏
  • 举报
回复
不利用.csv有没有更好的方法呢?
赵4老师 2016-01-29
  • 打赏
  • 举报
回复
不知道能不能将想添加的数据先写到一个临时纯文本文件.csv中,然后在Access中添加导入这个.csv文件。
**VB+ACCESS自动组卷系统** **资源介绍:** 本资源为一款基于VB和ACCESS数据库开发的自动组卷系统。该系统集成了试题管理、试卷生成、试卷输出等功能,可广泛应用于各类考试和测试场景。系统采用模块化设计,具有良好的可扩展性和可定制性,方便用户进行二次开发和定制。 **核心功能:** 1. **试题管理**:支持多种题型(如单选题、多选题、填空题等),可对试题进行添加、修改、删除等操作。同时提供试题的导入导出功能,方便批量处理试题数据。 2. **试卷生成**:根据预设的组卷规则和参数,系统可自动生成符合要求的试卷。支持随机抽题、按比例抽题等多种组卷方式,确保试卷的科学性和公正性。 3. **试卷输出**:生成的试卷可输出为Word、PDF等格式,方便用户进行打印和分发。同时系统还提供了试卷预览功能,方便用户在输出前对试卷进行检查和修改。 **技术特点:** 1. **采用VB编程语言**:VB是一种易学易用的编程语言,适合初学者和开发者快速上手。同时,VB具有丰富的库函数和强大的数据处理能力,能够满足自动组卷系统的开发需求。 2. **使用ACCESS数据库**:ACCESS是一种轻量级的数据库管理系统,具有体积小、速度快、易操作等优点。本系统利用ACCESS数据库存储试题数据和试卷信息,保证了数据的稳定性和安全性。 3. **模块化设计**:系统采用模块化设计思想,将各个功能模块独立出来,方便后续的维护和升级。同时,模块化设计也降低了系统的耦合度,提高了代码的可重用性和可维护性。 4. **二次开发定制**:为了满足不同用户的个性化需求,本系统提供了丰富的API接口和开发文档,方便用户进行二次开发和定制。用户可以根据自身需求对系统功能进行扩展和优化,实现个性化的自动组卷功能。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧