2014-04-27 9 views
0

을 변경하여 액세스 제어에서 여러 쿼리를 실행 I가 내가 Access에서 실행하고이 쿼리 : 나는 1990 년부터 2012 년 다른 년을 반복 할 수 있어야하고, DESC를 변경해야두 변수가 현재

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); 

결국 ASC에, 그래서 1 ASC 당 1 DESC 실행됩니다.

이 작업을 수행하거나 VBA를 사용하는 것이 가장 좋을까요?

내가 필요한 모든 Access SQL 코드를 인쇄하는 PHP 스크립트가 있으면 VBA 코드를 표시 할 수 있도록 VBA 코드를 쉽게 수정할 수 있습니다.

감사합니다. 감사합니다.

답변

2

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