主题:一个数据源,多个GRID控件,如何为GRID各自设置筛选条件
Propla
[专家分:40] 发布于 2009-11-17 21:03:00
大家好,
在下碰到一个问题,想请大家帮帮忙:
一个表单,一个数据源,三个GRID控件.如何为三个GRID各自设置筛选条件,或者是使三个GRID显示想要的数据
多谢您的关注
回复列表 (共3个回复)
沙发
cbl518 [专家分:57140] 发布于 2009-11-17 22:17:00
数据源 .RecordSourceType 属性=4
.RecordSource="sql查询语句"
板凳
zxl931 [专家分:3420] 发布于 2009-11-19 00:10:00
是否可以通过设置数据工作期来实现,我没有测试,楼主试试!
****************************************
Visual FoxPro 9.0
如何使用数据工作期
请参阅
为确保共享环境中的每个用户都具有安全、正确的环境副本,并确保表单的多个实例能独立操作,Visual FoxPro 提供了数据工作期。
数据工作期是当前动态工作环境的描述。可以将数据工作期看成是一个运行在一台机器上打开的 Visual FoxPro 工作期内的小型数据环境。每个数据工作期包括:
表单数据环境中项目的复制。
表现打开表的临时表(Cursors)、及其索引和关系。
当考虑从分开的工作站上同时打开多用户应用程序中的同一表单会发生什么时,更容易理解数据工作期的概念。在这种情况下,每个工作站运行单独的 Visual FoxPro 工作期,并因此拥有自己的工作娶设置:表现打开基表、索引和关系的临时表。有关同时访问数据的更多信息,请参见 使用多表单实例更新数据 和 锁定数据。
然而,如果在同一台机器上、相同的 Visual FoxPro 工作期中打开单个项目中同一表单的多个实例,这些表单共享默认(Default)数据工作期,表现一个单个的动态工作环境。在同一 Visual FoxPro 工作期中打开的每个表单实例使用同样的工作区设置,并且一个表单实例中移动工作区记录指针的动作会自动影响同一表单的其他实例。
使用私有数据工作期
如果要更多控制表单的多个实例,可以执行私有(Private)数据工作期。当表单使用私有数据工作期时,Visual FoxPro 为应用程序创建的每个表单(Form)、表单集(FormSet)或工具栏(Toolbar)的实例创建一个新数据工作期。每个私有数据工作期包括:
表单数据环境中每个表、索引和关系的单独复制。
不限数量的工作区。
独立于表单每个基表每个复制的记录指针。
可用的数据工作期数量只受可用的系统内存和磁盘空间的限制。
通过设置表单的 DataSession 属性来实现私有数据工作期。DataSession 属性有两个设置:
1 – 默认数据工作期(Default data session)(默认设置)。
2 – 私有数据工作期(Private data session)。
默认情况下,表单的 DataSession 属性被设置为 1。
要启用私有数据工作期
在 表单设计器 中,设置表单的 DataSession 属性为 2 – 私有数据工作期(Private data session)。
-或者-
在代码中,设置 DataSession 属性 为 2。
例如,输入:
复制代码
frmFormName.DataSession = 2
注意:
只能在设计时设置 DataSession 属性。运行时 DataSession 属性只读。
当表单使用私有数据工作期时,在单台机器单个 Visual FoxPro 工作期中打开的每个表单实例使用自己的数据环境。使用私有数据工作期类似于在分开的工作站上同时运行同一个表单。
识别数据工作期
每个私有数据工作期是分开识别的。可以在 数据工作期(Data Session)窗口 中查看每个数据工作期的内容。也可以通过 Load 事件代码中的命令改变数据工作期的描述。
要查看每个数据工作期的识别号
使用运行时刻 DataSessionID 属性。
下列示例显示叫 frmMyForm 表单的 DataSessionID 属性:
复制代码
DO FORM frmMyForm
? frmMyForm.DataSessionID
如果使用 NAME 子句激活表单,可以使用该表单名访问 DataSessionID 属性,如下列代码:
复制代码
DO FORM MyForm NAME one
? one.DataSessionID
DataSessionID 属性只是设计来识别特定的数据工作期。避免改变表单实例的 DataSessionID,因为改变 DataSessionID 时,数据绑定控件会丢失其数据源。
覆盖自动私有数据工作期的指派
当表单使用私有数据工作期时,在一个表单中对数据所作的更改不会自动地体现到同一表单的其他实例中。如果想要表单的所有实例都访问同样的数据并且立即反映公共数据的变化,可以覆盖自动数据工作期的指派。
要覆盖自动数据工作期的指派
设置 SET DATASESSION 命令为 1 或无值。
例如,下列代码允许命令窗口和“项目管理器”控制默认数据工作期:
复制代码
SET DATASESSION TO 1
-或者-
复制代码
SET DATASESSION TO
请参阅
其他资源
定制数据工作期环境
控制数据访问
共享访问的程序设计
发送有关本主题的建议给微软。© Microsoft 公司版权所有。
本主题中文翻译:曾广岷 E-MAIL: TLDS_ZGM@SOHU.COM
3 楼
Propla [专家分:40] 发布于 2009-12-01 23:17:00
多谢1楼和2楼的提议.仍然对1楼的SQL语句不知如何使用,对2楼的数据工作期没有进行调试.
我是使用了以下办法解决的:
分别在表单的INIT事件和TIMER事件输命令如下:
sele * from tablename into cursor abc
thisform.grid1.recordsource='abc'
with thisform.grid1
.column1.controlsource='abc.field1'
.column1.text1.controlsource='abc.field1'
.
.
.
endwith
sele * from tablename into cursor bcd
thisform.grid2.recordsource='bcd'
...
对两位的帮忙,再次表示感谢
我来回复