以文本方式查看主题

-  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=39287)

--  作者:若水三千
--  发布时间:2013/8/20 17:07:00
--  关于条件取值列方法求教

如何让表A中的年绩效分数 等于表B中指定条件下的年绩效分数

条件为: 根据系统当前日期的月份往前推11个月 算出年绩效分数 
例如今天是13年8月份  那么 当年绩效分数就是 去年7月至今年8月的分数累积和

还有一个问题  是否可以自动生成例如表B中的月份列 ,例如 时间到了13年 那么 自动生成13年一月份 二月份 。。。等等这些列

3,表A中有一个本月考核分数(这个实际上是初审分数报上去考核的),是否可以增加一个按钮 当点击这个按钮后 即可根据系统当前日期的月份
自动导入到表B中对应的月份 分数?

 

如何将数字变成中文格式   例如 11 变成 十一 24 变成二十四   我试过帮助中的字符转换格式函数  例如 CLNUM 只能将 11 变成一一

目录树以时间为节点 怎么总是显示 2013-9-12 00:00:00  如何把这种格式的 后面的时间去掉啊 只留日期

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


--  作者:Bin
--  发布时间:2013/8/20 17:25:00
--  
1.你这个表结构不科学吧,可以使用SQL查询表 或者使用DataTables("x").Compute统计 http://www.foxtable.com/help/topics/0393.htm

2.最好不要这样做.


--  作者:czy
--  发布时间:2013/8/20 17:45:00
--  
AL列是干什么的?
--  作者:czy
--  发布时间:2013/8/20 17:47:00
--  

咱忙,没时间仔细揣摸,第一个问题大致是这样的。

下面的代码没有统计AL列。

 

Dim d As Date = Date.Today
d = d.AddMonths(-13)
Dim n As Double
For Each dr As DataRow In DataTables("表A").DataRows
    Dim dr1 As DataRow = DataTables("表B").Find("姓名 = \'" & dr("姓名") & "\'")
    If dr1 IsNot Nothing Then
        n = 0
        For i As Integer = 0 To 13
            n = n + dr1("A" & iif(d.Month + i > 12,d.Year + 1 ,d.Year) & "_" & iif(d.Month + i > 12 ,d.Month + i -12,d.Month + i))
        Next
        dr("当年绩效分数") = n
    End If
Next


--  作者:若水三千
--  发布时间:2013/8/20 18:12:00
--  
AL列式每一年的累计值 计算的时候不考虑
--  作者:若水三千
--  发布时间:2013/8/20 18:13:00
--  
不科学 那要怎么设计呢  使用SQL查询表是不是需要建立SQL 呢  我用的是ACC的数据库
--  作者:若水三千
--  发布时间:2013/8/20 18:14:00
--  
以下是引用czy在2013-8-20 17:47:00的发言:

咱忙,没时间仔细揣摸,第一个问题大致是这样的。

下面的代码没有统计AL列。

 

Dim d As Date = Date.Today
d = d.AddMonths(-13)
Dim n As Double
For Each dr As DataRow In DataTables("表A").DataRows
    Dim dr1 As DataRow = DataTables("表B").Find("姓名 = \'" & dr("姓名") & "\'")
    If dr1 IsNot Nothing Then
        n = 0
        For i As Integer = 0 To 13
            n = n + dr1("A" & iif(d.Month + i > 12,d.Year + 1 ,d.Year) & "_" & iif(d.Month + i > 12 ,d.Month + i -12,d.Month + i))
        Next
        dr("当年绩效分数") = n
    End If
Next

谢谢您的代码  请问 第二个和第三个问题 怎么解决呢


--  作者:czy
--  发布时间:2013/8/20 19:57:00
--  

第二个问题,按钮代码:

 

 

If DataTables("表B").DataCols.Contains("A" & today.Year & "_1")
    MessageBox.Show("已存在" & today.Year & "年的列,不能再增加")
Else
    Dim Builder As New ADOXBuilder
    Builder.Open() \'打开ADOXBuilder
    With Builder.Tables("表B")
        For i As Integer = 1 To 12
            .AddColumn("A" & today.Year & "_" & i ,ADOXType.Double)
        Next
        .AddColumn("A" & today.Year & "_AL",ADOXType.Double)
    End With
    Builder.Close()
    syscmd.Project.Open(ProjectFile)
End If


--  作者:czy
--  发布时间:2013/8/20 20:00:00
--  

第三个问题,小意思啦。

按钮代码:

 

For Each dr As DataRow In DataTables("表A").DataRows
    Dim dr1 As DataRow = DataTables("表B").Find("姓名 = \'" & dr("姓名") & "\'")
    If dr1 IsNot Nothing Then
        dr1("A" & today.Year & "_" & today.Month) = dr("本月考核分数")
    End If
Next


--  作者:若水三千
--  发布时间:2013/8/20 20:01:00
--  
大哥 第三个问题呢  就是 如何 让11变成 十一  而不是一一  谢谢您 受教了
[此贴子已经被作者于2013-8-20 20:03:29编辑过]