Я пытаюсь запустить этот оператор SQL в VBA, и по какой-то причине он говорит, что есть слишком мало параметров и что он ожидал 1. Я не могу понять, на какой строке он включен. Любая помощь будет принята с благодарностью.Слишком мало параметров в Access VBA
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, F.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 "
strCount2 = strCount & _
", (" & _
"SELECT COUNT([FORMULARY ID]) as cnt " & _
"FROM ImportMetricsIDs " & _
"WHERE [Market Segment]= 'CMS Part D (CY ' & (intYear) & ')'" & _
") AS E " & _
", (" & _
"SELECT COUNT([FORMULARY ID]) as cnt " & _
"FROM ImportMetricsIDs " & _
"WHERE [Market Segment]= 'CMS Part D (CY ' & (intYear + 1) & ')'" & _
") AS F "
Я предполагаю, что '(CY '& (intYear) &')' должен был быть '(CY" & (intYear) & ")' (а также для '(intYear + 1)'), но на самом деле скорее всего, вы должны использовать хранимую процедуру. –
Можете ли вы запустить этот запрос напрямую с вашим источником данных, не вовлекая VBA и правильно ли работая? В этом запросе есть некоторые странности (например, нет соединений в ваших подзапросах). Простым способом сделать это было бы добавить Debug.Print strCount2 в строку db.Execute, а затем в ближайшее окно вы можете скопировать полученный запрос и запустить его против вашего источника данных. – KevenDenen
Красота предложения Кевена заключается в том, что при копировании текста инструкции из окна «Немедленное» вставьте его в SQL View нового запроса в конструкторе запросов и попытайтесь запустить его, Access отобразит окно ввода, в котором будет предложено указать значение для параметра. И это поле ввода содержит имя параметра. Что такое имя параметра? – HansUp