2015-01-05 2 views
1

특정 조건이 충족되는 액세스 테이블에서 레코드를 계산하려고하고 합계를 하나의 레코드에있는 다른 테이블에 삽입하려고합니다. 나는 VBA를 통해 이렇게하고 SQL 문을 만들려고 노력하고 있는데 어떤 이유로 더 이상 추가하려고 할 때 너무 많은 줄 계속이 있다고 표시하고 그 이유에 대해 혼란 스럽다. 어떤 도움이라도 대단히 감사하겠습니다.Access VBA의 SQL 문 계산

intYear = InputBox("What year is it currently?", "Year Input") 

DoCmd.DeleteObject acTable, "ThisTable" 



strCreate = "CREATE TABLE MarketSegmentTotals (" & vbCrLf & _ 
      "[State Medicaid] TEXT," & vbCrLf & _ 
      "Commercial TEXT," & vbCrLf & _ 
      "HIX TEXT," & vbCrLf & _ 
      "MMP TEXT," & vbCrLf & _ 
      "[CMS Part D (CY " & intYear & ")] TEXT," & vbCrLf & _ 
      "[CMS Part D (CY " & (intYear + 1) & ")] TEXT" & vbCrLf & _ 
      ");" 


strCount = "INSERT INTO MarketSegmentTotals([State Medicaid], [Commercial], [HIX], [MMP], [CMS Part D (CY " & intYear & ")], [CMS Part D (CY " & (intYear + 1) & ")]) " & _ 
"SELECT A.cnt, B.cnt, C.cnt, D.cnt, E.cnt " & _ 
"FROM (" & _ 
    "SELECT COUNT([FORMULARY ID]) as cnt " & _ 
    "FROM ImportMetricsIDs " & _ 
    "WHERE [Market Segment]= 'State Medicaid' " & _ 
") AS A " & _ 
", (" & _ 
    "SELECT COUNT([FORMULARY ID]) as cnt " & _ 
    "FROM ImportMetricsIDs " & _ 
    "WHERE [Market Segment]= 'Commercial' " & _ 
") as B " & _ 
", (" & _ 
    "SELECT COUNT([FORMULARY ID]) as cnt " & _ 
    "FROM ImportMetricsIDs " & _ 
    "WHERE [Market Segment]= 'HIX' " & _ 
") AS C " & _ 
", (" & _ 
    "SELECT COUNT([FORMULARY ID]) as cnt " & _ 
    "FROM ImportMetricsIDs " & _ 
    "WHERE [Market Segment]= 'MMP' " & _ 
") AS D " 

답변

3

VBA는 줄 연속 문자로 연결된 줄 수를 제한합니다.

변수를 다시 정의하여 줄 계속 번호를 끊을 수 있습니다.

strCount = "blahblahblah" & _ 
    "moreblahblahblah" & _ 
    "lastblahforabit" 
strCount = strCount & "evenmoreblah" & _ 
    "toomuchblahblahblah" 

또는 줄 계속을 완전히 제거하십시오.

strCount = "blahblahblah" 
strCount = strCount & "moreblahblahblah" 
strCount = strCount & "lastblahforabit" 
strCount = strCount & "evenmoreblah" 
strCount = strCount & "toomuchblahblahblah" 
+0

흥미로운 사실. 이 동작은 언어 사양과 정확하게 일치하지 않습니다. [구현은 의 문자 수를 제한 할 수 있습니다.] (http://msdn.microsoft.com/en-us/library/ee156843.aspx) – RubberDuck

+1

잘 설명되어 있지는 않지만 거기에 몇 개의 다른 장소에서 그것에 대한 약간의 언급이다. [하나] (http://msdn.microsoft.com/en-us/library/office/gg264236%28v=office.15%29.aspx) [2] (http://support2..microsoft.com/?kbid = 141513). 첫 번째 링크가 한계가 25임을 시사 하듯이 매우 일관성있는 것으로 보이지 않지만 문제의 코드는 그 한계를 넘지는 못하지만 여전히 오류가 있습니다. – KevenDenen