Foxtable(狐表)用户栏目专家坐堂 → [求助]设计了窗口,在窗口中调用数据表数据计算,可以在窗口中输出计算结果,并可以复制出来,无从下手写代码的困惑,请指教下,多谢。


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

主题:[求助]设计了窗口,在窗口中调用数据表数据计算,可以在窗口中输出计算结果,并可以复制出来,无从下手写代码的困惑,请指教下,多谢。

帅哥哟,离线,有人找我吗?
有点色
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/4 17:45:00 [显示全部帖子]

 上传实例说明运算逻辑。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/4 18:06:00 [显示全部帖子]

 那你可以直接引用表内容

 

 比如,当前行,就直接写 Dim nr As Row = Tables("表A").Current

 

 要用到某列,就写 nr("第一列")

 

 


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/4 18:08:00 [显示全部帖子]

你datacolchanged事件有计算公式,那你直接弄出来改改就行。

 

上传实例说明


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/4 19:04:00 [显示全部帖子]

 上传实例,说明要做什么。

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/4 19:22:00 [显示全部帖子]

 计算逻辑是什么?输入什么最后得到什么?

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/5 9:36:00 [显示全部帖子]

 回复12楼,没看懂你什么意思。

 

 请举例说明,填入什么数值,经过怎样的运算,最后得到什么结果。


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/5 11:47:00 [显示全部帖子]

日均减量的模式,没看懂你表达的意思。

 

或者你参考增量的方式自己改一下代码

 

Dim fy As Double = 300
Dim lv As Double = 0.02
Dim ts As Integer = 20
Dim dt As DataTable = DataTables("出纳交易数据")
For Each dr As DataRow In dt.DataRows
    Dim rjzl As Double = dr("日均存款金额") - dr("日均取款金额")
    If rjzl >= 0 Then
        Dim maxts As Integer = Math.Floor(dr("出纳存款上限") / rjzl)
        If maxts < ts Then ts = maxts
        Dim mincb As Double = 99999
        Dim mints As Integer
        For i As Integer = 1 To ts
            Dim cb As Double = rjzl*i*lv/360+fy/i
            If cb < mincb Then
                mincb = cb
                mints = i
            End If
            output.show(dr("出纳号") & " " & i & "天成本 " & cb)
        Next
        msgbox(dr("出纳号") & " " & mints & "天成本最低 " & mincb)
    Else
        Dim rjjl As Double = -rjzl
    End If
Next


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/5 14:49:00 [显示全部帖子]

在命令窗口执行,参考代码

 

Dim fy As Double = 300
Dim lv As Double = 0.02
Dim zts As Integer = 20
Dim x As Double = 50000
Dim dt As DataTable = DataTables("出纳交易数据")
For Each dr As DataRow In dt.DataRows
    Dim ts As Integer = zts
    Dim rjzl As Double = dr("日均存款金额") - dr("日均取款金额")
    If rjzl >= 0 Then
        Dim maxts As Integer = Math.Floor(dr("出纳存款上限") / rjzl)
        If maxts < ts Then ts = maxts
        Dim mincb As Double = 99999
        Dim mints As Integer
        For i As Integer = 1 To ts
            Dim cb As Double = rjzl*i*lv/360+fy/i
            If cb < mincb Then
                mincb = cb
                mints = i
            End If
            output.show(dr("出纳号") & " " & i & "天成本 " & cb)
        Next
        msgbox(dr("出纳号") & " " & mints & "天成本最低 " & mincb)
    Else
        Dim rjjl As Double = -rjzl
        Dim minje As Double
        Dim minallcb As Double = 99999
        Dim minallts As Integer
        For je As Double = dr("出纳加钞上限") To rjjl Step -x
            Dim maxts As Integer = Math.Floor(je / rjjl)
            If maxts < ts Then ts = maxts
            Dim mincb As Double = 99999
            Dim mints As Integer
            For i As Integer = 1 To ts
                Dim cb As Double = (je-rjjl*i)*lv/360+fy/i
                If cb < mincb Then
                    mincb = cb
                    mints = i
                End If
                output.show(dr("出纳号") & " " & i & "天成本 " & cb)
            Next
            output.show(dr("出纳号") & " 携带金额" & je & " " & mints & "天成本最低 " & mincb)
            If mincb < minallcb Then
                minallcb = mincb
                minallts = mints
                minje = je
            End If
        Next
        msgbox(dr("出纳号") & " 携带金额 " & minje & " " & minallts & "天成本最低 " & minallcb)
    End If
Next


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/1/5 20:23:00 [显示全部帖子]

 17楼的代码,是测试性的代码,你要看懂,改成符合你要求的。

 

 如果测试好了,再改成按钮的代码来用。


 回到顶部