主题:小弟遇到困难了,各位好心人帮助啊
请教诸位大虾啊;有2个问题出现:
1 关于模糊查询:我想在datawindow控件的查询数据过滤操作时用模糊sql语句:where xxx like “%xx%”
程序如下:
if ddnum = "所属类别" then
dnum = "chu_sort"
aa = dnum + "like '%" + znum1 + "%'"
elseif ddnum = "材料名称" then
dnum = "stock_name"
aa = dnum + "like '%" + znum1 + "%'"
elseif ddnum = "审批人" then
dnum = "chu_exam"
aa = dnum + "LIKE '%" + znum1 + "%'"
elseif ddnum = "供应商" then
dnum = "chu_supply"
aa = dnum + "like '%" + znum1 + "%'"
end if
dw_1.SetTransObject(SQLCA)
dw_1.setfilter(aa)
dw_1.filter()
dw_1.Retrieve();
可是每次提交执行,系统就提示:expression is not valid(不合法),难道like 关键字不能使吗???请问哪位有好方法实现这个简单模糊查询,让数据窗口对象能过虑出所需数据
Q2-- 一个自己写的傻大胆的程序,目的想用语句填写出数据库中的两列记录值:1)通过入库单,出库单记录的货品数目实现统计出产品表中每一种产品的现有库存 2)在通过对库存上下限的对比,得到是否超限的警告。。。这可难坏我了,这个程序就是执行不了,我不知是不是一个数据窗口空件只能使用一个事务对象啊??请各位大哥大姐一定不吝赐教啊。。。急
transaction dbtrans
dbtrans = create transaction
dw_1.SetTransObject(SQLCA)
//dw_1.SetTransObject(dbtrans)
integer runum,chu_num,cx_sum,downtop,overtop,cx
cx_sum = 0
string cai_namett
declare cai_name_cur cursor for
select cai_name
from cailiao ;
OPEN cai_name_cur;
FETCH cai_name_cur INTO :cai_namett;
Do While dbtrans.SQLCode <> 100
//取道同样材料名的入库记录中数量的和
declare rnum_cur cursor for
select ruku_num
from ruku
where stock_name = :cai_namett;
OPEN rnum_cur;
FETCH rnum_cur INTO :runum;
Do While SQLCA.SQLCode <> 100
cx_sum=cx_sum + runum
FETCH rnum_cur INTO :runum;
loop
close rnum_cur;
//出库同样材料名的记录,并做差
declare cnum_cur cursor for
select chu_num
from chuku
where stock_name = :cai_namett;
open cnum_cur;
FETCH cnum_cur INTO :chu_num;
Do While SQLCA.SQLCode <> 100
cx_sum=cx_sum - chu_num
FETCH cnum_cur INTO :chu_num;
loop
close cnum_cur;
//更新填入当前库存
update cailiao
set cai_num = :cx_sum
where cailiao.cai_name = :cai_namett
using sqlca;
//更新填入超限
select cai_downtop,cai_overtop
into :downtop , :overtop
from cailiao
where cailiao.cai_name = :cai_namett;//取出限值
if cx_sum >= overtop then//判断超限情况
cx = cx_sum - overtop
update cailiao
set cai_chaoxian = :cx
where cailiao.cai_name = :cai_namett
using dbtrans;//???设置字体颜色啊
elseif cx_sum <= downtop then
cx = cx_sum - downtop
update cailiao
set cai_chaoxian = :cx
where cailiao.cai_name = :cai_namett
using dbtrans;
else
cx = 0 //cx_sum - downtop
update cailiao
set cai_chaoxian = :cx
where cailiao.cai_name = :cai_namett
using dbtrans;
end if
FETCH cai_name_cur INTO :cai_namett;
Loop
Close cai_name_cur;
dw_1.Retrieve();
这个程序里面应该不会有语法错误的