“ customer: 代理商表
id int //代理商编号
name varchar(100) //代理商名称
area_id varchar(10) //所在区域编号
if_oem int
production产品表:
id int //产品编号
name varchar(20) //名称
price float //标准价格
sale_his销售登记表:
sale_time date //销售时间
customer_id int //代理商编号
production_id int //产品编号
s_price float //销售价格
remarks varchar(100) //备注
界面要求:w_query,销售记录查询,查询条件为:销售时间段,代理商,产品
要求点击查询结果的某个列名即按照该列排序。
”界面有三个输入框:销售时间段,代理商名称(单行编辑框),产品名称(单行编辑框),如何实现按着三个条件模糊查询?我
代理商查询:
ls_c_filter = "customer.name ='" +sle_dls.text +" ' "//代理商名称
//ls_c_filter = string (li_c_filter)
dw_query.setfilter (ls_c_filter)
dw_query.filter()
产品查询:
ls_p_filter = "customer.name ='" + sle_cp.text +" ' "//产品名称
//ls_c_filter = string (li_c_filter)
dw_query.setfilter (ls_p_filter)
dw_query.filter()
查询结果按钮:
ll_row = 1
for li_n = 1 to dw_query.rowcount()
ld_xssj = dw_query.getitemdate(ll_row, 'sale_time')
li_dls = dw_query.getitemnumber(ll_row, 'customer_id')
li_cp = dw_query.getitemnumber(ll_row,'production_id')
lf_price = dw_query.getitemdecimal(ll_row,'s_price')
ls_remarks = dw_query.getitemstring(ll_row, 'remarks')
dw_query.settransobject(sqlca)
ld_rq1 = datetime(date(left(dp_1.text,10)),time(right(dp_1.text,8)))//开始时间
ld_rq2 = datetime(date(left(dp_2.text,10)),time(right(dp_2.text,8)))//结束时间
dw_query.retrieve(ld_rq1,ld_rq2)
commit;
if sqlca.sqlcode <> 0 then
ls_errtext = sqlca.sqlerrtext
rollback;
messagebox("提示!","保存失败!原因:"+ls_errtext)
return
end if
ll_row = ll_row + 1
next;
这样写代码有何不妥,没有错误,但运行不出结果,请各位大侠指点,在线等待,谢谢各位!
------解决方案--------------------
检查一下你的datawindow里的column specification里的列名,你的filter的名字应该有问题,应该跟datawindow的列名一致,例如:
- C/C++ code
//代理商查询: ls_c_filter = "customer_name ='" +sle_dls.text +" ' "//代理商名称 //ls_c_filter = string (li_c_filter) dw_query.setfilter (ls_c_filter) dw_query.filter() //产品查询: ls_p_filter = "production_name ='" + sle_cp.text +" ' "//产品名称 //ls_c_filter = string (li_c_filter) dw_query.setfilter (ls_p_filter) dw_query.filter()
------解决方案--------------------
setfilter写在retrieve后面,模糊查询用like函数,
你没有sql语句就不要用sqlcode判断,更新的话用update,=1为成功
另三个条件是三个都要输还是任选
三个都要的话用retrieve就行了,数据多的话setfilter效率太低了
任选的话用动态sql,
getsqlselect,setsqlselect查一下这两个函数的帮助
------解决方案--------------------
排序的话用
dw_name.setsort(列名 a/d)
dw_name.sort()
------解决方案--------------------
setfilter(string)
里面只能是string
li_p_filter="production_id ='"+ this.text+ "'"