【问题标题】:Apply SQL query condition to multiple columns in VBA将 SQL 查询条件应用于 VBA 中的多个列
【发布时间】:2017-11-08 10:37:13
【问题描述】:

请在下面找到我的示例表,我在其中应用了乘以数值数据的 if 条件。

查询代码

sql_string = "Select [Sheet5$].[num] * IIf(([Sheet5$].[to]-[Sheet5$].[frm])<365, .4," & _
"IIf(([Sheet5$].[to]-[Sheet5$].[frm])>365, 1, 0)) from [Sheet5$]"

以上代码将帮助我仅将条件应用于一列ie num。但我想将其应用于我的实际数据中可用的大约 20-30 列的多列。可以提及列名,但不可能将上述 if 条件 写入每一列。请指导我。

【问题讨论】:

    标签: mysql excel vba ado


    【解决方案1】:

    你的意思是这样的吗?

    Public Sub test()
    Dim sql_string As String
    Dim sheet_name As String
    
        sheet_name = "Sheet5$"
    
        sql_string = "Select "
        sql_string = sql_string & GetField(sheet_name, "num") & ","
        sql_string = sql_string & GetField(sheet_name, "num1") & ","
        sql_string = sql_string & GetField(sheet_name, "num2") & ","
        sql_string = sql_string & GetField(sheet_name, "num3")
        sql_string = sql_string & " from [" & sheet_name & "]"
    
        Debug.Print sql_string
    
    End Sub
    
    Public Function GetField(ByVal sheet_name As String, ByVal fieldName As String)
    
        GetField = "[" & sheet_name & "].[" & fieldName & "] * IIf(([" & sheet_name & "].[to] - [" & sheet_name & "].[frm]) < 365, 0.4, IIf(([" & sheet_name & "].[to] - [" & sheet_name & "].[frm]) > 365, 1, 0))"
    
    End Function
    

    结果:

    Select [Sheet5$].[num] * IIf(([Sheet5$].[to] - [Sheet5$].[frm]) < 365, 0.4, IIf(([Sheet5$].[to] - [Sheet5$].[frm]) > 365, 1, 0)),
        [Sheet5$].[num1] * IIf(([Sheet5$].[to] - [Sheet5$].[frm]) < 365, 0.4, IIf(([Sheet5$].[to] - [Sheet5$].[frm]) > 365, 1, 0)),
        [Sheet5$].[num2] * IIf(([Sheet5$].[to] - [Sheet5$].[frm]) < 365, 0.4, IIf(([Sheet5$].[to] - [Sheet5$].[frm]) > 365, 1, 0)),
        [Sheet5$].[num3] * IIf(([Sheet5$].[to] - [Sheet5$].[frm]) < 365, 0.4, IIf(([Sheet5$].[to] - [Sheet5$].[frm]) > 365, 1, 0)) from [Sheet5$]
    

    【讨论】:

      猜你喜欢
      • 2014-08-04
      • 1970-01-01
      • 2020-06-19
      • 2021-07-26
      • 1970-01-01
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多