0

私のテーブルを更新し、列に日付を入れる SQL 関数を使用したいのですが、大文字と小文字を使用して更新関数を使用していますが、演算子が欠落しているというエラーが発生します。

エラーが見つからないのですが、どこにあるか知っていますか?

Public Function Add_date( _
                        ByVal startDate As String, _
                        ByVal strTableName As String, _
                        ByVal strFieldName As String, _
                        ByVal strNummeringField As String) _
                        As Boolean

Dim strSql As String
    strSql = "ALTER TABLE " & strTableName & " ADD " & strFieldName & " date"
    DoCmd.RunSQL strSql
    strSql = "UPDATE " & strTableName & " SET " & strFieldName & " = CASE WHEN " & strNummeringField & " < 25 THEN '23-07-1991' ELSE '01-01-01' END"
    MsgBox strSql
    DoCmd.RunSQL strSql


End Function
4

2 に答える 2

1

Jet/ACE (MS Access データベース エンジン) は、CASE...WHEN をサポートしていません。三項演算に相当するのは IIF (immediate if) です。また、日付の区切り文字は#であり、 ではありません'。代わりにこれを試してください:

strSql = " UPDATE " & strTableName & _
         " SET " & strFieldName & " = " & _
         "     IIf(" & strNummeringField & " < 25, #23-07-1991#, #01-01-01#)"

また、地域の設定に関係なく、日付を DD-MM-YYYY にフォーマットすると問題が発生する場合があります。詳細については、Accessの国際日付を参照してください。

于 2012-12-28T20:52:40.603 に答える
0

1 つの可能性は、テーブルと列の名前を表す文字列に無効な文字が含まれていることです。それらを角括弧で囲んでみてください。

strSql = "ALTER TABLE [" & strTableName & "] ADD [" & strFieldName & "] date"
DoCmd.RunSQL strSql
strSql = "UPDATE [" & strTableName & "] SET [" & strFieldName & "] = CASE WHEN [" & strNummeringField & "] < 25 THEN '23-07-1991' ELSE '01-01-01' END"
于 2012-12-28T19:39:36.147 に答える