Office中国论坛/Access中国论坛

标题: 能否改进一下效果 [打印本页]

作者: pq318    时间: 2011-7-18 12:09
标题: 能否改进一下效果
是这么个情况,想批量输入,但是一次只能一条,输入多少个就要点多少次,能否办到点一次就行了啊,谢谢
public Sub Command86_Click()
On Error GoTo Err_Command86_Click
b = MsgBox("是否使用面积公式", vbYesNo)
If b = vbYes Then
Me.Lable26 = Me.Lable12 * Me.Lable11 / 1000
End If
Dim stemp As String
a = InputBox("输入录入数量")
For i = 0 To a - 1
stemp = "INSERT INTO form5查询(Lable1,Lable21,Lable22,Lable3,Lable18,Lable5,Lable14,Lable2,Lable6,Lable12,Lable11,Lable26,Lable20,Lable23,Lable15,Lable13,Lable27)VALUES('" & Me.Lable1 & "','" & Me.Lable21 & "','" & Me.Lable22 & "','" & Me.Lable3 & "','" & Me.Lable18 & "','" & Me.Lable5 & "','" & Me.Lable14 & "','" & Me.Lable2 & "','" & Me.Lable6 & "','" & Me.Lable12 & "','" & Me.Lable11 & "','" & Me.Lable26 & "','" & Me.Lable20 & "','" & Me.Lable23 & "','" & Me.Lable15 & "','" & Me.Lable13 & "'," & i & ")"
DoCmd.RunSQL stemp
Me.Lable3 = Mid(Me.Lable3, 1, 10) & Format(Right(Me.Lable3, 4) + 1, "0000")
Next i

Exit_Command86_Click:
    Exit Sub

Err_Command86_Click:
    MsgBox Err.Description
    Resume Exit_Command86_Click
   
End Sub
作者: roych    时间: 2011-7-18 15:07
本帖最后由 roych 于 2011-7-18 15:17 编辑

把RunSQL部分嵌入If语句里就好了。
If  MsgBox("是否使用面积公式", vbYesNo)=vbYes then
a=……
For i=0 to a-1
……
Next
else
exit sub
end if
用ADO方法代码会更加简洁,可读性更强(如果文本框和字段值一一对应,并追加全部字段的话,还可以嵌套For循环):
Dim rst as New ADODB.Recordset
rst.open"Form5查询",Currentproject.Connection,adOpenKeyset, adLockOptimistic
If  MsgBox("是否使用面积公式", vbYesNo)=vbYes then
a=……
For i=0 to a-1
rst.AddNew
rst("label1")=me.label1.value
……………………………………
rst.Update
Next
else
exit sub
end if
rst.close

作者: pq318    时间: 2011-7-19 08:57
呵呵谢谢斑竹ADO方法不太会用,在什么地方学习,有好的推荐吗
作者: roych    时间: 2011-7-19 10:58
论坛里有相关教程。搜索下。这里是一段简单的追加查询代码,供参考学习:
Private Sub CmdAddNew_Click()
'新建记录集
Dim rst As New ADODB.Recordset
'打开记录集(可以是表名、查询名或者SQL查询语句)
rst.Open "测试表", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If IsNull(Me.TxtName) Then Exit Sub
If MsgBox("您打算新增记录么?", vbOKCancel, "提示") = vbOK Then
    For i = 1 To InputBox("请输入需要输入的数量", "输入前提示", 1)
    '新增记录
        rst.AddNew
    '设置第二个字段(即姓名)值为文本框的值。
        rst(1) = Me.TxtName
    '更新记录集。如果是更新查询语句的话,应加上rst.MoveNext以便移到下一条记录。
        rst.Update
    Next i
End If
End Sub

作者: pq318    时间: 2011-7-19 16:00
谢谢




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3