自动产生编号问题!!在线等待!高手快进来看看。

liuxiaobo8590 2003-07-15 10:44:54
现在我在做一个系统用到自动产生编号。其中有一部分是由客户自己输入的并且客户输入的不做什么限制,第二部分是得到当前的年月,第三部分是系统自动给出的编号(由三位数组成)。

编号的格式:xxxxx-03-***
现在我是由一个sql语句来处理的。后面的我都能取来,现在就是怎么才能取来前面客户输入的那一部分,到数据库里做相应的比较。现在急着要。各位师兄弟妹妹们快快帮我看看。在线等待。
...全文
34 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuxiaobo8590 2003-07-15
  • 打赏
  • 举报
回复
这样我也式过,但这样不是最好的~!这样一来只要客户输入的包函Quo这一部分都认为是相同的了,而这个编号并不是同前面的编号是相同的。还有别的办法吗??能准确判断编号是否相同。
sgdb 2003-07-15
  • 打赏
  • 举报
回复
sql="Select max(right(Quo_NO,3)) as maxQuotNO from tQuotation where Quo_NO like '"
+Quo+"%' ";
Quo是客户输入的东西
liuxiaobo8590 2003-07-15
  • 打赏
  • 举报
回复
现在我就是想能不能把编号后面五位去掉得到前面那客户输入的部分,再到数据库里查寻一下,再做比较就可以得出有不有相同的编号!!!能不能设一个变量(Quo)把整个字符串你的后面部分减去。

sql="Select max(right(Quo_NO,3)) as maxQuotNO from tQuotation where Quo_NO='"+Quo+"' ";

liuxiaobo8590 2003-07-15
  • 打赏
  • 举报
回复
不行的,我的系统生成的编号是由一个SQL中的MAX()函数同数据库中的数据做比较的~!
sgdb 2003-07-15
  • 打赏
  • 举报
回复
看来你的编号是vchar类型罗,
把客户输入的值和你系统自动生成的值加起来在update不就可以了么?
xqi8 2003-07-15
  • 打赏
  • 举报
回复
up
liuxiaobo8590 2003-07-15
  • 打赏
  • 举报
回复
谢谢~!
liuxiaobo8590 2003-07-15
  • 打赏
  • 举报
回复
好的这样是可以的!!
WOnion 2003-07-15
  • 打赏
  • 举报
回复
首先从数据库中得到此串
将其付给str
然后取出xxxxx在付给str方法如下:
str=str.substring(0,str.indexOf(“-”));
liuxiaobo8590 2003-07-15
  • 打赏
  • 举报
回复
好的我去试试看。。谢谢你们!!
对了可不可用一个函数求出"xxxx-年月-***"(其中xxxxj是任意长度的。)这个字符串中后面“年月”字段吗??
sgdb 2003-07-15
  • 打赏
  • 举报
回复
但是你的'"+Quo+"%'这个东东,能使只要客户输入的内容中有变量"Quo"的值时就做为是相同的,而实际上这是不同的~!!

这个同不同有关系吗?Quo+"03"+(maxQuotNO+1)这个唯一就行了啊,你还考虑客户输入的值?

哦,对了sql="Select max(right(Quo_NO,3)) as maxQuotNO from tQuotation where Quo_NO like '"
+Quo+"%' ";这句有缺陷,你需要考虑空值问题,在程序里加个简单的判断,如果是空值编号就是Quo+"03001"
sgdb 2003-07-15
  • 打赏
  • 举报
回复
但是你的'"+Quo+"%'这个东东,能使只要客户输入的内容中有变量"Quo"的值时就做为是相同的,而实际上这是不同的~!!

这个同不同有关系吗?Quo+"03"+(maxQuotNO+1)这个唯一就行了啊,你还考虑客户输入的值?

哦,对了sql="Select max(right(Quo_NO,3)) as maxQuotNO from tQuotation where Quo_NO like '"
+Quo+"%' ";这句有缺陷,你需要考虑空值问题,在程序里加个简单的判断,如果是空值编号就是Quo+"03001"
amortal 2003-07-15
  • 打赏
  • 举报
回复
自己试试看,不行就在改改,应该可以实现
amortal 2003-07-15
  • 打赏
  • 举报
回复
sql="Select "+Quo+"||'-'"+"'03'||'-'||"+"NVL(max(right(Quo_NO,3)),001) as maxQuotNO from tQuotation where SUBSTR(Quo_NO,0,8) ="+Quo+"-"+"03";

鬼知道行不行!
凋零的老树 2003-07-15
  • 打赏
  • 举报
回复
应该专门写个函数或存储过程来处理
liuxiaobo8590 2003-07-15
  • 打赏
  • 举报
回复
是的,,我就是要得到Quo+"03"+(maxQuotNO+1)的结果,但就个号一定是唯一的!!
sql="Select max(right(Quo_NO,3)) as maxQuotNO from tQuotation where Quo_NO like '"
+Quo+"%' ";//这句选出后三位最大值
但是你的'"+Quo+"%'这个东东,能使只要客户输入的内容中有变量"Quo"的值时就做为是相同的,而实际上这是不同的~!!
sgdb(神天月晓) 谢谢你!!
sgdb 2003-07-15
  • 打赏
  • 举报
回复
如果你要生成唯一的性的编号:
sql="Select max(right(Quo_NO,3)) as maxQuotNO from tQuotation where Quo_NO like '"
+Quo+"%' ";//这句选出后三位最大值
在程序里取出maxQuotNO,然后 maxQuotNO+1;
然后在你插入记录的时候编号就可以是Quo+"03"+(maxQuotNO+1)
sgdb 2003-07-15
  • 打赏
  • 举报
回复
晕了,我现在不知道你想要做什么了
能说清楚你现在想要做什么吗?
生成编号还是查询编号?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧