Foxtable(狐表)用户栏目专家坐堂 → 请教:如何在两个表中取最大值?


  共有20153人关注过本帖树形打印复制链接

主题:请教:如何在两个表中取最大值?

美女呀,离线,留言给我吧!
yangming
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
请教:如何在两个表中取最大值?  发帖心情 Post By:2009/5/13 9:26:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
don
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2009/5/13 9:31:00 [只看该作者]

参考Compute方法

 回到顶部
美女呀,离线,留言给我吧!
yangming
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/5/13 10:45:00 [只看该作者]

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


 回到顶部
美女呀,离线,留言给我吧!
yangming
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/5/13 11:19:00 [只看该作者]

我想不是比较的问题,现在可以完成,也取出最大值,并在工号列也标出了最大值加1的号了,就是不知为何会有这样的提示

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/5/13 11:49:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/5/13 13:05:00 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
易狐
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:147 积分:947 威望:0 精华:0 注册:2009/5/12 9:43:00
  发帖心情 Post By: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")


 回到顶部
总数 11 1 2 下一页