以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]列内容变化后计算  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=52822)

--  作者:gaixuebo
--  发布时间:2014/6/23 20:15:00
--  [求助]列内容变化后计算
Dim Arys As List(Of String()) 
Arys = DataTables("订单").GetValues("产品|客户") 

For Each Ary As String() In Arys
    Output.Show(Ary(0) & "|" & Ary(1)) 
Next
此处的OUTPUT函数如果换成一个针对变化的和变化前两列的函数,例如相加怎么计算呢?

--  作者:有点甜
--  发布时间:2014/6/23 20:18:00
--  
 没看懂你的问题,最好举例说明。
--  作者:有点甜
--  发布时间:2014/6/23 20:19:00
--  

是不是问这个?

 

http://www.foxtable.com/help/topics/1445.htm

 

http://www.foxtable.com/help/topics/0625.htm

 

 


--  作者:gaixuebo
--  发布时间:2014/6/23 20:23:00
--  
这个例子,只要产品与经度字符串发生变化,就根据这个产品变化前和变化后的经纬度计算出距离,计算函数已经有了。
Dim Arys As List(Of String()) 
Arys = DataTables("产品").GetValues("名称|经度") 

For Each Ary As String() In Arys
    Output.Show(Ary(0) & "|" & Ary(1)) 
Next

--  作者:有点甜
--  发布时间:2014/6/23 20:26:00
--  
是不是3楼的意思?如果不是,上传例子加以说明。
--  作者:gaixuebo
--  发布时间:2014/6/23 20:27:00
--  
例子传上去吧。
--  作者:gaixuebo
--  发布时间:2014/6/23 20:27:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:111.table


--  作者:有点甜
--  发布时间:2014/6/23 20:38:00
--  

 是不是这个意思?

 

Dim strs As List(Of String) = DataTables("产品").GetValues("名称")

For Each str As String In strs
    Dim drs As List(Of DataRow) = DataTables("产品").Select("名称 = \'" & str & "\'", "时间")
    Dim dr1 As DataRow = drs(0)
    dr1("距离累加值") = 0
    For i As Integer = 1 To drs.Count - 1
        Dim x1 As Double = drs(i-1)("纬度")
        Dim y1 As Double = drs(i-1)("经度")
        Dim x2 As Double = drs(i)("纬度")
        Dim y2 As Double = drs(i)("经度")
       
        Dim rad As Double = 6371
        Dim p1X As Double = X1 / 180 * Math.PI
        Dim p1Y As Double = Y2 / 180 * Math.PI
        Dim p2X As Double = X2 / 180 * Math.PI
        Dim p2Y As Double = Y2 / 180 * Math.PI
        Dim result As Double = Math.Acos(Math.Sin(p1Y) * Math.Sin(p2Y) + Math.Cos(p1Y) * Math.Cos(p2Y) * Math.Cos(p2X - p1X)) * rad
        drs(i)("距离累加值") = drs(i-1)("距离累加值") + result
    Next
Next

 


--  作者:gaixuebo
--  发布时间:2014/6/23 20:42:00
--  
就是这个意思,谢谢甜老师
--  作者:gaixuebo
--  发布时间:2014/6/24 10:27:00
--  
For Each n As String In DataTables("产品").GetValues("GPS产品名称", "GPS产品名称 is not null")
    Dim dr1 As DataRow = DataTables("产品").Find("GPS产品名称 = \'" & n & "\'", "日期")
    Dim dr2 As DataRow = DataTables("产品").Find("GPS产品名称 = \'" & n & "\'", "日期 desc")
    Dim fdr As DataRow = DataTables("表C").Find("第一列 = \'" & n & "\'")
    If fdr Is Nothing Then
        fdr = DataTables("表C").AddNew
        fdr("第一列") = n
    End If
    Dim x1 As Double = dr1("经度")
    Dim y1 As Double = dr1("纬度")
    Dim x2 As Double = dr2("经度")
    Dim y2 As Double = dr2("纬度")
    
    Dim rad As Double = 6371
    Dim p1X As Double = X1 / 180 * Math.PI
    Dim p1Y As Double = Y2 / 180 * Math.PI
    Dim p2X As Double = X2 / 180 * Math.PI
    Dim p2Y As Double = Y2 / 180 * Math.PI
    Dim result As Double = Math.Acos(Math.Sin(p1Y) * Math.Sin(p2Y) + Math.Cos(p1Y) * Math.Cos(p2Y) * Math.Cos(p2X - p1X)) * rad
    fdr("第二列") = result
Next
这段代码是把值赋值到C表中的第二列,我想把上面那段得出的结果也赋值到C表中的第三列 怎么做啊?甜老师