ACCESS+DELPHI6
是编号的问题,在写一个业务方面的软件,每条业务都有一个特定的编号,格式是年+日期+今日第几笔单子,比如03817001,意思是03年8月17日第1笔单子,这样的编号该怎么求,请高手帮忙,客户提的问题,太搞脑子了

解决方案 »

  1.   

    日期要固定
    yymmdd
    否则 03111 是11-1还是1-11?
    其他就好说了
    countid 第几条
    format('%s%.3d',[formatdatetime('yymmdd'),countid])
      

  2.   

    s1<>encrypt(edit1.text,'')中edit1的PasswordChar的属性为什么呢?
    现在分用没了,想问问题。大家帮忙吧?以后一定还上
      

  3.   

    提取日期中的日后面的数值(字符转换为数值)不就可以了吗?用copy( )
      

  4.   

    tmpstr :='030811'
    先like '%'+tmpstr+'%'查找8月11号共有几笔单子,然后再统计的总数上加1,在精确查找
      

  5.   

    formatdatetime('yymmdd',now)  得到 030811
    后面的流水号最好保存在一个数据表中。最好把所有的单据流水号统一保存在该数据表中。
      

  6.   

    formatdatetime('yymmdd',date)
    转化成字符串型,再后面加上流水帐号,即查到是第几笔单子,把单子号加在末尾。
      

  7.   

    得到当天的编号前缀:formatdatetime('yymmdd',now) 得到 030811
    取出数据库中的最大编号 max(编号),然后和 030811 + '001'比较大小:
    if max(编号) < ('030811' + '001') then
       最新编号:='030811' + '001'
    else
       最新编号:='0' + InttoStr(StrtoInt(max(编号)) + 1);//即:'0' + 30811100 + 1,得到030811101;
      

  8.   

    SELECT MAX(INT(编号)) as max1 
    from t1
    froup by left(编号,6)
      

  9.   

    qud(黑咖啡)的问题大家都回答的差不多了, 我来回答一下Rose1234567890(Rose1234567890)的问题(好可怜, 和我一样穷).
    edit1的PasswordChar的属性只是输入密吗时显示的mask符号, 比如说:"*". 没什么别的用.
      

  10.   

    提示;换一个方式定义这个特定的编号,否则不好取最大的编号。如:03817001,意思是03年8月17日第1笔单子。
        那么03127001,表示03年12月7日第1笔单子。取出的最大编号为03817001。但 03127001应该在后面,12月份的嘛。可以设置为:030807001  03年 / 08月(两位)/ 07(两位)/ 001这样比较好取最大数。sql string: select Max(int(编号)) as 'MaxNumber' from TableName
           
    写个函数:返回 Result:=Adoquery1.fieldbyname('MaxNumber').asinteger;//再注意一下前面的0
          
    这样的编号该怎么求,请高手帮忙,客户提的问题,
    太搞脑子了
      

  11.   

    楼上的 MichealLee() 把所有问题全都答了....
      

  12.   

    newsofter(横空出世小霸王) 回答的很对,最大值的末位加1即可
      

  13.   

    var  Pyear,PMonth,PDay:word;//年、月、日
      aa:string;  decodedate(Date,Pyear,PMonth,PDay);//取年月日
    ==================================================
    今日第几笔单子编码应该是长度固定的吧................
     select max(field) as maxbh from tablename where year(field)=floattostr(pyear) and month(field)=floattostr(pmonth) and day(field)=floattostr(pday)//取最大值
      aa:=inttostr(strtoint(copy(fieldbyname(field).asstring),9,3)+1)//加1
        //如果为1位,加三个0,。
       case length(aa) of
         1:suserbh:='00'+aa;
         2:suserbh:='0'+aa;
        end;
    //最后编号
    aa:=floattostr(pyear)+floattostr(pmonth)+floattostr(pday)+aa;
      

  14.   

    日期要用format来固定,用YYMMDD格式就可以得到你要的03817
    至于第几笔单号用以下代码实现
    Count:= 笔数;
    str:=IntToStr(Count);
    str:=Copy('00000',1,5-Lenth(str))+str;
    就得到000n这种格式的数了
      

  15.   

    谁能整理一下,写了清楚点,求日期我知道的,最大问题是怎么获得第几笔业务,我用的是DBGrid1不是TABLE
      

  16.   

    比如编号是显示在DBEDIT1中的,那BUTTON里该怎么写,使用的是ADOQUERY1