在窗口的ddbl_1控件中的代码如下:
    //定义变量月工资时间
string ygz_date
//定义员工号和工种和基本工资
string emp_no,gz
int jbgz
//定义变量  加班时间和,加班类别
string jb_date,jblb
//定义变量 津贴加班时间
int jt,jb_daynumber
//定义变量 缺勤费和缺勤天数
int kq
long qq_daynumber
string qq_lb
//定义变量医疗保险费用
int ylbx,bx
//定义变量 当月应得工资
int ygz_total


//取得所要生成的工资时间
ygz_date=sle_1.text+ddlb_1.text

//定义一个光标,用于多个记录的操作,该光标中存放了员工号和员工的工种
declare emp_no_all cursor for
         select basic.emp_no,basic.emp_gz from basic;
//打开光标
open emp_no_all;
//读出光标中的数据
fetch emp_no_all into :emp_no,:gz;
//循环读取,直到最后一个记录
do while sqlca.sqlcode=0
    //从工种表格中得到当前员工所属工种的基本工资
    select gzbz.gzjbgz into :jbgz from gzbz where gzbz.gz=:gz using sqlca;
    
    
   //根据员工加班的天数和类别得到津贴
   select jt.jb_daynumber,jt.jblb into :jb_daynumber,:jblb from jt where jt.emp_no=:emp_no  using sqlca;// and jt.jb_date=:ygz_date   
   //不同的加班列表,津贴不同
   if jblb="1" then
       jt=jb_daynumber * 10
   elseif jblb="2" then
       jt=jb_daynumber * 20
   elseif jblb="3" then
       jt=jb_daynumber * 30
   else
       jt=0
   end if


   //从医疗报销和保险表中得到当前员工的报销费用和保险费
   select ylbx.ylbxfy,ylbx.bxf into  :ylbx,:bx from ylbx where ylbx.emp_no=:emp_no  using sqlca;//and ylbx.ylbx_date=ygz_date
   //根据当前员工的考勤情况,扣除缺勤费
   select kq.qq_daynumber,kq.qq_lb into :qq_daynumber,:qq_lb from kq where kq.emp_no=:emp_no  using sqlca;//  and kq.qq_date=ygz_date
   //可以设置多种缺勤类别分别处理
   if qq_lb="" then
       kq=0
   else
       kq=qq_daynumber * 100
   end if


   //得到员工当月工资的生成公式
   ygz_total=jbgz + jt + ylbx - bx - kq
   //生成员工月工资
   insert into ygz(emp_no,jbgz,jt,kq,ylbx,bx,ygz_total,ygz_date) values(:emp_no,:jbgz,:jt,:kq,:ylbx,:bx,:ygz_total,:ygz_date);
   //各个赋值变量清零
   jbgz=0
   jt=0
   jblb=""
   jb_daynumber=0
   ylbx=0
   bx=0
   qq_lb=""
   kq=0
   qq_daynumber=0
   //读取下一个员工的员工号和工种类别
   fetch emp_no_all into :emp_no,:gz;
loop

//关闭光标
close emp_no_all;
//数据窗口显示生成工资的内容
dw_1.retrieve()

   请求PB爱好者有心人帮我解决一下问题:为什么工资管理系统在输入年份和月份时,只显示一个员工的记录,而没有显示全部???