大家,帮我看看~~~~~~~

空怀 2011-06-02 01:50:21
以下是我的代码:adoRS.EOF 这句第二次执行时很慢

On Error GoTo ErrHandle:
Set conn = Nothing
conn.ConnectionString = constr
conn.Open
conn.BeginTrans '开启事务
Dim j As Integer
j = 0
For i = 1 To fg1.Rows - 1

Call closeconn
Call openconn
Call rs("select jcxm from tbfz where jcxm='" & Trim(fg1.TextMatrix(i, 1)) & "'")

If adoRS.EOF Then '第一次到这句很快的,第二次到这句就慢了。要等很久
adoRS.Close
conn.Execute "insert into tbfz(jcxm,fenzhi) values('" & Trim(fg1.TextMatrix(i, 1)) & "','" & Trim(fg1.TextMatrix(i, 2)) & "')"
j = j + 1
End If
Next

conn.CommitTrans '提交事务

MsgBox "导入成功,共导入 " & j & " 条信息"

Command4_Click

conn.Close
Set conn = Nothing

Exit Sub


'错误处理
ErrHandle:
conn.RollbackTrans '出错,回滚事务
conn.Close
MsgBox "导入失败,错误原因为:" & Err.Description, vbExclamation, "提示"
' conn.Close
Exit Sub


以下是rs方法:
Public Sub rs(ByVal sqlstr As String)
On Error GoTo checkerr2
adoRS.Open sqlstr, adoCon, adOpenDynamic, adLockOptimistic

Exit Sub
checkerr2:
MsgBox "有误"
Call closeconn

'End
End Sub
...全文
61 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
空怀 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hezison 的回复:]
首先不说你语句问题,你应该用insert()(select ... from ..where)加条件的批量插入语句才对。
[/Quote]

请问我的语句有什么问题吗?
空怀 2011-06-03
  • 打赏
  • 举报
回复
我就想实现一个导入的功能。从excel中导入到sql中,然后我是先将excel中的数据绑定到vsflexgrid中,再循环vsflexgrid的行,一条一条进行插入,已有的就不进行插入。
空怀 2011-06-03
  • 打赏
  • 举报
回复
Public adoRS As New ADODB.Recordset 这样定义的
hezison 2011-06-03
  • 打赏
  • 举报
回复
首先不说你语句问题,你应该用insert()(select ... from ..where)加条件的批量插入语句才对。
luofenghen 2011-06-03
  • 打赏
  • 举报
回复
adoRS 这个你怎么定义的 把代码贴完整

.eof是查询出来的记录集的末尾
空怀 2011-06-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 flfq 的回复:]
数据量不一样,速度当然不同
[/Quote]

什么意思啊。数据量查出来的话 要么没有 要么有一条。而且我调式要是第一次有记录的话 第二次就慢了。如果第一次没记录 第二次就快。
flfq 2011-06-02
  • 打赏
  • 举报
回复
数据量不一样,速度当然不同

809

社区成员

发帖
与我相关
我的任务
社区描述
VB 多媒体
社区管理员
  • 多媒体
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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