以下のスクリプトは、昇順で日付値を持たない行を見つけるために形成されました.しかし、コードを実行するERROR
と、No value given one or more required parameters
コード
Option Explicit
Dim conn, cmd, rs
Dim clauses(36), i
Dim xlApp, xlBook
Set conn = CreateObject("ADODB.Connection")
With conn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=""D:\WIPData\AravoMacro\Finalscripts\GE_Wing_To_Wing_Report.xlsx"";" & _
"Extended Properties=""Excel 12.0;HDR=Yes"""
.Open
End With
For i = 0 To 36
clauses(i) = "[Task" & i + 1 & " Start Date] < [Task" & i + 2 & " Start Date]"
Next
Set cmd = CreateObject("ADODB.Command")
cmd.CommandText = "SELECT * FROM [GEWingToWingMay25$] WHERE " & Join(clauses, " OR ")
cmd.ActiveConnection = conn
Set rs = cmd.Execute
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Add
xlBook.Sheets(1).Range("A1").CopyFromRecordset cmd.Execute
誰か助けてくれませんか?
編集
ありがとう、
編集1
今、私はこれを試しました
Set cmd = CreateObject("ADODB.Command")
'cmd.CommandText = "SELECT * FROM [GEWingToWingMay25$] WHERE " & Join(clauses, " OR ")
cmd.CommandText = "SELECT * FROM [GEWingToWingMay25$] WHERE " & "#2012/10/01# > #2012/10/015#"
MsgBox(cmd.CommandText)
cmd.ActiveConnection = conn
Set rs = cmd.Execute
エラーの取得class doesn't support Automation
スナップショット2
EDIT3
以下のように更新しました:
cmd.CommandText = "SELECT * FROM [GEWingToWingMay25$] WHERE #" & CDate([Task1StartDate]) & "# > #" & CDate([Task2StartDate]) _
"# > #" & CDate([Task3 Start Date]) & "# > #" & CDate([Task4 Start Date]) _
"# > #" & CDate([Task5 Start Date]) & "# > #" & CDate([Task6 Start Date]) _
"# > #" & CDate([Task7 Start Date]) & "# > #" & CDate([Task8 Start Date]) _
"# > #" & CDate([Task9 Start Date]) & "# > #" & CDate([Task10 Start Date]) _
"# > #" & CDate([Task11 Start Date]) & "# > #" & CDate([Task12 Start Date]) _
"# > #" & CDate([Task13 Start Date]) & "# > #" & CDate([Task14 Start Date]) _
"# > #" & CDate([Task15 Start Date]) & "# > #" & CDate([Task16 Start Date]) _
"# > #" & CDate([Task17 Start Date]) & "# > #" & CDate([Task18 Start Date]) _
"# > #" & CDate([Task19 Start Date]) & "# > #" & CDate([Task20 Start Date]) _
"# > #" & CDate([Task21 Start Date]) & "# > #" & CDate([Task22 Start Date]) _
"# > #" & CDate([Task23 Start Date]) & "# > #" & CDate([Task24 Start Date]) _
"# > #" & CDate([Task25 Start Date]) & "# > #" & CDate([Task26 Start Date]) _
"# > #" & CDate([Task27 Start Date]) & "# > #" & CDate([Task28 Start Date]) _
"# > #" & CDate([Task29 Start Date]) & "# > #" & CDate([Task30 Start Date]) _
"# > #" & CDate([Task31 Start Date]) & "# > #" & CDate([Task32 Start Date]) _
"# > #" & CDate([Task33 Start Date]) & "# > #" & CDate([Task34 Start Date]) _
"# > #" & CDate([Task35 Start Date]) & "# > #" & CDate([Task36 Start Date]) & "#;"
EDIT4 Googleのリンクが示唆しているように、HDR
はいに設定されている場合、Excelシートにはフィールドレベルのラベルとして最初の行が必要であり、私のExcelにはそれがあります。しかし、なぜエラーが発生するのですか?
更新されたコード
Option Explicit
Dim conn, cmd, rs
Dim clauses(34), i
Dim xlApp, xlBook
Dim tempDate,LenDate
Set conn = CreateObject("ADODB.Connection")
With conn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=""D:\AravoVB\GE_Wing_To_Wing_Report.xlsx"";" & _
"Extended Properties=""Excel 12.0;HDR=Yes"""
.Open
End With
For i = 0 To 34
clauses(i) = "[Task" & i + 1 & " Start Date] > [Task" & i + 2 & " Start Date]"
tempDate=tempDate & "[Task" & i + 1 & " Start Date],"
Next
Set cmd = CreateObject("ADODB.Command")
cmd.CommandText = "SELECT " & tempDate &" FROM [GEWingToWingMay25$] WHERE [Business Process ID] NOT IN (" & "SELECT [Business Process ID] FROM [GEWingToWingMay25$] WHERE " & Join(clauses, " AND ") & ")"
MsgBox(cmd.CommandText)
cmd.ActiveConnection = conn
Set rs = cmd.Execute
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Add
xlBook.Sheets(1).Range("A1").CopyFromRecordset cmd.Execute
現在、すべてのstart date
行に値がないため、IN
演算子内のSQLクエリは値を返さず、外側のSQLクエリはすべてのデータを返します.SQLクエリ句Null values
の評価内でそのようなものを無視する方法はありますか. where
何か案が?