简洁高效的FoxPro通用数据输入程序

Author: 石望湘 Date: 1997-01-01

  在Foxpro的编程中,经常需要编写字段的数据输入模块,许多朋友都是采用一个字段对应一条get和read语句的编程方法,不仅书写繁琐,而且还会因为字段名称、类型以及宽度的变化而修改源程序,实在是事倍功半。实际上,可以通过宏替换&编写一个根本不必考虑具体数据库中字段情况的简明高效的Foxpro通用数据输入程序,真正而充分地体现Foxpro的程序与数据的无关性。
  下面假设数据库文件名为MAIN.DBF,以修改库中原有数据为例,给出完整的通用数据输入核心源程序如下:
  clea
  set talk off
  use main
  *以下7行读取字段个数,并将各字段名称赋给数组S
  s1=fcou()
  dime s(s1)
  i=1
  do whil i<=s1
  s(i)=fiel(i)
  i=i+1
  endd
  do whil.not.eof()
  j=1
  * j=1 首先显示所有字段的原来值
  * j=2 然后进行各个字段依次输入
  do whil j<=2
  i=1
  do whil i<=s1
  if j=1
  @i,10 say s(i)+“:”+spac(10-len(s(i)))
  else
  @i,21 get &s(i)
  read
  *以下if嵌套实现Ctrl+W强制完成数据输入
  if read()=270
  exit
  endi
  endi
  @i,21 say &s(i)
  *以下if嵌套实现字段间的上下移动
  if read()=4.and.i<>1
  i=i-1
  else
  i=i+1
  endi
  endd
  j=j+1
  endd
  if read()=270
  exit
  endi
  skip
  endd
  rele s
  set talk on
  clos all
  retu
  以上通用数据输入核心源程序虽然很短小但是非常有效,除了未考虑特殊的General和Picture字段类型输入,其它所有类型的字段均可自动匹配。如果您正在编写输入模块,不妨作个参考,将这段程序追加到模块主体,按照您的具体要求,在适当的地方略加几条语句,并稍微润色@语句的行列值,再在SKIP位置加上记录上下翻阅或跳转,则可完成。