Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共11 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

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

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

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

5楼
yangming 发表于:2009/5/13 11:19:00
我想不是比较的问题,现在可以完成,也取出最大值,并在工号列也标出了最大值加1的号了,就是不知为何会有这样的提示
6楼
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编辑过]
7楼
yangming 发表于:2009/5/13 11:49:00
谢谢 mr725 老师
怪事,我重新下载了5.12程序文件,再打开就没有问题了.
[此贴子已经被作者于2009-5-13 11:51:08编辑过]
8楼
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编辑过]
9楼
yangming 发表于:2009/5/13 13:05:00

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

10楼
易狐 发表于: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 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03125 s, 2 queries.