2017-11-08 74 views
1

숫자 데이터를 곱하기위한 조건이있는 경우 적용 할 수있는 샘플 테이블을 찾으십시오.VBA의 여러 열에 SQL 쿼리 조건 적용

enter image description here

쿼리 코드 코드 위

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

한 열 즉 납입에 조건을 적용하는 날 도움이 될 것입니다 only.But 난 (20)의 주위에 여러 컬럼에 적용 할 내 실제 data.it에서 사용할 수있는 -30 열은 열 이름을 언급 할 수 있지만 각 열에 조건 인 경우 위의 을 쓸 수 없습니다. 저를 동일하게 안내 해주십시오.

답변

0

다음과 같은 것이 있습니까?

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$]