使用combo组合框进行第二次筛选时出错,怎么解决?

时间:2022-03-22 09:04:14
各位老师:我在做表单时,表单上有各条记录的字段TXT内容,另外还有一个GRID,在一个表单里放了几个combo组合框,分别用来筛选不同的条件,在valid属性设语句分别为
set filter to 设备类型=thisform.combo1.value
set filter to 设备厂家=thisform.combo2.value
运行时,第一次能执行筛选,点grid后,再去选combo筛选,就会出现:“thisform只能在方法程序中使用”,程序终止。
请问如何解决?对grid和combo应该怎样设置?
最好能给出代码,谢谢!!

9 个解决方案

#1


本帖最后由 dkfdtf 于 2012-08-31 16:30:30 编辑
试试:

cf = '设备类型 = ' + thisform.combo1.value
set filter to &cf

另一个过滤条件类似

#2


对,用变量或自定义属性代替,如果提示变量找不到,就用全局变量。

#3


谢谢二老师!!!

#4


但是,对表单上的Grid中记录点击后,如何刷新表单上各字段值,与Grid所选 的内容相同呢?
在哪个属性中设置呀?

#5


*--- 这个地方只有用全局变量
PUBLIC A1,A2
A1=thisform.combo1.value
A2=thisform.combo2.value
set filter to 设备类型=A1
set filter to 设备厂家=A2
*--- 或者用SQL-SELECT语句
SELECT 设备类型 FROM TABA WHERE 设备类型=thisform.combo1.value INTO CURSOR COMBO_1
THISFORM.GRID1.RECORDSOURCE="COMBO_1"
THISFORM.GRID1.SETFOCUS
THISFORM.GRID1.REFRESH
*--- 上述代码放在什么地方合适,自定。
*--- 另外的组合框设置同上


#6


引用 4 楼  的回复:
但是,对表单上的Grid中记录点击后,如何刷新表单上各字段值,与Grid所选 的内容相同呢?
在哪个属性中设置呀?

实际上没有必要如此
表单上增加两个组合框控件
COMBO1:用于保存表中字段
COMBO2:用于保存各字段中的值
操作要领:假如在COMBO1选择了[设备类型],在COBMO2中相应显示[设备类型]中的值,然后从COMBO2选择内容,刷新表格,这时在表格中就看到了你在COMBO2中选择的内容。

#7


我有表单还兼有上条、下条、增加、修改、删除、打印的功能按钮。grid是用来快速定位记录的,几个combo是用来分类查询的,而且还有单个记录的图片控件,图片放在另外目录,图片名与记录系列号相同。得到记录号并同时显示图片的。代码如下:
IF BOF()
  GO 1
  a=TRIM(系列号)
  b=".jpg"
  c=TRIM(a+b)
  tmp1=trim(c) 
   if file(tmp1)
     thisform.Image1.Picture=tmp1
   else
     thisform.Image1.Picture="无照片.jpg"
   endif
  thisform.refresh
ELSE
问题是:在用了combo筛选后,图片不能显示,而且在点了Grid后,也不能显示。只有用按钮组的skip功能后,才能显示。也就是说,筛选和用grid的点击后,不能显示图片。

#8


查询和录入最好不要放在一个界面,这里面牵涉到工作区转换的问题,比较复杂。如果不想用工作区转换,只有用SET FILTER TO ......设置。自己想想吧

#9


谢谢你

#1


本帖最后由 dkfdtf 于 2012-08-31 16:30:30 编辑
试试:

cf = '设备类型 = ' + thisform.combo1.value
set filter to &cf

另一个过滤条件类似

#2


对,用变量或自定义属性代替,如果提示变量找不到,就用全局变量。

#3


谢谢二老师!!!

#4


但是,对表单上的Grid中记录点击后,如何刷新表单上各字段值,与Grid所选 的内容相同呢?
在哪个属性中设置呀?

#5


*--- 这个地方只有用全局变量
PUBLIC A1,A2
A1=thisform.combo1.value
A2=thisform.combo2.value
set filter to 设备类型=A1
set filter to 设备厂家=A2
*--- 或者用SQL-SELECT语句
SELECT 设备类型 FROM TABA WHERE 设备类型=thisform.combo1.value INTO CURSOR COMBO_1
THISFORM.GRID1.RECORDSOURCE="COMBO_1"
THISFORM.GRID1.SETFOCUS
THISFORM.GRID1.REFRESH
*--- 上述代码放在什么地方合适,自定。
*--- 另外的组合框设置同上


#6


引用 4 楼  的回复:
但是,对表单上的Grid中记录点击后,如何刷新表单上各字段值,与Grid所选 的内容相同呢?
在哪个属性中设置呀?

实际上没有必要如此
表单上增加两个组合框控件
COMBO1:用于保存表中字段
COMBO2:用于保存各字段中的值
操作要领:假如在COMBO1选择了[设备类型],在COBMO2中相应显示[设备类型]中的值,然后从COMBO2选择内容,刷新表格,这时在表格中就看到了你在COMBO2中选择的内容。

#7


我有表单还兼有上条、下条、增加、修改、删除、打印的功能按钮。grid是用来快速定位记录的,几个combo是用来分类查询的,而且还有单个记录的图片控件,图片放在另外目录,图片名与记录系列号相同。得到记录号并同时显示图片的。代码如下:
IF BOF()
  GO 1
  a=TRIM(系列号)
  b=".jpg"
  c=TRIM(a+b)
  tmp1=trim(c) 
   if file(tmp1)
     thisform.Image1.Picture=tmp1
   else
     thisform.Image1.Picture="无照片.jpg"
   endif
  thisform.refresh
ELSE
问题是:在用了combo筛选后,图片不能显示,而且在点了Grid后,也不能显示。只有用按钮组的skip功能后,才能显示。也就是说,筛选和用grid的点击后,不能显示图片。

#8


查询和录入最好不要放在一个界面,这里面牵涉到工作区转换的问题,比较复杂。如果不想用工作区转换,只有用SET FILTER TO ......设置。自己想想吧

#9


谢谢你