一组form窗体多用时如何缓存值互不影响,表述不清,详见内容

erdong988 2015-06-09 03:38:41
标题表述可能不太清楚,现有需求是这样,要实现单据列表查询,有俩form,一个是显示数据的,一个显示查询条件的
现有单据类型三个,对应有三个列表查询功能节点,窗体就是那俩,现功能已实现,
但每次打开查询条件都要重新指定过滤条件值,
我把 查询条件 form.hide(再次查询时 之前的条件值都有保留),但这时 三个单据类型之间就会错乱……
尝试定义为不同窗体对象,hide之后,再次查询,条件值都没了……
目前单据类型是三个,以后可能增加,所以想找个好办法……
特来求助~
...全文
150 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2015-06-10
  • 打赏
  • 举报
回复
多实例就不需要啊。
erdong988 2015-06-10
  • 打赏
  • 举报
回复
把过滤值回传显示form保存,重新查询时,再把过滤值传给frmFilter,这样可以实现我知道 我本来就是想把这步骤省略掉,减少工作量,以后增加单据类型 改动量也小,希望能像 一个单据类型那样,直接hide以后,重新查询时自动带出以前的过滤值…… 看来 这步是省略不掉了……
Tiger_Zhao 2015-06-10
  • 打赏
  • 举报
回复
FrmFilter 用多个实例就行了。
'FrmFilter
Option Explicit

Public BillType As String

'FrmList
Option Explicit

Private Sub ShowFilter(ByVal BillType As String)
Dim frm As Form
Dim formFilter As FrmFilter

For Each frm In Forms
If TypeOf frm Is FrmFilter Then
Set formFilter = frm
If formFilter.BillType = BillType Then
Exit For
End If
Set formFilter = Nothing
End If
Next

If formFilter Is Nothing Then
Set formFilter = New FrmFilter
formFilter.BillType = BillType
End If

formFilter.Show
End Sub

Private Sub Command1_Click()
ShowFilter "A"
End Sub

Private Sub Command2_Click()
ShowFilter "B"
End Sub

Private Sub Command3_Click()
ShowFilter "C"
End Sub

Private Sub Form_Unload(Cancel As Integer)
Dim frm As Form

For Each frm In Forms
If Not frm Is Me Then
Unload frm
End If
Next
End Sub
舉杯邀明月 2015-06-10
  • 打赏
  • 举报
回复
你可以在 FrmFilter.Show 之前,把它应该显示些什么内容传给它啊。 你应该用一组变量标识(记录)frmList 的单据类型、查询条件, 在FrmFilter显示之前,如果frmList的类型跟标识的类型不一样,则让FrmFilter按类型显示初始内容(空白,或者相应的默认值); 如果frmList的类型跟之前记录的一致,则让FrmFilter按先记录下来的查询条件,显示相应的内容。 这个应该很好处理的事情,怎么可能会“造成混乱”。
erdong988 2015-06-10
  • 打赏
  • 举报
回复
引用 6 楼 Tiger_Zhao 的回复:
多实例就不需要啊。
是的,我后来拿代码调试通了,我想要的就是这样的,结贴! 谢谢您!~
erdong988 2015-06-09
  • 打赏
  • 举报
回复
1楼说的我没看懂……实际上我说的 “查询条件”和“过滤条件”是一个意思…… 详细说明,显示列表数据的窗体是 FrmList 显示过滤条件的窗体是 FrmFilter FrmList 界面,点击查询功能按钮,打开 FrmFilter 同时传递 单据类型参数过来,FrmFilter 依据单据类型 显示对应过滤条件项。 FrmFilter 界面 指定过滤值以后,“确定”返回,传递拼接的sql where语句返回 frmList。frmList 查询数据库 显示。 现在我希望 再次点击 FrmList 界面的 查询功能按钮时,打开 FrmFilter之中 显示刚才录入的过滤值。 如果 FrmFilter “确定”返回时,我不是 unload 而是 hide,再次打开 FrmFilter 时,就有值,但不同单据类型间会乱,单据类型A的过滤值,会显示在单据类型B的过滤界面中。因为我是直接 FrmFilter.show 的。
三楼の郎 2015-06-09
  • 打赏
  • 举报
回复
form提交时需要把所有的查询条件和过滤条件一起提交,很显然,从你“但每次打开查询条件都要重新指定过滤条件值”这句来看你在查询时只提交了查询条件而没有把过滤条件一块带上。

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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