【发布时间】:2016-01-18 20:30:39
【问题描述】:
我在我的项目中遇到了一些问题,我想知道是否有人能指出我正确的方向。
图片应该比我描述它更容易解释功能:
很简单,我希望用户能够单击“添加”,然后双击其中一个专业将其分配给该 DJ。
当用户单击保存按钮时,需要为他们选择的每个专业在名为“tblDJSpecialitiy”的表中创建一个新行。每行都需要包含“Dj_No”和专业的主键。
首先,我需要在编辑 DJ 表单上获取专业列表,以更新以反映用户从所有专业列表中单击的专业。
这是我目前在编辑 DJ 表单上的专业列表的代码:
Public Sub displaySpecialities()
'for the selected member display current loans (including overdue loans)
'and loans which have been returned but for which fines are still outstanding
Dim RstSpecialities As DAO.Recordset
Dim strSQL, strSpecialityInformation As String
Dim strDJNo As String
Dim intNumberOfSpecialities, intIndex As Integer
strDJNo = txt_dj_no.Value
'call the function to clear the list
Call clearLst_Specialities
'create an sql query to find the specialities
strSQL = strSQL & "SELECT tblSpeciality.SpecialityName FROM tblSpeciality INNER JOIN tblDJSpeciality ON tblDJSpeciality.[FKSpecialityNo] = tblSpeciality.[SpecialityNo] WHERE tblDJSpeciality.FKDjNo = '" & strDJNo & "';"
'store the results of the query in the recordset
Set RstSpecialities = dbase.OpenRecordset(strSQL, dbOpenDynaset)
'calculate the number of specialities
If Not RstSpecialities.EOF Then
RstSpecialities.MoveLast
intNumberOfSpecialities = RstSpecialities.RecordCount
RstSpecialities.MoveFirst
End If
'add the details of each speciality to the list box
For intIndex = 0 To intNumberOfSpecialities - 1
strSpecialityInformation = RstSpecialities("SpecialityName")
lst_specialities.AddItem (strSpecialityInformation)
RstSpecialities.MoveNext
Next
'close the recordet
RstSpecialities.Close
End Sub
这是我目前必须在添加表单上填充所有专业列表的代码:
Public Sub displaySpecialities()
'list all specialities in the system
Dim RstSpecialities As DAO.Recordset
Dim strSQL, strSpecialityInformation As String
Dim intNumberOfSpecialities, intIndex As Integer
'call the function to clear the list
Call clearLst_Specialities
'create an sql query to find the specialities
strSQL = strSQL & "SELECT tblSpeciality.SpecialityName FROM tblSpeciality ORDER BY SpecialityName ;"
'store the results of the query in the recordset
Set RstSpecialities = dbase.OpenRecordset(strSQL, dbOpenDynaset)
'calculate the number of specialities
If Not RstSpecialities.EOF Then
RstSpecialities.MoveLast
intNumberOfSpecialities = RstSpecialities.RecordCount
RstSpecialities.MoveFirst
End If
'add the details of each speciality to the list box
For intIndex = 0 To intNumberOfSpecialities - 1
strSpecialityInformation = RstSpecialities("SpecialityName")
lst_speciality_add.AddItem (strSpecialityInformation)
RstSpecialities.MoveNext
Next
'close the recordet
RstSpecialities.Close
End Sub
我在尝试使用它时一直在谷歌上搜索 - 但没有太多运气。感谢所有回复的人。
编辑:
这出现了两次 - 如果我两次都输入“11”(DJ 号码),那么我会得到一个列表 - 但它显示如下:
这似乎是我的 tblDJSpecialty 中的所有记录
【问题讨论】:
-
我将通过不使用“添加”表单来简化此操作,而是将列表框放在当前专业控件的右侧。您可以使用“>”“
-
是的 - 如果这样可以简化一些事情,我肯定愿意将两个列表框并排放置。你有什么想法我怎么能做到这一点? - 另外,不,当保存 DJ 详细信息时,我没有实际添加/删除专业的代码 - 我还没有做到这一点!非常感谢您的回复
-
保存现有数据库的副本,以便在需要时回退。然后在编辑表单上,去掉添加和删除按钮;缩小“首选项”列表框的宽度;在右侧添加一个新的列表框控件;您可以在两个列表之间插入两个命令按钮,一个带有“>”,一个带有“
-
谢谢 - 我刚刚重新设计了我的表单,现在开始编写代码以在两个列表之间移动项目。
-
您是要使用带有 > 和 代码维护表,然后重新查询。你怎么看?
标签: ms-access vba ms-access-2013