新手问题

[复制链接]
查看11 | 回复6 | 2014-2-18 16:42:02 | 显示全部楼层 |阅读模式
我在做一个录入单的时候,我们头叫我把这个单子的编号做为自动生成的。编号=当前年月(如今天200603)+01(如果这个月还是第一次做单的话,要是不是在数据库中取最大的那个在后面+1),请问这个应该怎么实现????




回复

使用道具 举报

千问 | 2014-2-18 16:42:02 | 显示全部楼层
不知道你用的是什麼數據庫,建議在數據庫中寫在函數!
回复

使用道具 举报

千问 | 2014-2-18 16:42:02 | 显示全部楼层
我用的是SQL2000/
回复

使用道具 举报

千问 | 2014-2-18 16:42:02 | 显示全部楼层
我寫一個Oracle的例子給你,看看是否有幫助!
[PHP]
-- 創建表
SQL> create table text
2(
3 orderId varchar2(10)
4);
Table created
[/PHP]
[PHP]
--創建函數
/* Formatted on 2006/03/23 14:13 (Formatter Plus v4.8.7) */
CREATE OR REPLACE FUNCTION textfun
RETURN VARCHAR2
IS
tmpvar text.orderid%TYPE;
BEGIN
SELECTTO_CHAR (SYSDATE, 'yyyymmdd')

|| LPAD ((NVL (MAX (SUBSTR (orderid, 9)), 0) + 1), 2, '0')
INTO tmpvar
FROM text
WHERE SUBSTR (orderid, 1, 8) = TO_CHAR (SYSDATE, 'yyyymmdd');
RETURN tmpvar;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
WHEN OTHERS
THEN
-- Consider logging the error and then re-raise
RAISE;
END textfun;
/
[/PHP]
[PHP]
-- inser record
SQL> insert into text values(textfun());
1 row inserted
SQL> /
1 row inserted
SQL> /
1 row inserted
SQL> /
1 row inserted
SQL> /
1 row inserted
SQL> select * from text;
ORDERID
----------
2006032301
2006032302
2006032303
2006032304
2006032305
[/PHP]
回复

使用道具 举报

千问 | 2014-2-18 16:42:02 | 显示全部楼层
谢谢。
回复

使用道具 举报

千问 | 2014-2-18 16:42:02 | 显示全部楼层
在.NET里面可以直接通过语句实现的吧?每次新增的时候自动读取数据库里的编号,然后自加1,再UPDATE到数据库里。可以加一条语句判断是否第一次新增,LEN(...)<8就在原来的编号基础上后面加上01。这个语句应该也挺简单的。
回复

使用道具 举报

千问 | 2014-2-18 16:42:02 | 显示全部楼层
.net中有时间的变量啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行