以文本方式查看主题
- 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")
|