Office中国论坛/Access中国论坛

标题: ACCESS没有响应,不知是什回事,太弱了 [打印本页]

作者: ail    时间: 2003-4-5 09:45
标题: ACCESS没有响应,不知是什回事,太弱了
当我输入超过60条记录时运行月结存就会程序没 有响应。少于的话就有(我用删货品信息表记录来测试),请指教如何解决?

作者: Roadbeg    时间: 2003-4-5 16:46
我觉得是你的算法问题.
作者: yorkjun    时间: 2003-4-5 18:54
同意,我也犯过同样的错误,查询造成死循环,修正约束条件以后就很快了。Access不算弱,先从流程方面解决。
作者: ail    时间: 2003-4-6 22:04
50条与60条同是同样的记录,50条可以运行,为什么60条却没有响应呢?
作者: tmtony    时间: 2003-4-6 22:39
你需要提供例程或部分代码,大家才能一起分析与解决问题。
作者: ail    时间: 2003-4-6 23:42
Option Compare Database
Option Explicit
Dim cn As Connection
Dim rs As New ADODB.Recordset
Dim sql As String


Private Sub 命令0_Click()
Dim ZRKSL, ZRKJE, ZCKSL, ZCKJE, CYJC As Single
    Dim QCSL, QCJE, JQDJ, SYJCE As Single
   
    Select Case 查询选项
    Case 1
        DoCmd.OpenQuery "货品当月入库查询"
    Case 2
        DoCmd.OpenQuery "货品当月出库查询"
    Case 3
        DoCmd.RunMacro "上月结存查询"
        Set cn = CurrentProject.Connection
        sql = "select * from 上月结存临时表 "
        rs.Open sql, cn, 3, 3, 1
        If rs.RecordCount > 0 Then
            Do While Not rs.EOF
                ZRKSL = Nz(DLookup("入库数量", "货品上月总入库查询", "货品编码='" & rs.Fields("货品编码") & "'"), 0)
                ZCKSL = Nz(DLookup("出库数量", "货品上月总出库查询", "货品编码='" & rs.Fields("货品编码") & "'"), 0)
               
                ZRKJE = Nz(DLookup("总额", "货品上月总入库查询", "货品编码='" & rs.Fields("货品编码") & "'"), 0)
                ZCKJE = Nz(DLookup("总额", "货品上月总出库查询", "货品编码='" & rs.Fields("货品编码") & "'"), 0)
                rs.Fields("结存时间") = Date
                rs.Fields("当月入库") = DLookup("入库数量", "货品上月入库查询", "货品编码='" & rs.Fields("货品编码") & "'")
                rs.Fields("当月出库") = DLookup("出库数量", "货品上月出库查询", "货品编码='" & rs.Fields("货品编码") & "'")
                rs.Fields("结存数") = Nz(rs.Fields("期初数"), 0) + Nz(ZRKSL, 0) - Nz(ZCKSL, 0)
                rs.Fields("上月结存额") = Nz(rs.Fields("期初金额"), 0) + Nz(ZRKJE, 0) - Nz(ZCKJE, 0)
                rs.Update
                rs.MoveNext
            Loop
            rs.Close
        End If
        
        DoCmd.RunMacro "结存查询"
        sql = "select * from 结存临时表 "
        rs.Open sql, cn, 3, 3, 1
        If rs.RecordCount > 0 Then
            Do While Not rs.EOF
                ZRKSL = Nz(DLookup("入库数量", "货品总入库查询", "货品编码='" & rs.Fields("货品编码") & "'"), 0)
                ZRKJE = Nz(DLookup("总额", "货品总入库查询", "货品编码='" & rs.Fields("货品编码") & "'"), 0)
                ZCKSL = Nz(DLookup("出库数量", "货品总出库查询", "货品编码='" & rs.Fields("货品编码") & "'"), 0)
                ZCKJE = Nz(DLookup("总额", "货品总出库查询", "货品编码='" & rs.Fields("货品编码") & "'"), 0)
                CYJC = Nz(DLookup("结存数", "上月结存临时表", "货品编码='" & rs.Fields("货品编码") & "'"), 0)
                QCSL = Nz(DLookup("期初数量", "货品信息", "货品编码='" & rs.Fields("货品编码") & "'"), 0)
                QCJE = Nz(DLookup("期初金额", "货品信息", "货品编码='" & rs.Fields("货品编码") & "'"), 0)
               If QCSL + ZRKSL - ZCKSL <> 0 Then
                JQDJ = IIf((QCSL + ZRKSL - ZCKSL) = 0, 0, (QCJE + ZRKJE - ZCKJE) / (QCSL + ZRKSL - ZCKSL))
                Else
                JQDJ = 0
                End If
               SYJCE = Nz(DLookup("上月结存额", "上月结存临时表", "货品编码='" & rs.Fields("货品编码") & "'"), 0)
                rs.Fields("结存时间") = Date
                rs.Fields("单价") = JQDJ
                rs.Fields("上月结存") = CYJC
                rs.Fields("当月入库") = DLookup("入库数量", "货品当月入库查询", "货品编码='" & rs.Fields("货品编码") & "'")
                rs.Fields("当月出库") = DLookup("出库数量", "货品当月出库查询", "货品编码='" & rs.Fields("货品编码") & "'")
                rs.Fields("当月结存") = Nz(rs.Fields("期初数"), 0) + Nz(ZRKSL, 0) - Nz(ZCKSL, 0)
                rs.Fields("当月结存额") = Nz(QCJE + ZRKJE - ZCKJE, 0)
                rs.Fields("上月结存额") = Nz(SYJCE, 0)
                rs.Fields("当月入库额") = Nz(ZRKJE, 0)
                rs.Fields("当月出库额") = Nz(ZCKJE, 0)
                rs.Update
                rs.MoveNext
                DoEvents
            Loop
            
            rs.Close
            Set cn = Nothing
        End If
        DoCmd.OpenReport "结存统计表", acViewPreview
        
        
    End Select
    DoCmd.Maximize
End Sub
Private Sub 退同_Click()
On Error GoTo Err_退同_Cli
作者: ail    时间: 2003-4-6 23:44
上面是代码,就是引起没有响应的查询,但50以下查询记录是没问题的,
作者: ail    时间: 2003-4-7 01:21
加上DOEVENTS解决,不过还有更好的方法吗,因为实在是慢,好慢




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