【发布时间】:2019-06-13 17:32:06
【问题描述】:
我需要取消选择某些列中的某些特定值,例如 AREA RESP 列中的单词“Stamping”,并且我需要获取日期范围从今天到 30 的那些几天后。
我试过这个:
myQuery = "SELECT ORDER, [PART NUMBER], [DEPT RESP], [AREA RESP], [START DATE]" _
& " FROM INITIAL_PHASE" _
& " WHERE [PLANNER NAME] = 'Homer' OR [PLANNER NAME] = 'Bart'" _
& " OR [PLANNER NAME] = 'Marge' AND [AREA RESP] <> 'Stamping'" _
& " AND [START DATE] BETWEEN " & DateToday & " AND " & DateMonth
& " AND [PART NUMBER] NOT LIKE '%R'" _
& " ORDER BY [START DATE]"
但它会返回 Stamping 以及它找到的所有日期
Sub GetFromMSAccess()
Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim WB As Excel.Workbook
Dim SH As Excel.Worksheet
Dim strConn As String
Dim myQuery As String
Dim CalcMode As Long
Dim ViewMode As Long
Dim DateToday As Date
Dim DateMonth As Date
DateToday = Format(Date, "m/d/yyyy")
DateMonth = DateToday + 30 'One full month starting from today
Application.StatusBar = "Extracting data from MS-Access"
With Application
CalcMode = .Calculation
.Calculation = xlCalculationAutomatic
.ScreenUpdating = False
End With
Sheets("DataSheet").Select
Set WB = ThisWorkbook
Set SH = WB.Sheets("DataSheet")
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=G:\Share\Control\MD\Master_data.mdb;" & "Jet OLEDB:Database Password=321pass;"
Set conn = New ADODB.Connection
'Here it gets the information I need
With SH
Set Rng = .Cells(2, "A")
End With
Set rst = New ADODB.Recordset
myQuery = "SELECT ORDER, [PART NUMBER], [DEPT RESP], [AREA RESP], [START DATE] " & _
"FROM INITIAL_PHASE WHERE [PLANNER NAME] = 'Homer' OR [PLANNER NAME] = 'Bart' OR [PLANNER NAME] = 'Marge' " & _
"AND [AREA RESP] <> 'Stamping' AND [START DATE] BETWEEN " & DateToday & " AND " & DateMonth & " " & _
"and [PART NUMBER] not LIKE '%R' order by [START DATE]"
rst.Open myQuery, strConn, adOpenKeyset, adLockBatchOptimistic
Rng.CopyFromRecordset rst
rst.Close
Set rst = Nothing
Application.StatusBar = ""
End Sub
我想得到那些没有“Stamping”这个词的那些,以及我想要的范围之外的任何其他日期。
【问题讨论】:
-
尝试替换:[PLANNER NAME] = 'Homer' OR [PLANNER NAME] = 'Bart' OR [PLANNER NAME] = 'Marge' with PLANNER_NAME in ('Homer', 'Bart', '玛格')