2016-09-13 17 views
2

根据用户的作业ID号,我创建了一个具有不同单元类型(思考管道尺寸)和单位(认为管道镜头)的ID的记录集。每个单元类型记录已经具有表单文本框的名称,其中总素材进入不同的列。我想要做的是遍历每个记录集并为每个单位类型插入该作业ID号码(用户放在表单中)的素材。使用记录中的文本粘贴到Access窗体控制箱中

Dim rst_UnitEntryCounts As Recordset 
Set rst_UnitEntryCounts = CurrentDb.OpenRecordset("SELECT tbl_UnitTypes.UnitTypes_WeeklyTextBoxUserEntryForm, " _ 
                 & "    tbl_PMEntry.PMEntry_Week_Ending, " _ 
                 & "    tbl_UnitTypes.UnitTypes_CumalativeTextBoxUserEntryForm, " _ 
                 & "    Sum(tbl_UnitEntry.UnitEntry_Unit_Count) AS SumOfUnitEntry_Unit_Count " _ 
                 & "FROM tbl_UnitTypes " _ 
                 & "   INNER JOIN tbl_UnitEntry ON tbl_UnitTypes.UnitTypes_ID = tbl_UnitEntry.UnitEntry_UnitTypes_ID) " _ 
                 & "   INNER JOIN (tbl_PMHeader " _ 
                 & "   INNER JOIN tbl_PMEntry ON tbl_PMHeader.PMHeader_ID = tbl_PMEntry.PMEntry_PMHeader_ID) ON tbl_UnitEntry.UnitEntry_PMEntry_ID = tbl_PMEntry.PMEntry_PMHeader_ID " _ 
                 & "WHERE tbl_PMHeader.PMHeader_ID = " & num_PM _ 
                 & "GROUP BY tbl_UnitTypes.UnitTypes_WeeklyTextBoxUserEntryForm, " _ 
                 & "    tbl_PMEntry.PMEntry_Week_Ending, " _ 
                 & "    tbl_UnitTypes.UnitTypes_CumalativeTextBoxUserEntryForm ") 
      rst_UnitEntryCounts.MoveFirst 
      Do Until rst_UnitEntryCounts.EOF = True 
       [rst_UnitEntryCounts.UnitTypes_WeeklyTextBoxUserEntryForm] = SumOfUnitEntry_Unit_Count 
      rst_UnitEntryCounts.MoveNext 
      Loop 
    Exit Sub 

image of what my query table looks like 此外,即时得到一个错误3131语法错误在FROM子句为好。 在此先感谢!

+0

我建议让您的查询先运行 - 你有一些不匹配的括号开始。解决这个问题的最佳方法是将动态SQL分配给字符串变量和Debug.Print,以显示它是什么 - 复制/粘贴到SQL窗口并在那里测试 - 在此处返回工作或破坏的实际SQL。而这个[[rst_UnitEntryCounts.UnitTypes_WeeklyTextBoxUserEntryForm]]是错误的 - 你的组合框的实际名称是什么? – dbmitch

+0

会做。就我的组合框而言,它将是动态的。所以名称将根据特定列上的记录而变化。 (请参阅上面的图片链接) – Dan

回答

0

终于想出了如何在一个文本框中“放置”一个值(单元总和),该文本框根据表单中的条件(单元类型)而变化,其中文本框的名称位于记录集内的记录本身内。如果别人有类似的问题,这里是我是如何做到的:

Dim cntl As String 
Dim frm As String 
Dim rst_UnitEntry As Recordset 
frm = "frm_UserEntry" 

Set rst_UnitEntryCounts = CurrentDb.OpenRecordset("SELECT...)  
If rst_UnitEntryCounts.RecordCount <> 0 Then 
     rst_UnitEntryCounts.MoveFirst 
     Do Until rst_UnitEntryCounts.EOF = True 
     If rst_UnitEntryCounts![UnitTypes_CumalativeTextBoxUserEntryForm] <> "" Then 
      cntl = rst_UnitEntryCounts![UnitTypes_CumalativeTextBoxUserEntryForm] 
      Forms(frm).Controls(cntl) = rst_UnitEntryCounts![SumOfUnitEntry_Unit_Count] 
     End If 
     rst_UnitEntryCounts.MoveNext 
     Loop 
相关问题