Office中国论坛/Access中国论坛

标题: 汇总语句总是不对 帮忙啊 [打印本页]

作者: shitou1ge    时间: 2009-4-7 15:28
标题: 汇总语句总是不对 帮忙啊
本帖最后由 shitou1ge 于 2009-4-7 15:34 编辑

图片中zzz  为主机  zzz=zzz\001+zzz\003+zzz\11+zzz\12   可是我的总是没有数字显示  倒底是咋回事 小妹请大家帮忙


Private Sub 主机统计()
  Dim jilu As Long, i As Long, j As Long, BBB As String
  Dim AAA As Long, sum
  
    DoCmd.OpenForm "定额明细总表1", , , , , acHidden
Forms!定额明细总表1.Requery
  jilu = DCount("cpbm", "汇总表")

  For i = 1 To jilu
   If IsNull(Forms!定额明细总表1!CPLX) Then
    Else
        If Forms!定额明细总表1!CPLX = "主机" Then
           AAA = Forms!定额明细总表1!编号
           BBB = Forms!定额明细总表1!CPBM

        
            sum = 0

            DoCmd.GoToRecord , "定额明细总表1", acFirst
            For j = 1 To jilu
      If (Forms!定额明细总表1!CPLX = "组件" Or Forms!定额明细总表1!CPLX = "零件") Then
    If Forms!定额明细总表1!CPBM Like BBB & "*" And Len(Forms!定额明细总表1!CPBM) < 8 Then
       sum = sum + Forms!定额明细总表1!CLGYZJE
        End If
        End If
              DoCmd.GoToRecord acDataForm, "定额明细总表1", acNext
            Next
             DoCmd.GoToRecord acDataForm, "定额明细总表1", acGoTo, AAA
            

            
             Forms!定额明细总表1!CLGYZJE = sum
                    End If
    End If
    DoCmd.GoToRecord acDataForm, "定额明细总表1", acNext
  Next
    DoCmd.Close acForm, "定额明细总表1"
End Sub
作者: shitou1ge    时间: 2009-4-7 15:36
有时去掉 Or Forms!定额明细总表1!CPLX = "零件" 这一句  zzz就能显示 但是不包括 zzz\001和zzz\003的值了
作者: koutx    时间: 2009-4-7 16:08
你把如下不等于"主机"的语句块放在等于"主机"的If条件中,当然不会得到你想要的结果啦。
If (Forms!定额明细总表1!CPLX = "组件" Or Forms!定额明细总表1!CPLX = "零件") Then
作者: shitou1ge    时间: 2009-4-7 16:37
不是的  你看DoCmd.GoToRecord , "定额明细总表1", acFirst 这一句 是又从第一条记录开始查找的 
作者: shitou1ge    时间: 2009-4-7 16:38

作者: koutx    时间: 2009-4-7 17:33
本帖最后由 koutx 于 2009-4-7 17:41 编辑

If Forms!定额明细总表1!CPLX = "主机" Then'看看这条If语句的End If在什么位置????
           AAA = Forms!定额明细总表1!编号
        BBB = Forms!定额明细总表1!CPBM
            sum = 0
            DoCmd.GoToRecord , "定额明细总表1", acFirst
            For j = 1 To jilu'                           For循环块只会运行最后一句!
                If (Forms!定额明细总表1!CPLX = "组件" Or Forms!定额明细总表1!CPLX = "零件") Then
            If Forms!定额明细总表1!CPBM Like BBB & "*" And Len(Forms!定额明细总表1!CPBM) < 8 Then
          sum = sum + Forms!定额明细总表1!CLGYZJE
             End If
              End If
            DoCmd.GoToRecord acDataForm, "定额明细总表1", acNext'只运行此一句
           Next
          DoCmd.GoToRecord acDataForm, "定额明细总表1", acGoTo, AAA        
          Forms!定额明细总表1!CLGYZJE = sum
End If'                                                                                    在这那
作者: shitou1ge    时间: 2009-4-7 19:34
本帖最后由 shitou1ge 于 2009-4-7 19:49 编辑


作者: shitou1ge    时间: 2009-4-7 19:49
我也是个新手 请大哥指教
If Forms!定额明细总表1!CPLX = "主机" Then   
           AAA = Forms!定额明细总表1!编号
           BBB = Forms!定额明细总表1!CPBM
以上是当在表中找到为“主机“时  在这条记录上做一标记 记下其编号为 AAA

DoCmd.GoToRecord , "定额明细总表1", acFirst   '这一句不是又回到定额明细表1 的第一条记录吗?以下循不是从第一条记录开始吗 ,不会找到批配的记录吗?  
For j = 1 To jilu'                           
If (Forms!定额明细总表1!CPLX = "组件" Or Forms!定额明细总表1!CPLX = "零件") Then
 If Forms!定额明细总表1!CPBM Like BBB & "*" And Len(Forms!定额明细总表1!CPBM) < 8 Then
          sum = sum + Forms!定额明细总表1!CLGYZJE
     End If
End If
            DoCmd.GoToRecord acDataForm, "定额明细总表1", acNext
Next
此段 循环不是又从第一条开始到最后一条 寻找匹配记录吗 应该不受 前面 =”主机“ 条件的限制吧?
DoCmd.GoToRecord acDataForm, "定额明细总表1", acGoTo, AAA      
这句是回到刚才的记录点 也就是=”主机“的那条记录的位置
作者: shitou1ge    时间: 2009-4-7 19:50
请大哥帮忙哦
作者: shitou1ge    时间: 2009-4-8 10:36
唉 还没找到原因 就要沉底啦 救命啊
作者: chuang0321    时间: 2009-4-8 10:50
把你的例子再发上来吧,我来看看。
作者: shitou1ge    时间: 2009-4-8 11:38
您有QQ吗 我传给您吧 这是我目前做的一个系统 我的是26302145
作者: chuang0321    时间: 2009-4-8 11:46
在单位我的QQ用不了,回家我不工作不上网。用msn:chuang0321@msn.com
作者: shitou1ge    时间: 2009-4-8 15:17
我还是传到这吧  之前那个主机统计中  像zzz\001这样的零件没有计算进来  所以我改了一下  

在定额明细汇总窗体中 按指定条件查找后 点"汇总"  在表中生成一个新表 汇总表  

这是我做着玩的一个定额管理系统  不要见笑哦!
作者: shitou1ge    时间: 2009-4-8 15:39
分了好几个包啊 不是说不限吗?
作者: shitou1ge    时间: 2009-4-8 15:45
包2
作者: shitou1ge    时间: 2009-4-8 15:54
包3
作者: shitou1ge    时间: 2009-4-8 15:54
本帖最后由 shitou1ge 于 2009-4-8 16:15 编辑

包4
作者: shitou1ge    时间: 2009-4-8 16:18
本帖最后由 shitou1ge 于 2009-4-8 16:22 编辑

包5
作者: shitou1ge    时间: 2009-4-8 16:29
总算传完了 天啊 
作者: chuang0321    时间: 2009-4-8 16:29
多少个包?
作者: shitou1ge    时间: 2009-4-8 16:36
本帖最后由 shitou1ge 于 2009-4-8 16:37 编辑

7个 每个才3M多 您下完了告我一声 我得把它删掉啊
作者: chuang0321    时间: 2009-4-8 16:47
我已经下载完了。

不好意思,我看见代码了。
作者: shitou1ge    时间: 2009-4-8 17:04
代码没什么 都是此笨法  主要是有些数据 嘿  谢谢大哥帮忙啊
作者: chuang0321    时间: 2009-4-8 17:05
本帖最后由 chuang0321 于 2009-4-8 17:15 编辑

我看了一下,原因应该在你的表格中有“Forms!定额明细总表1!CLGYZJE”值为空的时候,建议将所有空值置为零。

调试的时候多利用msgbox 来返回想要监视的值,就可以发现问题。


考虑到你说得的保密性,我已经将我下载的文件删除了。
作者: shitou1ge    时间: 2009-4-8 17:35
好谢谢大哥   大哥 您能给我推荐本书吗  能学好access 的  我现在就是一个愣头青 这里弄一点那里弄一点  唉 想把它学好 又不知怎么学 嘿  
作者: shitou1ge    时间: 2009-4-8 19:14
大哥 问题所在正如您所说啊
作者: chuang0321    时间: 2009-4-8 21:32
我也是边学边上网查的。编程的首要关键应该是理清数据关系,然后是掌握必要的调试验证方法,因为这些是需要积累的。




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