关于ACCESS窗体设计问题,制作问题列表框!

我想制作一个窗体,分成两部分,左右分开,左边是问题的分类(列表框),右边是问题的详细信息和解决方法,当我点击列表框的上的行的时候,右边的会对应更新问题详细信息,我想知道怎样做,谢谢!

我现在没空,请允许我晚些时候给你一个详细而满意的答复,今晚或明晚。
现在给你答复
这里根据你的要求,列举一个实际解决方案加以说明,以方便你理解我是如何实现你的要求的。

第一步 首先建立一张ACCESS表(注:表名和字段名一般应使用英文,但是为了便于理解下面采用中文)
该表取名“问题信息”共有3个字段名分别为“分类”、“问题详情”和“解决方法”并输入下列模拟数据:
分类 问题详情 解决方法
人事 人事问题1 人事问题1之解决方法
人事 人事问题2 人事问题2之解决方法
人事 人事问题3 人事问题3之解决方法
生产 生产问题1 生产问题1之解决方法
生产 生产问题2 生产问题2之解决方法
技术 技术问题1 技术问题1之解决方法
技术 技术问题2 技术问题2之解决方法
技术 技术问题3 技术问题3之解决方法
营销 营销问题1 营销问题1之解决方法
营销 营销问题2 营销问题2之解决方法
技术 技术问题4 技术问题4之解决方法
财务 财务问题1 财务问题1之解决方法
公关 公关问题1 公关问题1只解决方法

第二步 新建一个ACCESS窗体,调整大小约14CM见方,然后添加两个列表框控件,一个用来在左边显示分类,另一个用来在右边显示问题详情和解决办法,假设它们的名称分别为:List1和List2 。在添加列表框控件时系统会自动为其添加列表框标签,请手动将它们删除掉。这两个列表框的各种属性可以手工设置,但是讲解起来过于繁复,故放弃手工设置改用编程方法设置,请看下一步。

第三步 为刚新建的窗体添加打开事件过程(用编程方法设置各控件的关键初始属性)

Private Sub Form_Open(Cancel As Integer)
'设置列表框LIST1关键属性
With Me.List1
.Left = 567 '设置左边距 单位为缇 1CM=567缇
.Top = 567 '设置上边距
.Width = 1701 '设置列表框宽度
.Height = 3402 '设置列表框高度
.BoundColumn = 1 '设置列表框绑定第一列
.ColumnHeads = True '设置列表框列显示标题
'下一代码行设置列表框行来源,以便List1显示问题分类
'其行来源为一段的SQL代码,从问题信息表中查询出“问题分类”这里使用DISTINCT
'关键字剔除重复值
.RowSource = "SELECT DISTINCT 分类 AS 问题分类 FROM 问题信息 ORDER BY 分类"
End With
'设置列表框list2关键属性
With Me.List2
.Left = 2318
.Top = 567
.Width = 4536
.Height = 3402
.ColumnHeads = True
.ColumnCount = 2 '设置列表框list2显示两列
.ColumnWidths = "3.6 cm;4.4 cm" '设置列表框第一列宽度为3.6厘米,第二列宽度为4.4厘米
End With
End Sub
注:如果你晓得如何人工设置上述关键属性,则可免去上述窗体打开事件过程

为列表框LIST1添加已更新事件过程(此段代码为戏肉)实现“当我点击列表框的上的行的时候,右边的会对应更新问题详细信息”
Private Sub List1_AfterUpdate()
'下一代码行设置列表框LIST2行来源,让List2显示问题详情和解决方法
'其行来源为一段SQL代码,从问题信息表根据List1每次选定的“分类”
'查询出相关的“问题详情”和“解决方法”
Me.List2.RowSource = "SELECT 问题详情,解决方法 FROM 问题信息 WHERE 分类='" & Me.List1.Value & "'"
End Sub
请上机试试上列解决方案,看看效果吧。来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-23
其实很简单.主要步骤如下:
1、建立(或已存在)一个关于问题分类的表([问题分类表]),格式应该是:
ID(自动编号),问题分类(文本)
2、建立(或已存在)一个关于问题和详细信息的基础表,格式应该是:
ID(自动编号)、分类ID(数字→长整型 对应[问题分类表].[ID]) 、问题明细(文本)、解决方法(文本)……(还需要什么自己增加)
3、建立那个你想要的窗体界面,其中创建一个列表框(List分类),在右侧创建一个文本框(Text内容);
4、在 List分类 的属性表的“数据”选项卡中,“行来源类型”属性,默认为“表/查询”(保持不变);
找到“行来源”属性,点击右侧的下拉菜单,选择“问题分类表”,之后,切换到属性表的“格式”选项卡中,在“列数”属性中,写入 “2”,表示〔ID〕和〔问题分类〕都使用;
在“列宽”属性中,写入“0,3”,意思是〔iD〕列不显示。只显示〔问题分类〕;
5、切换到属性表的“事件”选项卡中,在“更新后”属性中,选择“事件过程”并点击 右侧的生成器(…)按钮,切换到VBA编辑器中,将下列代表粘到事件中:
Me.Text内容 = DLookup("问题明细", "问题明细表", "分类ID=" & Me.List分类)
6、切换到 窗体视图 看效果.(要在2个表中输入一切资料)
第2个回答  2011-02-23
设窗体窗体(ct),数据源为jscl表,建两个组合框:
组合框1:名称为clmc (其值是jscl表中的clmc) 可用行来源:SELECT [clmc].[jscl] FROM [jscl]
组合框2:名称为ctcz (其值是jscl表中的clcz) 可用行来源:SELECT distinct clcz.jscl FROM jscl WHERE (([jscl]![clmc]=[Forms]![ct]![ctmc]))
第3个回答  2011-02-23
窗体中新建1个列表框、1个文本框,一个叫L问题分类,一个叫T解决方法,其它什么都不用做。然后窗体代码如下即可实现你的要求:
Private Sub Form_Open(Cancel As Integer)
Dim sql As String
sql = "select 问题分类 from 问题表"
Me.L问题分类.RowSource = sql
End Sub

Private Sub L问题分类_AfterUpdate()
Dim db As Database
Dim rst1 As Recordset
Dim sqlrst1 As String
Dim qst, ans As String
Set db = CurrentDb
qst = Me.L问题分类.Value
sqlrst1 = "select 解决方法 from 问题表 where 问题分类 = '" & qst & "'"
Set rst1 = db.OpenRecordset(sqlrst1)
ans = rst1(0)
Me.T解决方法.Value = ans
End Sub
第4个回答  2011-02-23
库,得到连接对象conn
2、用下面的select语句打开表,将数据读入RecordSet
set rs=conn.execute("select * from 表名")
3、用循环将数据读入二维数组arr
row=0
while not rs.eof
arr[row,0]=rs["id"]
arr[row,1]=rs["year"]
arr[row,2]=rs["mon"]
arr[row,3]=rs["1"]
arr[row,4]=rs["2"]
...
...
...
row=row+1
wend
相似回答