以文本方式查看主题

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

--  作者:wqc360
--  发布时间:2010/8/11 18:06:00
--  替换代码问题

Dim dd As WinForm.TextBox = Forms("调整工资工龄暗").Controls("姓名")
Dim dr2 As DataRow = DataTables("员工档案").Find("[姓名] = \'" & dd.text & "\' and [标记] Is Not Null ")
If dr2 IsNot Nothing Then
    DataTables("工资调整").ReplaceFor("现基本工资暗", Forms("调整工资工龄暗").Controls("基本工资暗").text, " [姓名] = \'" & dd.text & "\' and [现基本工资暗] =  Max and [岗位工资暗] =  Max  ")
    DataTables("工资调整").ReplaceFor("岗位工资暗", Forms("调整工资工龄暗").Controls("岗位工资暗").text, " [姓名] = \'" & dd.text & "\' and [现基本工资暗] =  Max and [岗位工资暗] =  Max ")
Else
    MessageBox.Show("您调整的员工不对!", "提示")
End If

请问以上按钮代码红色的问题在哪里,谢谢


--  作者:mr725
--  发布时间:2010/8/11 18:22:00
--  
Max 指什么?
--  作者:mr725
--  发布时间:2010/8/11 18:44:00
--  

或许你要定义一下:

Dim Max As Double = DataTables("表名").Compute("Max(列名)", "条件")


--  作者:wqc360
--  发布时间:2010/8/11 19:25:00
--  

姓名相同,现基本工资暗和岗位工资暗有多行,如:

调整时间                    姓名     现基本工资暗     岗位工资暗 

2010-06-01               张三     1000               500

2010-07-01               张三     1100               500

2010-08-01               张三     1100               600  

2010-06-01               李四     1200               600

2010-07-01               李四      1200               700

2010-08-01                李四      1300              700     

我要选出红色行的进行替换。用日期最大一个条件也可以。

这是高管要用的特殊岗位工资调整窗口,一般操作员这两列是隐藏的,   


--  作者:mr725
--  发布时间:2010/8/11 19:40:00
--  

 

Dim dr As DataRow
dr =
DataTables("调整工资").Find("姓名 = \'张三\'","调整时间 Desc")
If
dr IsNot Nothing Then 
    Output.Show(
"现基本工资暗:" & dr("现基本工资暗"))
    Output.Show(
"岗位工资暗:" & dr("岗位工资暗"))

End If


--  作者:mr725
--  发布时间:2010/8/11 19:53:00
--  

 可能这样就可以了吧:

Dim Max As Date = DataTables("调整工资").Compute("Max(调整时间)", "[姓名] =  \'" & dd.text & "\' ")

DataTables("工资调整").ReplaceFor("现基本工资暗", Forms("调整工资工龄暗").Controls("基本工资暗").text, " [姓名] = \'" & dd.text & "\' and [调整时间] =  \'" & Max & "\' ")


--  作者:wqc360
--  发布时间:2010/8/11 20:04:00
--  
谢谢mr725兄,6楼代码搞定。
--  作者:mr725
--  发布时间:2010/8/11 20:25:00
--  

其实5楼代码可以这样直接更新数据:

 

dr("现基本工资暗") = Forms("调整工资工龄暗").Controls("基本工资暗").text


--  作者:czy
--  发布时间:2010/8/11 20:44:00
--  
调整时间列是日期型,Max前后应该加上#号。
--  作者:wqc360
--  发布时间:2010/8/11 21:27:00
--  

这样也行:

DataTables("工资调整").ReplaceFor("现基本工资暗", Forms("调整工资工龄暗").Controls("基本工资暗").text, " [姓名] = \'" & dd.text & "\' and [调整时间] =  \'" & Max & "\' ")

按C版的意见也行,不过好像代码更正规,不然到什么时候出现问题还不知道,谢谢C版:

DataTables("工资调整").ReplaceFor("现基本工资暗", Forms("调整工资工龄暗").Controls("基本工资暗").text, " [姓名] = \'" & dd.text & "\' and [调整时间] =  #" & Max & "# ")