查询遇到临时表不能删除问题,请指教

jyjcyl 2011-03-28 11:03:38
十天前在论坛请教老师实现了工资查询的功能。代码如下:
if empty(cText)
select rygz
select * from rygz where 工资 between trans(val(thisform.text1.value)-100) and ;
trans(val(thisform.text1.value)+100) into curs dd
Thisform.Grid1.RecordSource=""
Thisform.Grid1.RecordSource=""
thisform.grid1.RecordSourceType= 1
Thisform.Grid1.RecordSource="dd"
else
select rygz
select * from rygz where 工资 between trans(val(thisform.text1.value)-100) and ;
trans(val(thisform.text1.value)+100) into curs dd
select dd
set filter to 部门=cText
go top
thisform.grid1.RecordSourceType= 1
Thisform.Grid1.RecordSource="dd"
thisform.grid1.refresh()
thisform.text1.Value=" "
thisform.combo1.value=" "

GO top
count to gg
thisform.label1.caption="共找到【 "+allt(str(gg))+" 】条记录!"

endif



现在遇到的问题是运行表单进行查询,得到正确的查询结果。关闭表单后,再次运行表单,
输入与第一次查询同样的数据,进行查询,结果与第一次查询就不一样了。退出VFP后,再
次运行表单,查询结果正确。我分析原因是第一次查询产生的sql临时表没有被释放掉,请
问怎样才能在不退出VFP的情况下,在关闭查询表单时把第一次查询产生sql临时表没有被释
放掉?
...全文
183 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
awie_peng 2011-03-28
  • 打赏
  • 举报
回复
有什么不一样?
jyjcyl 2011-03-28
  • 打赏
  • 举报
回复
if empty(cText)
select rygz
select * from rygz where 工资 between trans(val(thisform.text1.value)-100) and ;
trans(val(thisform.text1.value)+100) into curs dd
Thisform.Grid1.RecordSource=""
Thisform.Grid1.RecordSource=""
thisform.grid1.RecordSourceType= 1
Thisform.Grid1.RecordSource="dd"
else
select rygz
select * from rygz where 工资 between trans(val(thisform.text1.value)-100) and ;
trans(val(thisform.text1.value)+100) into curs dd
select dd
set filter to 部门=cText
go top
thisform.grid1.RecordSourceType= 1
Thisform.Grid1.RecordSource="dd"
thisform.grid1.refresh()
thisform.text1.Value=" "
thisform.combo1.value=" "

GO top
count to gg
thisform.label1.caption="共找到【 "+allt(str(gg))+" 】条记录!"
endif
set filter to
我加上了,运行后,还是没有解决。请老师再给看看。
wwwwb 2011-03-28
  • 打赏
  • 举报
回复
在查询结束后加上
set filter to
取消过滤
taohua300 2011-03-28
  • 打赏
  • 举报
回复
地址多少 ?
jyjcyl 2011-03-28
  • 打赏
  • 举报
回复
老师你好,我把我的表单传上去了,请你给看一下。名称为人员工资查询。
jyjcyl 2011-03-28
  • 打赏
  • 举报
回复
老师我把表单传上去,你给我看一下吧。
taohua300 2011-03-28
  • 打赏
  • 举报
回复
关闭临时表
if used("临时表“)
select 临时表
use
endif


应该不是临时表的原因,使用相同的临时表的时候,如果同名的临时表存在,则覆盖原来的临时表,所以不用关闭也没有问题
jyjcyl 2011-03-28
  • 打赏
  • 举报
回复
谢谢老师,但我用你说的办法试过了,去不掉。
wwwwb 2011-03-28
  • 打赏
  • 举报
回复
select 临时表
use
jyjcyl 2011-03-28
  • 打赏
  • 举报
回复
结完了。万分感谢各位老师!!!
WWWWA 2011-03-28
  • 打赏
  • 举报
回复
如问题已经解决,请点管理结贴吧
jyjcyl 2011-03-28
  • 打赏
  • 举报
回复
多谢WWWWA老师。成功了。非常非常感谢 !!!!!!
WWWWA 2011-03-28
  • 打赏
  • 举报
回复
set filter to

if empty(cText)
select rygz
select * from rygz where 工资 between trans(val(thisform.text1.value)-100) and ;
trans(val(thisform.text1.value)+100) into curs dd1
Thisform.Grid1.RecordSource=""
Thisform.Grid1.RecordSource=""
thisform.grid1.RecordSourceType= 1
Thisform.Grid1.RecordSource="dd1"
else
select rygz
select * from rygz where 工资 between trans(val(thisform.text1.value)-100) and ;
trans(val(thisform.text1.value)+100) into curs dd
select dd
set filter to 部门=cText
go top
thisform.grid1.RecordSourceType= 1
Thisform.Grid1.RecordSource="dd"
thisform.grid1.refresh()
thisform.text1.Value=" "
thisform.combo1.value=" "
cText=""
GO top
count to gg
thisform.label1.caption="共找到【 "+allt(str(gg))+" 】条记录!"

endif
WWWWA 2011-03-28
  • 打赏
  • 举报
回复
就是重新给cText赋值的问题
WWWWA 2011-03-28
  • 打赏
  • 举报
回复
thisform.combo1.value=" "
cText=""
jyjcyl 2011-03-28
  • 打赏
  • 举报
回复
非常感谢WWWWA和十三豆老师。我按照两们老师指教的,重新把代码写入表单,
仍然出现了我说的那个问题。运行表单在文本框中输入3023,组合框为空,查
询出四个人的信息,然后在文本框中输入3023,同时组合框中输入“二车间”
查询到两个人的信息。退出表单,再运行表单,在文本框中输入3023,只查到
了两个人的信息。也就是说两次运行表单都是在文本框中输入3023,组合框为空,
第一次和第二次查询的结果不一样。麻烦老师再给看一下。这个问题困扰了我十
几天了。麻烦老师再给看一下。成分感谢!!
十豆三 2011-03-28
  • 打赏
  • 举报
回复
Thisform.Grid1.RecordSource=""
If Empty(cText)
Select * From rygz Where 工资 Between Trans(Val(Thisform.text1.Value)-100) And Transform(Val(Thisform.text1.Value)+100) Into Cursor dd
Else
Select * From rygz Where 工资 Between Trans(Val(Thisform.text1.Value)-100) And Transform(Val(Thisform.text1.Value)+100) And 部门=cText Into Cursor dd
Thisform.text1.Value=""
Thisform.combo1.Value=""

Endif
Thisform.label1.Caption="共找到【 "+Transform(_Tally)+" 】条记录!"
Thisform.grid1.RecordSourceType= 1
Thisform.Grid1.RecordSource="dd"
Thisform.grid1.Refresh()
wwwwb 2011-03-28
  • 打赏
  • 举报
回复
去掉FORM的INIT中的:
this.grid1.RecordSourceType= 1
this.grid1.RecordSource ="dd"

测试 没有出现此问题
jyjcyl 2011-03-28
  • 打赏
  • 举报
回复
就是把set filter to 加到代码最后,关闭表单再运行表单后,
查询的结果与第一次不一样。麻烦版主老师看一下。谢谢!!!

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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