以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教:如何在两个表中取最大值?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2770)

--  作者:yangming
--  发布时间:2009/5/13 9:26:00
--  请教:如何在两个表中取最大值?
我有二个表,一是员工档案表,一是调出人员表,当我在员工档案表中输入新员工时,要输入一工号,而此工号是不能重复使用的,就算是调出或死亡的人工号都还保留着,所以,在输入前原来的作法是看一下二个表中的工号的最大号,然后再给新员工一个工号,人少时还可以这么做,员工多时,加上一般我们的惯例是按部门排序,所以要看工号时还得重新排序后再输入
现在我的想法是,找出二个表中的最大值,然后我再输入工号,问题就是,二个表中如何取最大值?
或是直接在新增行的工号列输入最大值加一的值也行,工号列的格式是:0001,字符型
[此贴子已经被作者于2009-5-13 9:31:47编辑过]

--  作者:don
--  发布时间:2009/5/13 9:31:00
--  
参考Compute方法
--  作者:yangming
--  发布时间:2009/5/13 10:26:00
--  
谢谢don老师
我的代码做好了,在新增行按钮中

Dim dr As Row
dr = Tables("员工档案").AddNew()
Dim t As Integer
Dim t1 As Integer
t = DataTables("员工档案").Compute("max(工号)")
t1 = DataTables("调出人员表").Compute("max(工号)")
If t >t1 Then
dr("工号") = Format(t+1,"0000")
Else
dr("工号") = Format(t1+1,"0000")

End If

这个代码是加好了,但是在完成操作后却出现下面的错误,请看下图,怎么回事?


图片点击可在新窗口打开查看此主题相关图片如下:117.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2009-5-13 10:31:02编辑过]

--  作者:mr725
--  发布时间:2009/5/13 10:45:00
--  

好象‘工号’列要为整数型的才可以这样比较,不知道对不?


--  作者:yangming
--  发布时间:2009/5/13 11:19:00
--  
我想不是比较的问题,现在可以完成,也取出最大值,并在工号列也标出了最大值加1的号了,就是不知为何会有这样的提示
--  作者:mr725
--  发布时间:2009/5/13 11:28:00
--  

试一试这个:
针对字符型编号的(格式:0001,0002,0003.....0nnn(如果你的工号列只有数字没有其他字符的话,应该可以)
Dim dr As datarow
Dim dr1 As datarow
Dim drd As row
dr = DataTables("员工档案").find("工号 <> \'\'","工号 Desc")
dr1 = DataTables("调出人员表").find("工号 <>\'\'","工号 Desc")
drd = Tables("员工档案").AddNew()

If dr("产品") > dr1("工号") Then
drd("产品") = format(dr("工号") +0001,"0000")
Else
drd("产品") = format(dr1("工号") +0001,"0000")
end if

[此贴子已经被作者于2009-5-13 11:28:02编辑过]

--  作者:yangming
--  发布时间:2009/5/13 11:49:00
--  
谢谢 mr725 老师
怪事,我重新下载了5.12程序文件,再打开就没有问题了.
[此贴子已经被作者于2009-5-13 11:51:08编辑过]

--  作者:mr725
--  发布时间:2009/5/13 13:02:00
--  
以下是引用yangming在2009-5-13 11:49:00的发言:
谢谢 mr725 老师
怪事,我重新下载了5.12程序文件,再打开就没有问题了.
[此贴子已经被作者于2009-5-13 11:51:08编辑过]

哈哈~  我可不是老师, 只是玩内部表的代码有半年的时间了,现在基本都能达到想要的结果,但出手的很多代码还是很繁琐,不能简化,甚至不少很是一知半解的,大多数都是在套用学过的(有时一天才能完成一段简单的代码),觉得自己挺笨的,基础差呀~

[此贴子已经被作者于2009-5-13 13:02:55编辑过]

--  作者:yangming
--  发布时间:2009/5/13 13:05:00
--  

我认为:能者为师,我才学了一个月,你比我入学早,怎么才能算是半师吧,呵呵


--  作者:易狐
--  发布时间:2009/5/13 14:53:00
--  

这样看看:

Dim dr As Row
dr = Tables("员工档案").AddNew()
Dim t As Integer
Dim t1 As Integer
t = DataTables("员工档案").Compute("max(工号)")
t1 = DataTables("调出人员表").Compute("max(工号)")
t = Math.Max(t,t1)
dr("工号") = Format(t+1,"0000")