Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

如何取得一行数据中符合条件的第一条件记录?

张无忌  发表于:2013-08-29 23:42:12  
复制

 工资标准表               

     档次      1       2        3       4       5

    经理       100   200    300   400     500

    员工       50    100    150    200     300

 

 

假如员工的职务从“员工”级晋升到“经理”时,按就近就高的原则,如果现执行的金额是100元,那么调整为200元;如果现在执行的是150元,那么晋升到200元。请问,如何如何查询 符合条件的第一记录。(从工资标准表中)

 

Top
煮江品茶 发表于:2013-08-30 09:17:30

不知所云。

标准表中两种职务都只有一条记录,符合条件的记录也就一条,何来”符合条件的第一条记录“?



张无忌 发表于:2013-08-31 15:09:38

 煮江品茶老师,“就近就高”原则的意思是“经理”级的200    300   400     500 都比100大,如何取得“200”这一档次和金额。



蟹仔 发表于:2013-08-31 17:06:37

如果想直接生成一个查询。最好改变一下数据结构。这样不好处理

如果单纯的想得出一个数字而已。那就写语句去获得。类似=iif(现在工资>经理工资第一档,经理工资第一档,iif(现在工资>经理工资第二档,经理工资第二档,if(现在工资>经理工资第三档,经理工资第三档if(现在工资>经理工资第四档,经理工资第四档,if(现在工资>经理工资第五档,经理工资第五档))))

如果想使用方便。最好就写个公共函数。



张无忌 发表于:2013-08-31 18:12:06

蟹仔老师的工资改变结构是不是变成下面这种,如果用VBa或函数如何实现晋级,我是新手,不会写函数,请帮我是写一下代码,感谢了!

 

职务 档次  金额

经理   5    500

经理   4    400

经理   3    300

经理   2    200

经理   1    100

员工   5    300

员工   4    200

员工   3    150

员工   2    100

员工   1    50 



煮江品茶 发表于:2013-09-01 10:47:27

不用修改数据表,调用以下自定义函数即可。

Public Function GetMoney(ByVal M As Double) As Double
    '功能:返回经理档次对应的工资标准
    '参数:M--当前员工职务的工资
    Dim rs As New ADODB.Recordset
    Dim ssql As String
    Dim i As Long
    Dim x As Double
    ssql = "select * from 工资标准表 where 档次='经理'"
    x = rs.Fields(1).Value
    For i = 2 To rs.Fields.Count - 1
        If rs.Fields(i).Value > M Then Exit For
        x = rs.Fields(i).Value
    Next
    rs.Close: Set rs = Nothing
    GetMoney = x
End Function



张无忌 发表于:2013-09-01 14:24:14

谢谢煮江品茶老师,问题已经解决。



总记录:6篇  页次:1/1 9 1 :