Выполнение нескольких запросов в доступе с изменением двух переменных

Прямо сейчас у меня есть этот запрос, который я запускаю в Access:

UPDATE [Part B Mater Table] SET [Part B Mater Table].MCCat = 1
WHERE ((([Part B Mater Table].fyear)=1990)) AND CUSIP IN
(SELECT TOP 33 PERCENT [Part B Mater Table].CUSIP
FROM [Part B Mater Table]
WHERE ((([Part B Mater Table].fyear)=1990))
ORDER BY [Part B Mater Table].MC DESC);

Мне нужно иметь возможность просмотреть разные годы с 1990 по 2012 год и изменить DESC в конце на ASC, поэтому в год выполняется один ASC и один DESC.

Было бы лучше сделать макрос для этого или использовать VBA?

Если это поможет, у меня есть php-скрипт, который распечатывает весь нужный мне код Access SQL, поэтому я могу легко изменить его, чтобы показать код VBA, если возможно написать запросы в VBA.

Любая помощь приветствуется, спасибо.


person user3577371    schedule 27.04.2014    source источник


Ответы (1)


VBA:

Option Compare Database



Sub sqlCommand(iYear As Integer, sOrder)
    Dim sSQL As String
    sSQL = "UPDATE [Part B Mater Table] SET [Part B Mater Table].MCCat = 1 " & _
        "WHERE ((([Part B Mater Table].fyear)=" & iYear & ")) AND CUSIP IN " & _
        "(SELECT TOP 33 PERCENT [Part B Mater Table].CUSIP & " & _
        "FROM [Part B Mater Table] " & _
        "WHERE ((([Part B Mater Table].fyear) = " & iYear & ")) " & _
        "ORDER BY [Part B Mater Table].MC " & sOrder & ")"
    DoCmd.RunSQL sSQL
End Sub

Sub update()
Dim aOrder(2), sOrder As Variant, iCounter As Integer
Dim iYears As Integer

aOrder(0) = "ASC"
aOrder(1) = "DESC"

For Each sOrder In aOrder
    For iCounter = 1990 To 2012
        sqlCommand iCounter, sOrder
    Next
Next sOrder
End Sub
person geoB    schedule 27.04.2014