Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 最多200个问题的条件聚合查询的行和更新SQL。我甚至添加了一个交叉表查询。非常感谢您花时间提供这些示例。我想我理解您试图传达的内容,并且可能需要对动态查询进行一些编辑,因为我的实际表中的字段名不是连续的,实际上没有特定的顺序。我将在处理您的示例时提供更新_Vba_Ms Access_Recordset - Fatal编程技术网

Vba 最多200个问题的条件聚合查询的行和更新SQL。我甚至添加了一个交叉表查询。非常感谢您花时间提供这些示例。我想我理解您试图传达的内容,并且可能需要对动态查询进行一些编辑,因为我的实际表中的字段名不是连续的,实际上没有特定的顺序。我将在处理您的示例时提供更新

Vba 最多200个问题的条件聚合查询的行和更新SQL。我甚至添加了一个交叉表查询。非常感谢您花时间提供这些示例。我想我理解您试图传达的内容,并且可能需要对动态查询进行一些编辑,因为我的实际表中的字段名不是连续的,实际上没有特定的顺序。我将在处理您的示例时提供更新,vba,ms-access,recordset,Vba,Ms Access,Recordset,最多200个问题的条件聚合查询的行和更新SQL。我甚至添加了一个交叉表查询。非常感谢您花时间提供这些示例。我想我理解您试图传达的内容,并且可能需要对动态查询进行一些编辑,因为我的实际表中的字段名不是连续的,实际上没有特定的顺序。我将在处理您的示例时提供更新。请参阅update now迭代表列以构建临时表和条件agg查询(后一个查询可以再次替换为交叉表查询)。太棒了!很高兴它起作用了。考虑在PIVOT之后创建一个表(选择*>从PIVoToValueQuase中的FialAlx结果)完成并使用该表进


最多200个问题的条件聚合查询的行和更新SQL。我甚至添加了一个交叉表查询。非常感谢您花时间提供这些示例。我想我理解您试图传达的内容,并且可能需要对动态查询进行一些编辑,因为我的实际表中的字段名不是连续的,实际上没有特定的顺序。我将在处理您的示例时提供更新。请参阅update now迭代表列以构建临时表和条件agg查询(后一个查询可以再次替换为交叉表查询)。太棒了!很高兴它起作用了。考虑在PIVOT之后创建一个表(<代码>选择*>从PIVoToValueQuase中的FialAlx结果)完成并使用该表进行后续分析/报告。仅在需要时运行pivot。您可以在整个表中循环,但从不重置
strOut
。所以它只是不断积累价值。如果您希望在查询中使用函数,正如您所期望的结果所建议的那样,这种方法根本不起作用。您需要执行完整的VBA或完整的查询。@Andre-这是有道理的,因为我从未重置strOut将是它累积值的原因。我已经尝试了几种方法来做出改变,但仍然无法达到预期的效果。既然你说这不起作用-我应该如何通过完整的VBA或查询来解决这个问题,还有更多的指导吗?谢谢你的输入,但我没能想出如何使它起作用@冻糕能让我到我需要的地方,只是想对你们的投入表示感谢。
CompanyID   Q1  Q2  Q3  Q4  Q5
CompanyA    I   I   N   N   I
CompanyB    I   I   I   I   I
CompanyC    I   I   N   N   N
Public Function NResponses(strTable As String)

On Error GoTo Err_Handler

    Dim rs As DAO.Recordset      
    Dim fld As DAO.Field          
    Dim strOut As String            
    Dim lngLen As Long                     
    Dim strSeperator As String      

NResponses = Null

Set dbs = CurrentDb
Set rs = dbs.OpenRecordset("TableA")
strSeperator = ", "

Do While Not rs.EOF
    With rs
        For Each fld In .Fields
            If fld.Value = "N" Then
                strOut = strOut & fld.Name & strSeperator
            End If
        Next fld
        rs.MoveNext
    End With
Loop

rs.Close
Set rs = Nothing

'Clean Output - remove last comma from strOut
lngLen = Len(strOut) - Len(strSeperator)
    If lngLen > 0 Then
        MissingControls = Left(strOut, lngLen)
    End If

Exit_Handler:
    'Clean up
    Set rs = Nothing
    Exit Function

Err_Handler:
    MsgBox "Error " & Err.Number & ": " & Err.Description, vbExclamation, "NResponses()"
    Resume Exit_Handler
End Function
CompanyID   Q1  Q2  Q3  Q4  Q5  NResponses
CompanyA    I   I   N   N   I   Q1, Q3, Q4, Q5
CompanyB    I   I   I   I   I   Q1, Q3, Q4, Q5
CompanyC    N   I   I   N   N   Q1, Q3, Q4, Q5
CompanyID   Q1  Q2  Q3  Q4  Q5  NResponses
CompanyA    I   I   N   N   I   Q3, Q4
CompanyB    I   I   I   I   I   
CompanyC    N   I   I   N   N   Q1, Q4, Q5
Dim strOut(10) ' array with 10 positions
Dim xAs Integer = 1 'var to array position
    Do While Not rs.EOF
        With rs
            For Each fld In .Fields
                If fld.Value = "N" Then
                    strOut(x) = strOut(x) & fld.Name & strSeperator
                    x=x+1
                End If

            Next fld
            rs.MoveNext
        End With
    Loop