あなたのコードは、Access SQL が理解できない T-SQL (SQL Server) 構文を使用しています。VBA に相当するものは次のとおりです。
Dim cdb As DAO.Database
Set cdb = CurrentDb
cdb.Execute "UPDATE myTable SET Field1='10', Field2='11' WHERE [Date] = #2013-06-05#", dbFailOnError
If cdb.RecordsAffected = 0 Then
cdb.Execute "INSERT INTO myTable (Field1, Field2) VALUES ('10', '11')", dbFailOnError
End If
Set cdb = Nothing
ノート:
Date
は Access の予約語であるため、フィールド名を として指定する必要があります[Date]
。
コードが明確な日付形式を使用していることに注意してくださいyyyy-mm-dd
。ハッシュ マーク ( #
) で囲まれた日付リテラルがある場合は常に、この形式を使用する必要があります。
また、コードの型の不一致が修正されることにも注意してください。UPDATE ステートメントはフィールドをテキストとして更新しようとしましたが、INSERT ステートメントはフィールドを数値として挿入しようとしました。
再編集: コメント
上記に相当する ADO は次のようになります。
conntemp.Execute "UPDATE myTable SET Field1='10', Field2='11' WHERE [Date] = #2013-06-05#", RecordsAffected
If RecordsAffected = 0 Then
conntemp.Execute "INSERT INTO myTable (Field1, Field2) VALUES ('10', '11')"
End If