这可能是个愚蠢的问题,但我对访问VBA还不熟悉。我有一个表格上面有很多字段。我刚刚创建了一个子表单,它从另一个表中提取数据,但是我需要它以主表单中的数据为基础。
所以主表单有Project、Project和GroupID,我和我想使用这个组合将许可从第二个表拉到子表单中。
主表称为PMDBII,次要表称为Project_Permit。
当前的表单如下:

因此,选定的项目显示与其关联的许可证,如突出显示。
我想要做的是,左边的列表是与项目不关联的所有许可的列表,右边的列表是与项目关联的的所有许可。
这样它看起来就像这样:
+----------------+--------+
| Federal | Tribal |
| Power Easement | |
| Railroad | |
| State | |
| Township | |
+----------------+--------+然后,我可以在左边选择另一个许可证,然后单击>按钮将其移动到右侧。
问题是,我不知道如何将正确的数据输入到Project_Permit表中。我知道我需要输入项目编号,项目类型,GroupID和许可证。我能拿到许可证,其余的我都有麻烦了。
到目前为止,这就是我所得到的:
Private Sub cmd_Select_Click()
Dim SQL As String
Dim ProjectNum As String
Dim PermitNum As String
Dim GROUPID As String
Dim ProjectType As String
With Me.PERMIT
PermitNum = .Value
End With
SQL = "INSERT INTO pmdb.Project_Permit(Project,Permit,ProjectType,GroupID)" _
& " Select '" & ProjectNum & "', " & PermitNum & ", " & ProjectType & ", '" & GROUPID & "';"
CurrentDb.Execute SQL
Forms![DATASHEET - CAF2].Form!PERMIT.Requery
Forms![DATASHEET - CAF2].Form!Selected.Requery
End Sub这是主表格上的。我不知道如何使用它来获取插入新记录所需的其余数据。
发布于 2017-09-09 02:36:28
只需引用从子表单调用的附加查询中的主窗体控件。下面还展示了如何使用querydefs作为VBA字符串或保存的访问查询方法进行参数化查询。当然,调整表单和/或控件名称和param数据类型。
VBA字符串查询方法
...
Dim qdef as QueryDef
' PREPARE STATEMENT (DEFINES PARAMS AND ADDS THEM AS PLACEHOLDERS)
SQL = "PARAMETERS [ProjectNumParam] TEXT(255), [PermitNumParam] LONG," _
& " [ProjectType] TEXT(255), [GROUPIDParam] LONG;" _
& " INSERT INTO Project_Permit(Project, Permit," _
& " ProjectType, GroupID)" _
& " VALUES ([ProjectNumParam], [PermitNumParam], " _
& " [ProjectTypeParam], [GROUPIDParam]);"
' INITIALIZE QUERY OBJECT
Set qdef = CurrentDb.CreateQueryDef("", SQL)
' BIND VALUES TO PARAMS
qdef![ProjectNumParam] = Forms!mymainform!ProjectNum
qdef![PermitNumParam] = Forms!mysubform!PermitNum
qdef![ProjectTypeParam] = Forms!mymainform!ProjectType
qdef![GROUPIDParam] = Forms!mymainform!GROUPID
' EXECUTE ACTION
qdef.Execute dbfailOnError
Set qdef = NOthing保存查询方法
SQL (保存为Access存储的查询,PARAMETERS在Access SQL方言中有效)
PARAMETERS [ProjectNumParam] TEXT(255), [PermitNumParam] LONG,
[ProjectType] TEXT(255), [GROUPIDParam] LONG;
INSERT INTO Project_Permit(Project, Permit, ProjectType, GroupID)
VALUES ([ProjectNumParam], [PermitNumParam], [ProjectTypeParam], [GROUPIDParam])VBA (按名称引用以上查询)
' INITIALIZE QUERY OBJECT
Set qdef = CurrentDb.QueryDefs("mySavedQuery")
' BIND VALUES TO PARAMS
qdef![ProjectNumParam] = Forms!mymainform!ProjectNum
qdef![PermitNumParam] = Forms!mysubform!PermitNum
qdef![ProjectTypeParam] = Forms!mymainform!ProjectType
qdef![GROUPIDParam] = Forms!mymainform!GROUPID
' EXECUTE ACTION
qdef.Execute dbfailOnError
Set qdef = Nothinghttps://stackoverflow.com/questions/46122553
复制相似问题