PB 游标问题

zjs8801 2012-05-13 09:17:03
读取数据,并对数据进行归一化,然后用模糊综合评判法进行计算得出总评值,代码如下:

string qz[]
string ls_cln[]
integer k,i,j,li_count,li_rowcount,lx
decimal{3} fij,fimax,fimin,uij,qzk
decimal count,count1,count2
li_rowcount=dw_2.rowcount() //获取dw_2总的行数
li_count= integer(dw_2.object.datawindow.column.count) //获取dw_2总的列数
k=1 //k为读取指标类型及指标权重的循环变量
j=3 //j为dw_1读取分值的列变量
for i=1 to li_rowcount
declare qz cursor for select qz from index order by bh using sqlca;
open qz;
fetch qz into :qz[k];
fimax=0 //给最大值赋初值为0
fimin=100 //给最小值赋初值为100(分值的输入要求输入的分数在0-100之间)
count1=0 //用于求和
do while sqlca.sqlcode=0
qzk=integer(qz[k])
fij=dec(dw_2.GetItemstring(j,"")) //取dw_2中(i,j)的值(除第1,2列)
//ls_cln[i]=dw_pjb.describe("#" + string(i) + ".Name") //曾用于取dw_2中(i,j)值的另一条语句
fimax=max(fij,fimax)
fimin=min(fij,fimin)
lx=integer(dw_1.GetItemstring(k,"类型")) //读取zb表中“类型”的值
if lx=1 then
uij=(fij/(fimax+fimin))^2
elseif lx=2 then
uij=1 - ((fij/(fimax+fimin))^2) //判断,因为“类型”字段中的值设置为只能为1或2
end if
count2=qzk*uij //qzk指标权重,uij为读取到dw_2中(i,j)的值经过归一化处理的值,二者相乘
count1=count1+count2 //求和,两式一起代表先相乘后求和
k=k+1
j=j+1
//fetch qz into qz[k]; //此语句可用时,显示“Syntax error”
loop
close qz;
count=100*count1 //count为最后的计算了每个学生全部指标的后的分值,乘上100%
dw_2.setitem(i,"总评",count) //返回值给dw_2中的“总评”
end for
commit using sqlca;



保存时显示:
Database C0038: SQLSTATE = 37000[Sybase][ODBC Driver][Adaptive Server Anywhere]Syntax error or access violation: near 'index' in qz from [index] order by bh

求高手指点!
...全文
84 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjs8801 2012-05-13
  • 打赏
  • 举报
回复
[Quote]{//fetch qz into qz[k]; //此语句可用时,显示“Syntax error”

就为

fetch qz into :qz[k];

没有这一句,会死循环
}[/Quote]
谢谢指点!
zjs8801 2012-05-13
  • 打赏
  • 举报
回复
问题已解决,删除表index,重建,设为其它表名。
WorldMobile 2012-05-13
  • 打赏
  • 举报
回复
//fetch qz into qz[k]; //此语句可用时,显示“Syntax error”

就为

fetch qz into :qz[k];

没有这一句,会死循环

752

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧