Office中国论坛/Access中国论坛

标题: 尺寸转换和计算公式报 [打印本页]

作者: 菜鸟求助    时间: 2009-7-29 12:01
标题: 尺寸转换和计算公式报
点计算按钮报错
见附档
作者: aslxt    时间: 2009-7-29 12:53
把:
Private Sub Command54_Click()
Me.PO1.Form.AllowEdits = True
  DoCmd.GoToControl "PO1"
  DoCmd.GoToRecord , , acFirst
  For i = 1 To [PO1]!Text40
    [PO1]!MO2_KG = [PO1]!Thick * [PO1]!Width / 1000 * [PO1]!Length / 1000 * [PO1]!MO2_Sheet * 7.85
   
   DoCmd.GoToRecord , , acNext
    'DoCmd.GoToRecord , , acNext
  Next i
'其中“Text40”为[PO1]的一个控件,该控件的控件来源:=Count(*)
End Sub
改为:
Private Sub Command54_Click()
Me.PO1.Form.AllowEdits = True
  DoCmd.GoToControl "PO1"
  DoCmd.GoToRecord , , acFirst
  For i = 1 To [PO1]!Text40 - 1
    [PO1]!MO2_KG = [PO1]!Thick * [PO1]!Width / 1000 * [PO1]!Length / 1000 * [PO1]!MO2_Sheet * 7.85
   
   DoCmd.GoToRecord , , acNext
    'DoCmd.GoToRecord , , acNext
  Next i
'其中“Text40”为[PO1]的一个控件,该控件的控件来源:=Count(*)
End Sub

因为你的子表不允许添加记录!
作者: aslxt    时间: 2009-7-29 12:57
另外:
[PO1]!MO2_KG = [PO1]!Thick * [PO1]!Width / 1000 * [PO1]!Length / 1000 * [PO1]!MO2_Sheet * 7.85
公式中还有参与计算的(值)类型错误,
作者: 菜鸟求助    时间: 2009-7-29 13:39
总是有这样提示是怎么回事呢?
[attach]39053[/attach]
作者: aslxt    时间: 2009-7-29 14:11
问题出在mm(str)的参数中
作者: 菜鸟求助    时间: 2009-7-29 14:15
能帮改改吗?
作者: aslxt    时间: 2009-7-29 14:16
窗体的〔转换厚〕〔转换宽〕〔转换长〕控件来源?
作者: aslxt    时间: 2009-7-29 14:19
修改模块为:
Public Function MM(ByVal STR As String)
    Dim AA, BB, CC, DD, EE
    Dim QQ
    If IsNull(STR) = True Or Len(STR) = 0 Then Exit Function
    If Asc(Right(STR, 1)) = 34 Or Right(STR, 1) = "'" Then
        If Asc(Right(STR, 1)) = 34 Then
            QQ = 25.4
        ElseIf Right(STR, 1) = "'" Then
            QQ = 304
        End If
        AA = Left(STR, Len(STR) - 1)
        BB = InStr(1, AA, "-")
        If BB > 0 Then
            CC = Left(AA, BB - 1)
            DD = Mid(AA, BB + 1, 1)
            EE = Mid(AA, BB + 3, 1)
            MM = Format((CC + DD / EE) * QQ, "0.00")
        Else
            BB = InStr(1, AA, "/")
            If BB > 0 Then
                DD = Mid(AA, BB - 1, 1)
                EE = Mid(AA, BB + 1, 1)
                MM = Format((DD / EE) * QQ, "0.00")
            Else
                MM = Format(AA * QQ, "0.00")
            End If
        End If
    ElseIf Right(STR, 2) = "mm" Then
        MM = Format(Left(STR, Len(STR) - 2), "0.00")
    Else
        MM = STR
    End If
End Function
作者: 菜鸟求助    时间: 2009-7-29 14:37
本帖最后由 菜鸟求助 于 2009-7-29 14:39 编辑

多谢高手,问题基本解决。
但我点计算时,只计算第一笔,后面记录不计算了。
作者: 菜鸟求助    时间: 2009-7-29 14:46
如何只计算现在的记录呢?
作者: aslxt    时间: 2009-7-29 17:55
DoCmd.GoToControl "PO1"
  DoCmd.GoToRecord , , acFirst
  For i = 1 To [PO1]!Text40 - 1
    [PO1]!MO2_KG = [PO1]!Thick * [PO1]!Width / 1000 * [PO1]!Length / 1000 * [PO1]!MO2_Sheet * 7.85
   
   DoCmd.GoToRecord , , acNext
    'DoCmd.GoToRecord , , acNext
  Next i
改为:
     [PO1]!MO2_KG = [PO1]!Thick * [PO1]!Width / 1000 * [PO1]!Length / 1000 * [PO1]!MO2_Sheet * 7.85




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