VBA初心者です。色々なサイトをみながら見よう見まねで試行錯誤しています。
今回、excelベースでvbaを用いてエクセルの内容を動的にSQL文内で設定して、条件に応じた内容でsharepointリストに反映するという仕組みを構築しようとしています。(本来はAccessがいいのでしょうが、そもそもAcccessをよくわかっておらずハードルが高いため)
試行錯誤しながら機能確認を行っていたのですが、日付をupdateするSQLを書く際に動的に指定する方法がわかりません。
'DateSQL = "UPDATE ListId SET TodayDate = #2021/03/02# WHERE TodayDate < #2022/08/08#;"
というように静的に指定したところ問題なく動いたのですが、SQL文内への変数の反映の仕方がわからず困っています。
具体的にはこのまま実行すると
実行時エラー'-2147217900(80040e14)':
クエリ式'& getDate &'の構文エラー:演算子がありません。
とエラーがでます。
SQL文の書く際に&をつけて""でくくったりなど試してみましたがコンパイルエラーになったり、そこをくぐり抜けても
DateSQL = "UPDATE ListId SET TodayDate = " & " getDate " & " WHERE TodayDate < #2022/08/08#;"
こちらの文で試すと
実行時エラー'-2147217904(80040e10)':
1つ以上の必要なパラメータの値が設定されていません
などとでてしまいます。
&でのつなげ方が悪いのかと思っていますが、何卒ご指南いただけますようお願いいたします。
===============================================
Sub Sharepoint_update()
Dim cn As Object 'ADODB.Connection
Dim rs As Object 'ADODB.Recordset
Dim strSQL As String
Dim DateSQL
Dim getDate
getDate = Date
Debug.Print getDate
Const SharePointUrl As String = "ttps://sharepoint.com/"
Const ListId As String = "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}"
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.ACE.OLEDB.16.0;WSS;IMEX=2;RetrieveIds=Yes;DATABASE=" & SharePointUrl & ";LIST=" & ListId & ";"
Set rs = CreateObject("ADODB.Recordset")
With rs
.Open "SELECT * FROM list", cn
.MoveFirst
'DateSQL = "UPDATE ListId SET TodayDate = #2021/03/03# WHERE TodayDate < #2022/08/08#;"
DateSQL = "UPDATE ListId SET TodayDate = & getDate & WHERE TodayDate < #2022/08/08#;"
cn.Execute DateSQL
.Close
End With
cn.Close
End Sub
===============================================


回答1件
あなたの回答
tips
プレビュー