ms-access - MS Access 组合框设置带有两个主键的记录

  显示原文与译文双语对照的内容
0 0

数据库有 2个主键,一个用于行号,一个用于构造阶段。 原因是我们有可以能使用相同行号但必须完全跟踪项目的几个阶段的项目。 我有一个组合框,它可以在表单上驱动记录信息。 这可以能很好,但是当我有一个不止一个阶段时,它只会出现第一阶段,而不是它的他 4阶段。 当第一阶段以外的东西被选取时,第一阶段信息。

是否可以用 2个字段绑定组合框,以根据所选字段选择合适的记录?

或者者也许我需要rething的方式。"。 是不是所有的好人好事都必须要求回报呢?

用于选择记录的代码:

Sub SetFilter()
 Dim LSQL As String
 LSQL ="select * from tblLineData_Horizon"
 LSQL = LSQL &" where lineno = '" & cboSelected &"'"
 Form_frmHorizon_sub.RecordSource = LSQL
End Sub
Private Sub cboSelected_AfterUpdate()
 'Call subroutine to set filter based on selected Line Number
 SetFilter
End Sub
Private Sub Form_Open(Cancel As Integer)
 'Call subroutine to set filter based on selected Line Number
 SetFilter
End Sub
时间:原作者:4个回答

0 0

一个基本的想法,但是你很可以能想要调整一下行为,并且有一些检查。 当窗体加载时,你只有选择 LineNo的能力。 当 cbxLineNo 在它的中有值时,它将启用 cbxPhaseNo 选择和选择,它将更改子窗体的RecordSource

Private Sub cbxLineNo_AfterUpdate()
 If IsNull(cbxLineNo) Then
 cbxPhaseNo.Enabled = False
 Else
 cbxPhaseNo.Enabled = True
 cbxPhaseNo.RowSource ="SELECT PhaseNo FROM tblLineData_Horizon WHERE LineNo =" & cbxLineNo &";"
 End If
End Sub
Private Sub cbxPhaseNo_AfterUpdate()
 If IsNull(cbxPhaseNo) = False And IsNull(cbxLineNo) = False Then
 tblLineData_Horizon_sub.Form.RecordSource ="SELECT * FROM tblLineData_Horizon WHERE LineNo =" & cbxLineNo &" AND PhaseNo =" & cbxPhaseNo &";"
 End If
End Sub
Private Sub Form_Load()
 cbxLineNo.Enabled = True
 cbxPhaseNo.Enabled = False
 cbxLineNo.RowSource ="SELECT LineNo FROM tblLineData_Horizon GROUP BY LineNo;"
End Sub
原作者:
0 0

你的问题有点不清楚,但是你可以创建一个带有多个列的combobox,然后你的select语句将为:

where lineno = '" & cboSelected.Column(0) &"' And otherfield='"& cboSelected.Column(1)&"'"

通过单击 RowSource 属性并单击"生成"按钮( 。),转到组合框后面的查询。 添加需要的列之后,打开查询的属性并设置为 Yes,使它不会重复字段的组合。

你还需要更改组合框的其他属性: '列计数'还有'列宽度'。

原作者:
...