当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·关于库田连接的问题    »显示摘要«
    摘要: 请问各位:我想用vfp把五个库连接到一起其中每个库里的字段都是相同的用sql怎样连接在一起,怎样把五个库里统计出的数据汇总到一张报表上. ......
    摘要: 如题 ......


自动生成编号[请讨论]

各位   大虾      
  我想请教各位   一下      
  我做的一个东西中  
  她有好几个分类     比如  
  a001-编号  
  b005-编号  
  c008-编号....  
  我现在要实现的是     当我从管理中输入一条记录的时候   他根据所属的类

首先用IF语句判断前4位匹配哪一类,生成前5位,用变量

用搜索来处理  
  加一个索引,如:index   on   ph   to   tag   ph  
  使用的时候,要set   order   to   tag   ph   DESCENDING  
   
  proc   getnewph  
  para   _code  
  local   old_order,old_recno,newval  
  old_order=order(别名)  
  old_recno=recno(别名)  
  newval=1  
  set   order   to   tag   ph   DESCENDING   in   别名  
  if   seek(_code,别名)  
      newval=val(substr(别名.ph,2))+1  
  endif  
  set   order   to   old_order   in   别名  
  do   case  
  case   old_recno=0  
    go   top   in   别名  
  case   if   between(old_recno,1,reccount(别名))  
      go   old_recno  
  other  
      go   bottom  
  endcase  
  return   newval  
  不是很好,仅供参考,未经测试,可能有误  
  -------------------------  
  我流落在凄凉的世界里-孤苦伶仃  
  我过着动荡无助的生活-四处漂泊

NO.3   作者: liujianjun_

***生成工号*******  
  func   setworkerid(cmaxid,defaultheader,idlength)   as   string  
  LOCAL   workerid   as   String,headerlength   as   Integer    
  headerlength=LEN(defaultheader)  
  IF   ISNULL(cmaxid)  
        workerid=defaultheader+"-"++REPLICATE(0,idlength-headerlength-1)+"1"  
  ELSE  
        workerid=defaultheader+"-"+RIGHT(000+ALLTRIM(str(VAL(RIGHT(cmaxid,idlength-headerlength))+1)),idlength-headerlength)  
  endif  
   
  调用方法  
  先在产品表中找到该类别的最大编号  
  select   max(id)   as   maxid   from   tablename   where   kindid=a001   into   cursor   tmaxid  
  sele   tmaxid  
  cmaxid=allt(maxid)  
  sele   tablename  
  appe   blank  
  repl   id   with   setworkerid(cmaxid,a001,8)  
   
  这里参数的含义是,cmaxid对应该类别的最大编号,如果没有可以为NULL,a001是该类的类别号,可以用变量代替,8是指你要生成编号的总位数  
  RETURN   workerid  
  ENDFUNC

NO.4   作者: dfwxj

如果说在程序运行时去判断生成一个流水号,技术上是可以实现的,事实上是不可取的,一方面影响速度,另一方面容易出错,如果已经使用过的流水号记录被删除后,该流水号在下次可能将被重新启用,会导致数据紊乱。解决此类问题的办法是建立一个系统状态信息表,该表只有一条记录,用不同的字段记载每个类别的可用起始流水号,该流水号用数值记录,每用一个流水号后将该数值加1,一旦用过不再重复使用,举例如下:  
  系统状态表sysctrl有三个预置流水号no1、no2、no3,  
   
  use   sysctrl   in   0  
  use   datatable   in   0  
  appe   blan  
  repl   流水号   with   类别前缀+padl(allt(str(sysctrl.no1)),10,0)     &&流水号为类别前缀加上十位数字,流水号不足十位用“0”补足  
  sele   sysctrl  
  repl   no1   with   no1+1  
   
   
   
   
 

NO.5   作者: hnpyz

SELECT   Data1  
  CALCULATE   ALL   MAX(   编号   )   TO   cBH   FOR   LEFT(   编号,   1   )   ==   cLB   &&   cLB   为类名  
  INSERT   INTO   Data1   (   编号   )   VALUES   (   cLB   +   RIGHT(   "00"   +   STR(   VAL(   RIGHT(   cBH,   3   )   )   +   1,   3   ),   3   )   )  
   
 

NO.6   作者: song0311

可以另外建一个表个字段  
  类别名

fj_jiangqi(强盗)   在另一个贴子中提供了一个方法。他在那个贴子里说了他从不用PACK  
  你也不妨如此,将三个大类归到三个表中,然后流水号=大类代表字母+记录号,这种方式查找只需要找到对应的表即可,应该是最快的一种了。副做用就是,无法用PACK  
 


 ·我用的中文win2000,但是目标系统确是英文2000,如何做出能运行在上面的程序,up有分    »显示摘要«
    摘要: 现要做一程序,我用的中文win2000,但是目标系统确是英文2000,如何做出能运行在上面的程序,我想带上中文字体或许可以吧,但是如何用自己带的字体呢?100分不足你说话,我现在有些分,给你500-1000都没有问题,先行谢过 ......
» 本期热门文章:
· 热门栏目:
» 相关精选文章
» 其它相关:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE