看来你的编号是vchar类型罗,
把客户输入的值和你系统自动生成的值加起来在update不就可以了么?

解决方案 »

  1.   

    不行的,我的系统生成的编号是由一个SQL中的MAX()函数同数据库中的数据做比较的~!
      

  2.   

    现在我就是想能不能把编号后面五位去掉得到前面那客户输入的部分,再到数据库里查寻一下,再做比较就可以得出有不有相同的编号!!!能不能设一个变量(Quo)把整个字符串你的后面部分减去。sql="Select max(right(Quo_NO,3)) as maxQuotNO from tQuotation where Quo_NO='"+Quo+"' ";
      

  3.   

    sql="Select max(right(Quo_NO,3)) as maxQuotNO from tQuotation where Quo_NO like '"
    +Quo+"%' ";
    Quo是客户输入的东西
      

  4.   

    这样我也式过,但这样不是最好的~!这样一来只要客户输入的包函Quo这一部分都认为是相同的了,而这个编号并不是同前面的编号是相同的。还有别的办法吗??能准确判断编号是否相同。
      

  5.   

    如果你要生成唯一的性的编号:
    sql="Select max(right(Quo_NO,3)) as maxQuotNO from tQuotation where Quo_NO like '"
    +Quo+"%' ";//这句选出后三位最大值
    在程序里取出maxQuotNO,然后 maxQuotNO+1;
    然后在你插入记录的时候编号就可以是Quo+"03"+(maxQuotNO+1)
      

  6.   

    是的,,我就是要得到Quo+"03"+(maxQuotNO+1)的结果,但就个号一定是唯一的!!
    sql="Select max(right(Quo_NO,3)) as maxQuotNO from tQuotation where Quo_NO like '"
    +Quo+"%' ";//这句选出后三位最大值
    但是你的'"+Quo+"%'这个东东,能使只要客户输入的内容中有变量"Quo"的值时就做为是相同的,而实际上这是不同的~!!
    sgdb(神天月晓) 谢谢你!!
      

  7.   

    sql="Select "+Quo+"||'-'"+"'03'||'-'||"+"NVL(max(right(Quo_NO,3)),001) as maxQuotNO from tQuotation where SUBSTR(Quo_NO,0,8) ="+Quo+"-"+"03";鬼知道行不行!
      

  8.   

    但是你的'"+Quo+"%'这个东东,能使只要客户输入的内容中有变量"Quo"的值时就做为是相同的,而实际上这是不同的~!!这个同不同有关系吗?Quo+"03"+(maxQuotNO+1)这个唯一就行了啊,你还考虑客户输入的值?哦,对了sql="Select max(right(Quo_NO,3)) as maxQuotNO from tQuotation where Quo_NO like '"
    +Quo+"%' ";这句有缺陷,你需要考虑空值问题,在程序里加个简单的判断,如果是空值编号就是Quo+"03001"
      

  9.   

    但是你的'"+Quo+"%'这个东东,能使只要客户输入的内容中有变量"Quo"的值时就做为是相同的,而实际上这是不同的~!!这个同不同有关系吗?Quo+"03"+(maxQuotNO+1)这个唯一就行了啊,你还考虑客户输入的值?哦,对了sql="Select max(right(Quo_NO,3)) as maxQuotNO from tQuotation where Quo_NO like '"
    +Quo+"%' ";这句有缺陷,你需要考虑空值问题,在程序里加个简单的判断,如果是空值编号就是Quo+"03001"
      

  10.   

    好的我去试试看。。谢谢你们!!
    对了可不可用一个函数求出"xxxx-年月-***"(其中xxxxj是任意长度的。)这个字符串中后面“年月”字段吗??
      

  11.   

    首先从数据库中得到此串
    将其付给str
    然后取出xxxxx在付给str方法如下:
    str=str.substring(0,str.indexOf(“-”));