Office中国论坛/Access中国论坛

标题: 【求助】连续窗体中同一个字段的数据可否分两列显示呢? [打印本页]

作者: Y9X    时间: 2011-11-9 21:27
标题: 【求助】连续窗体中同一个字段的数据可否分两列显示呢?
各位高手,报表中的分列显示可否应用在连续窗体中?我现在遇到连续窗体数据太多,单列显示要占用很长的空间,可否分成2列或者3列显示?具体如下,请各位高手指导一下,谢谢了。

连续窗体目前的状态如下图:

[attach]47284[/attach]

我希望达到的效果如下图:

[attach]47285[/attach]
作者: Y9X    时间: 2011-11-10 08:37
有莫有?
作者: 陈赢洁    时间: 2011-11-10 11:01
这个可以呀

作者: 陈赢洁    时间: 2011-11-10 11:04
打开报表,然后右击,点页面设置,点列,按行按列,分几列,

作者: Y9X    时间: 2011-11-10 11:58
陈赢洁 发表于 2011-11-10 11:04
打开报表,然后右击,点页面设置,点列,按行按列,分几列,

谢谢啊,不过你答的不是我要问的。我知道报表内可以这样做,可是我想在连续窗体内也这样分列显示,该怎么做?
作者: yehf    时间: 2011-11-10 14:46
用N个子窗体或者列表框代替行不行呢?
作者: Y9X    时间: 2011-11-10 15:26
不行的,不论用多少个子窗,数据依然重复的
作者: Y9X    时间: 2011-11-10 16:55
有莫有啊。。。
作者: aslxt    时间: 2011-11-10 23:16
比方说用4个子窗体,每个子窗体数据来源于不同的查询,用 top截断各个子窗体的记录
作者: Y9X    时间: 2011-11-12 23:10
本帖最后由 Y9X 于 2011-11-12 23:47 编辑
aslxt 发表于 2011-11-10 23:16
比方说用4个子窗体,每个子窗体数据来源于不同的查询,用 top截断各个子窗体的记录


谢谢aslxt,可是由于记录数量不可确定,top参数可否使用变量呢?我这样写,可是无法执行参数,好似top的参数只能是一个常数,请看,该如何实现?
Private Sub Label7_Click()

Dim n As Long
n = DCount("[集装箱号]", "出口集装箱信息表")
DoCmd.RunSQL "insert into b select top n 出口集装箱信息表.* FROM 出口集装箱信息表"
End Sub
运行错误提示如下
[attach]47304[/attach]
作者: 咱家是猫    时间: 2011-11-13 01:44
完全可以,在主窗体里建多个空的子窗体控件,在代码用用New类化子窗体后,赋给子窗体对象源,并同时给它记录源,在记录源里可以用筛选条件指定某个子窗体控件里要显示哪些记录,比如说可以用Mod 2=0来处理ID为单/复数ID的记录.
作者: aslxt    时间: 2011-11-13 07:23
经鉴定,就用猫哥的 MOD来处理ID,你想要几个子窗体都行
作者: aslxt    时间: 2011-11-13 07:29
就用猫哥的方法,如果要分成4个子窗体,每个子窗体的数据源:
select  出口集装箱信息表.* FROM 出口集装箱信息表 where id mon 4 =1
select  出口集装箱信息表.* FROM 出口集装箱信息表 where id mon 4 =2
select  出口集装箱信息表.* FROM 出口集装箱信息表 where id mon 4 =3
select  出口集装箱信息表.* FROM 出口集装箱信息表 where id mon 4 =0
其余类推
作者: Y9X    时间: 2011-11-13 11:50
咱家是猫 发表于 2011-11-13 01:44
完全可以,在主窗体里建多个空的子窗体控件,在代码用用New类化子窗体后,赋给子窗体对象源,并同时给它记录源, ...

谢谢猫,你说的思路懂了,可技术不懂,可否再详细些?
作者: aslxt    时间: 2011-11-13 14:40
本帖最后由 aslxt 于 2011-11-13 14:45 编辑

假如说你要用4个子窗体来显示数据,则每个子窗体的记录源顺序为:
  select * from 表名 where 表名.id mod 4=1
select * from 表名 where 表名.id mod 4=2
select * from 表名 where 表名.id mod 4=3
select * from 表名 where 表名.id mod 4=0
前提是表中必须有自动编号字段,原表没有就增加字段即可。

作者: 咱家是猫    时间: 2011-11-13 15:53
发了个例子,见
http://www.office-cn.net/forum.p ... mp;extra=#pid629347
作者: Y9X    时间: 2011-11-13 16:13
aslxt 发表于 2011-11-13 14:40
假如说你要用4个子窗体来显示数据,则每个子窗体的记录源顺序为:
  select * from 表名 where 表名.id mo ...

tks,aslxt.
你教的方法我用了,这个方法只能用在没有筛选条件的地方,如果结合进筛选条件后,ID不再连贯,因此子窗体的数据不美观,请看下图,不知道有没有进一步的办法?
[attach]47310[/attach]
作者: aslxt    时间: 2011-11-13 17:02
Y9X 发表于 2011-11-13 16:13
tks,aslxt.
你教的方法我用了,这个方法只能用在没有筛选条件的地方,如果结合进筛选条件后,ID不再连贯 ...

那就用筛选条件生成临时表,保证ID连贯,子窗体的数据源为临时表即可,这样还可以分类排序
作者: yehf    时间: 2011-11-13 19:41
表里面增加一个编号字段,如果用2个子窗体的话,子窗体1的数据源就是 select * from 表名 where (id mod 2 )>0
子窗体2数据源  select * from 表名 where (id mod 2 )=0




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3