怎样实现VFP的下个表单里的查询打印等功能
已经做了一些工作,只是中间过渡表的使用不大会,思路,先借助于总数据表bdxx,按照check有选择地组合查询,这期间需要一个过渡表,存入并过渡显示,思路想的挺好,只是实现...
已经做了一些工作,只是中间过渡表的使用不大会,思路,先借助于总数据表bdxx,按照check有选择地组合查询,这期间需要一个过渡表,存入并过渡显示,思路想的挺好,只是实现不大容易,感觉。
use bdxx
if thisform.check0.value=1
a=thisform.combo1.value
*select 变电站,电压等级,时间,设备类型,缺陷,类别;from bdxx where 变电站=a
thisform.grid1.recordsourcetype=0
thisform.grid1.recordsource="tim.dbf"
endif
if thisform.check1.value=1
b=thisform.combo2.value
*select 变电站,电压等级,时间,设备类型,缺陷,类别;from bdxx where 设备类型=b
thisform.grid1.recordsourcetype=0
thisform.grid1.recordsource="tim.dbf"
endif
if thisform.check2.value=1
c=thisform.combo3.value
*select 变电站,电压等级,时间,设备类型,缺陷,类别;from bdxx where 电压等级=c
thisform.grid1.recordsourcetype=0
thisform.grid1.recordsource="tim.dbf"
endif
if thisform.check3.value=1
s=thisform.text1.value
e=thisform.text2.value
*select * from a where 时间 between s and e into tim.dbf
thisform.grid1.recordsourcetype=0
thisform.grid1.recordsource="tim.dbf"
endif
查询功能我修改了下:
1.use bdxx
copy structure to tim.dbf
use tim
2.类似的:select "变电站,电压等级,时间,设备类型,缺陷,类别" from bdxx where 变电站=a into dbf tim
select "变电站,电压等级,时间,设备类型,缺陷,类别" from bdxx where 设备类型=b into dbf tim
select "变电站,电压等级,时间,设备类型,缺陷,类别" from bdxx where 电压等级=c into dbf tim
select * from a where 时间 between s and e into dbf tim
这次能运行了,但是还是有问题,查不出结果,且显示:操作符/操作类型不匹配 展开
use bdxx
if thisform.check0.value=1
a=thisform.combo1.value
*select 变电站,电压等级,时间,设备类型,缺陷,类别;from bdxx where 变电站=a
thisform.grid1.recordsourcetype=0
thisform.grid1.recordsource="tim.dbf"
endif
if thisform.check1.value=1
b=thisform.combo2.value
*select 变电站,电压等级,时间,设备类型,缺陷,类别;from bdxx where 设备类型=b
thisform.grid1.recordsourcetype=0
thisform.grid1.recordsource="tim.dbf"
endif
if thisform.check2.value=1
c=thisform.combo3.value
*select 变电站,电压等级,时间,设备类型,缺陷,类别;from bdxx where 电压等级=c
thisform.grid1.recordsourcetype=0
thisform.grid1.recordsource="tim.dbf"
endif
if thisform.check3.value=1
s=thisform.text1.value
e=thisform.text2.value
*select * from a where 时间 between s and e into tim.dbf
thisform.grid1.recordsourcetype=0
thisform.grid1.recordsource="tim.dbf"
endif
查询功能我修改了下:
1.use bdxx
copy structure to tim.dbf
use tim
2.类似的:select "变电站,电压等级,时间,设备类型,缺陷,类别" from bdxx where 变电站=a into dbf tim
select "变电站,电压等级,时间,设备类型,缺陷,类别" from bdxx where 设备类型=b into dbf tim
select "变电站,电压等级,时间,设备类型,缺陷,类别" from bdxx where 电压等级=c into dbf tim
select * from a where 时间 between s and e into dbf tim
这次能运行了,但是还是有问题,查不出结果,且显示:操作符/操作类型不匹配 展开
1个回答
展开全部
看了半天知道你程序有问题,先说说吧
1.TIM.DBF表在变电站选项为1时是否存在啊,从你这个程序上看是不存在的,除非在别处打开了,如果不存在,下面的GRID.RECORDSOURCE一行一定出错,如果存在,那也没有新内容显示,所以你的程序在查询时就不会有你想要的结果.
2.多项选择都打勾,从程序上一定是显示最后一个项目的结果,所以前面的勾没用处.
应该如何改
将多个CHECK改成OPTIONGROUP控件,进行单项选择,只放一个COMBO1控件,在查询CLICK里的代码如下
thisform.grid1.recordsource=""
use bdxx
DO CASE
CASE THISFORM.OPTIONGROUP1.VALUE=1
select 变电站,电压等级,时间,设备类型,缺陷,类别 from bdxx INTO CURSOR TIM where 变电站=THISFORM.COMBO1.VALUE
CASE THISFORM.OPTIONGROUP1.VALUE=2
select 变电站,电压等级,时间,设备类型,缺陷,类别 from bdxx INTO CURSOR TIM where 设备类型=THISFORM.COMBO1.VALUE
CASE THISFORM.OPTIONGROUP1.VALUE=3
select 变电站,电压等级,时间,设备类型,缺陷,类别 from bdxx INTO CURSOR TIM where 电压等级=THISFORM.COMBO1.VALUE
OTHER
ENDCASE
thisform.grid1.recordsource="tim.dbf"
THISFORM.GRID1.REFRESH
过程是这样的,先把GRID1的绑定表解除下来,不然GRID1控件将变成白框,不能用了.
打开总表,再看用户选了哪个项目作为查询条件,再按不同的选项进行不同命令的查询,在查询时输出给TIM临时表,最后将表与GRID1绑定.
这里要注意,如果不同选择中的值不同时,可以将OPTIONGROUP1的CLICK下加代码:
THISFORM.COMBO1.CLEAR
DO CASE
CASE THISFORM.OPTIONGROUP1.VALUE=1
THISFORM.COMBO1.ADDITEM("变电站1")
THISFORM.COMBO1.ADDITEM("变电站2")
THISFORM.COMBO1.ADDITEM("变电站3")
....
CASE THISFORM.OPTIONGROUP1.VALUE=2
THISFORM.COMBO1.ADDITEM("设备1")
THISFORM.COMBO1.ADDITEM("设备2")
THISFORM.COMBO1.ADDITEM("设备3")
CASE THISFORM.OPTIONGROUP1.VALUE=3
THISFORM.COMBO1.ADDITEM("电压1")
THISFORM.COMBO1.ADDITEM("电压2")
THISFORM.COMBO1.ADDITEM("电压3")
OTHER
ENDCASE
这样COMBO1的值就成了变化的了,值的内容你自己填写吧,我这里只给你举例了.
打印时可以用报表设计器进行设计,不难的,只在与TIM绑定就行了.
1.TIM.DBF表在变电站选项为1时是否存在啊,从你这个程序上看是不存在的,除非在别处打开了,如果不存在,下面的GRID.RECORDSOURCE一行一定出错,如果存在,那也没有新内容显示,所以你的程序在查询时就不会有你想要的结果.
2.多项选择都打勾,从程序上一定是显示最后一个项目的结果,所以前面的勾没用处.
应该如何改
将多个CHECK改成OPTIONGROUP控件,进行单项选择,只放一个COMBO1控件,在查询CLICK里的代码如下
thisform.grid1.recordsource=""
use bdxx
DO CASE
CASE THISFORM.OPTIONGROUP1.VALUE=1
select 变电站,电压等级,时间,设备类型,缺陷,类别 from bdxx INTO CURSOR TIM where 变电站=THISFORM.COMBO1.VALUE
CASE THISFORM.OPTIONGROUP1.VALUE=2
select 变电站,电压等级,时间,设备类型,缺陷,类别 from bdxx INTO CURSOR TIM where 设备类型=THISFORM.COMBO1.VALUE
CASE THISFORM.OPTIONGROUP1.VALUE=3
select 变电站,电压等级,时间,设备类型,缺陷,类别 from bdxx INTO CURSOR TIM where 电压等级=THISFORM.COMBO1.VALUE
OTHER
ENDCASE
thisform.grid1.recordsource="tim.dbf"
THISFORM.GRID1.REFRESH
过程是这样的,先把GRID1的绑定表解除下来,不然GRID1控件将变成白框,不能用了.
打开总表,再看用户选了哪个项目作为查询条件,再按不同的选项进行不同命令的查询,在查询时输出给TIM临时表,最后将表与GRID1绑定.
这里要注意,如果不同选择中的值不同时,可以将OPTIONGROUP1的CLICK下加代码:
THISFORM.COMBO1.CLEAR
DO CASE
CASE THISFORM.OPTIONGROUP1.VALUE=1
THISFORM.COMBO1.ADDITEM("变电站1")
THISFORM.COMBO1.ADDITEM("变电站2")
THISFORM.COMBO1.ADDITEM("变电站3")
....
CASE THISFORM.OPTIONGROUP1.VALUE=2
THISFORM.COMBO1.ADDITEM("设备1")
THISFORM.COMBO1.ADDITEM("设备2")
THISFORM.COMBO1.ADDITEM("设备3")
CASE THISFORM.OPTIONGROUP1.VALUE=3
THISFORM.COMBO1.ADDITEM("电压1")
THISFORM.COMBO1.ADDITEM("电压2")
THISFORM.COMBO1.ADDITEM("电压3")
OTHER
ENDCASE
这样COMBO1的值就成了变化的了,值的内容你自己填写吧,我这里只给你举例了.
打印时可以用报表设计器进行设计,不难的,只在与TIM绑定就行了.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |