收录日期:2018/07/18 14:47:17 时间:2016/05/21 14:12:43 标签:VFP
我们以前的老师只都我们学命令,而现在的老师让我们写程序

把表ZGDA中职称为二级的基本工资在ZGGZ里加10块,没有关联,只限制在两个工作区内操作,这个简单的程序怎么写?

写程序的方法:

用命令在电脑上写
******************************************************************
&&以下假设zgda的有两个字段:zg_id(职工编号),zg_gra(职工职称);
&&zggz中同样有两个字段:zg(职工编号,以上面相同),zg_num(职工工资)
*******************************************************************
local cur_id
local shoud_add
should_add=.f.
sele a
use zggz.dbf
sele b
use zgda
sele a
scan
   cur_id=zg_id
   sele b
   locate for zg_id=cur_id
   should_add=(zg_gra=="二级")
   sele a
   if should_add
         replace zg_num with zg_num+10
   endif   
endscan
********************************************************
&&时间仓促,未写异常处理部分
什么意思哟?我根本看不懂,比如说
local cur_id
local shoud_add
should_add=.f.
Modi comm Ls
use zgda
sele 2
use zggz
sele 1
if ! eof()
do while .T.
if 职称="二级"
temp=姓名
sele 2
replace 基本工资 with 基本工资+10 for temp=姓名
end if
sele 1
skip
if eof()
exit
endif
enddo
end if

这是老师给出来的答案,但是我认为不是很怎么好呀~~~~~~~~~~~~~大家给点意见
Modi comm Ls
use zgda
sele 2
use zggz
sele 1
do whil .not.eof()
  if 职称="二级"
    temp=姓名
    sele 2
    repl 基本工资 with 基本工资+10 for temp=姓名
  end if
  sele 1
  skip
enddo
close all



或用scan也可,
黑鹰认为以上做法不妥,因为在zggz与zgda中姓名字段并不能唯一标识每条记录,照以上解法,如果有两个姓名完全相同的职工,只要其中一个职称为“二级”,则两名职工均会被啬基本工资.
以上是个人愚见。
另外
local cur_id在语法上的意思是定义一个局部内存变量cur_id
local should_add同上
should_add=.f.为赋值.f.给内存变量should_add
可能你在学校里,学习用命令,没有上过即见即所得的语言!!   

   去买一些教学光盘,,,看一下!!
黑鹰说的有道理,我佩服!

zgda的有两个字段:zg_id(职工编号),zg_gra(职工职称);
zggz中同样有两个字段:zg(职工编号,以上面相同),zg_num(职工工资)

职工编号应为唯一性,可将“temp=姓名”改为“temp=职工编号”

如果职工编号为唯一性,程序更简单:两表按“职工编号”建索引,用"update"直接更新。