Foxtable(狐表)用户栏目专家坐堂 → Datecolchanged 中的代码


  共有23642人关注过本帖树形打印复制链接

主题:Datecolchanged 中的代码

美女呀,离线,留言给我吧!
julia
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:57 积分:489 威望:0 精华:0 注册:2008/12/5 14:52:00
Datecolchanged 中的代码  发帖心情 Post By:2008/12/29 14:26:00 [只看该作者]

Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "入库数量1","入库数量","单个克重"
        If dr.IsNull("入库数量") OrElse dr.IsNull("单个克重") Then
            dr("入库数量1") = Nothing
        Else
            dr("入库数量1") = dr("入库数量") * dr("单个克重")
        End If
End Select
If e.DataCol.Name = "材料名" Then
    Dim dr As DataRow = DataTables("入录资料").Find("原材料 = " & "'" & e.DataRow("材料名") & "'" )
    If dr IsNot Nothing
        e.DataRow("材料代号")= dr("代号")
        e.DataRow("单位")= dr("单位")
        e.DataRow("规格")= dr("规格")
        e.DataRow("单个克重")= dr("单个克重")
    End If
End If




请帮我看一下以上的代码有哪里需要修改.因为现在的这个代码不能用.

1)入库数量1=入库数量*单个克重(单个克重不输的时候显示为值"2"
2)当我输入"材料名"时,主表里能自动调用"入录资料"表中的"代号","单位" "规格" 及"单个克重"

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2008/12/29 14:44:00 [只看该作者]

Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "入库数量1","入库数量","单个克重"
        If dr.IsNull("入库数量") OrElse dr.IsNull("单个克重") Then
            dr("入库数量1") = Nothing
        Else
            dr("入库数量1") = dr("入库数量") * dr("单个克重")
        End If
End Select

If e.DataCol.Name = "材料名" Then
    Dim dr1 As DataRow = DataTables("入录资料").Find("原材料  = '" & e.NewValue & "'")
    If dr1 IsNot Nothing
        e.DataRow("材料代号")= dr1("代号")
        e.DataRow("单位")= dr1("单位")
        e.DataRow("规格")= dr1("规格")
        e.DataRow("单个克重")= dr1("单个克重")
    End If
End If


 回到顶部
帅哥哟,离线,有人找我吗?
ybil
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By:2008/12/29 14:48:00 [只看该作者]

这样试试:
Dim dr,dr1 As DataRow
dr = e.DataRow
Select Case e.DataCol.Name
    Case "入库数量","单个克重"
        If dr.IsNull("入库数量")  Then
            dr("入库数量1") = Nothing
        Else
            if dr.IsNull("单个克重") Then
                dr("入库数量1") = 2
            Else  
               dr("入库数量1") = dr("入库数量") * dr("单个克重")
            End if
        End If
   Case "材料名"
       dr1 = DataTables("入录资料").Find("原材料 = '" & dr("材料名") & "'" )
       If dr1 IsNot Nothing
          dr("材料代号")= dr("代号")
          dr("单位")= dr("单位")
          dr("规格")= dr("规格")
          dr("单个克重")= dr("单个克重")
      End If
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
smileboy
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 好心情 一级勋章
等级:超级版主 帖子:715 积分:5564 威望:0 精华:1 注册:2008/8/31 20:45:00
  发帖心情 Post By:2008/12/29 14:48:00 [只看该作者]

单个克重列默认值公式设为2
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "入库数量1","入库数量","单个克重"
        If dr.IsNull("入库数量") OrElse dr.IsNull("单个克重") Then
            dr("入库数量1") = Nothing
        Else
            dr("入库数量1") = dr("入库数量") * dr("单个克重")
        End If
End Select
If e.DataCol.Name = "材料名" Then
    Dim dr1 As DataRow = DataTables("入录资料").Find("原材料 = " & "'" & e.DataRow("材料名") & "'" )
    If dr1 IsNot Nothing
        e.DataRow("材料代号")= dr1("代号")
        e.DataRow("单位")= dr1("单位")
        e.DataRow("规格")= dr1("规格")
        e.DataRow("单个克重")= dr1("单个克重")
    End If
End If

[此贴子已经被作者于2008-12-29 14:49:43编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2008/12/29 14:55:00 [只看该作者]

如果不是为了学习代码的话,入库数量列用表达式是最好的.


 回到顶部
美女呀,离线,留言给我吧!
julia
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:57 积分:489 威望:0 精华:0 注册:2008/12/5 14:52:00
  发帖心情 Post By:2008/12/29 14:56:00 [只看该作者]

不好意思,我刚才的表达可能让ybil 误解,我说的单个克重不输时,单个克重的默认值为2,这样子用代码怎么表达出来?

因为上面的代码显示,  dr("入库数量1") = dr("入库数量") * dr("单个克重") ,但必须两者都需要更新数据才能表达,但有时我只是更新"入库数量" 而如果单个重量是2时我就不想输入,这样子上面的公式也能表达出来,这样子怎么操作?

 回到顶部
帅哥哟,离线,有人找我吗?
smileboy
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 好心情 一级勋章
等级:超级版主 帖子:715 积分:5564 威望:0 精华:1 注册:2008/8/31 20:45:00
  发帖心情 Post By:2008/12/29 15:00:00 [只看该作者]

Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "入库数量1","入库数量","单个克重"
        If dr.IsNull("入库数量") Then
            dr("入库数量1") = Nothing
        Else
            dr("入库数量1") = dr("入库数量") * IIF(dr("单个克重") Is Null,2,dr("单个克重"))
        End If
End Select
If e.DataCol.Name = "材料名" Then
    Dim dr1 As DataRow = DataTables("入录资料").Find("原材料 = " & "'" & e.DataRow("材料名") & "'" )
    If dr1 IsNot Nothing
        e.DataRow("材料代号")= dr1("代号")
        e.DataRow("单位")= dr1("单位")
        e.DataRow("规格")= dr1("规格")
        e.DataRow("单个克重")= dr1("单个克重")
    End If
End If

[此贴子已经被作者于2008-12-29 15:03:24编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2008/12/29 15:08:00 [只看该作者]

或这样?

Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
    Case "入库数量1","入库数量","单个克重"
        If dr.IsNull("入库数量") OrElse dr.IsNull("单个克重") Then
            dr("入库数量1") = Nothing
        Else
            If e.DataCol.Name = "单个克重" Then
               dr("入库数量1") = dr("入库数量") * dr("单个克重")
            Else
               dr("单个克重") = 2
               dr("入库数量1") = dr("入库数量") * dr("单个克重")
            End If
        End If
End Select

If e.DataCol.Name = "材料名" Then
    Dim dr1 As DataRow = DataTables("入录资料").Find("原材料  = '" & e.NewValue & "'")
    If dr1 IsNot Nothing
        e.DataRow("材料代号")= dr1("代号")
        e.DataRow("单位")= dr1("单位")
        e.DataRow("规格")= dr1("规格")
        e.DataRow("单个克重")= dr1("单个克重")
    End If
End If


 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2008/12/29 15:09:00 [只看该作者]

入库数量1列设计成表达式列
IsNull([入库数量],0) * IsNull([单克重量],2)

 回到顶部
帅哥哟,离线,有人找我吗?
gdlgh
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:449 积分:3506 威望:0 精华:5 注册:2008/9/1 2:32:00
  发帖心情 Post By:2008/12/29 15:10:00 [只看该作者]

呵。楼主真幸运!能让四大超级版主帮忙解答!!少有呀!!

 回到顶部
总数 13 1 2 下一页