Access VBA、SQLで文字列→日付→再度文字列に変換したいのですがうまくいきません。 下記のエラーが出ているコードは文字列→日付の箇所です。

ベストアンサー

0

>mySql = mySql & " SET 納品日 = DateADD("d", 1, CDate(Format(登録日, ''yyyy\/mm\/dd'')))" を mySql = mySql & " SET 納品日 = Format(DateAdd('d',1,CDate(Format([登録日],'@@@@\/@@\/@@'))),'yyyymmdd')" で試してみてください。 @は&0#のどれかでも大丈夫だと思います。

その他の回答(2件)

0

自分がやるとしたら テーブルに[納品日]が不要なら 普通の選択クエリで Format([登録日],"0000\/00\/00") AS 登録日D と IIf(IsDate([登録日D]),CDate([登録日D])+1,Null) AS 納品日 をクエリのフィールドに追加します。 [登録日]が日付の書式に準じてない時は[納品日]をNullにしています。 VBAで取り扱うSQL文字列にするなら "SELECT *, Format([登録日],'0000\/00\/00') AS 登録日D, IIf(IsDate([登録日D]),CDate([登録日D])+1,Null) AS 納品日 FROM Tab_A" でしょうか。

0

この課題はわざわざ納品日(Date型)経由しなくても 直接登録日を更新(+1日)する事ができます。 つまり ----------------------------------------------- mySql = "UPDATE Tab_A" mySql = mySql & " SET 納品日 = DateADD("d", 1, CDate(Format(登録日, ''yyyy\/mm\/dd'')))" を mySql = "update Tab_A set [登録日] = format(dateadd('d',1,format([登録日],'####\/##\/##')),'YYYYMMDD')" に変更 SQL文は自分の環境で実行して確認したので大丈夫だと思う ---------------------------------------------------------- つまり DateADDで折角、更新(+1日)した日付を作ったので それをformatで文字列変換して格納すればいい という考えです。 なお 貴方のコードを見て気を付けた方がいいと思った事を少々 ・SQL文内で文字列は基本的に’(シングルコーテーション)で囲む ・VBAコード上の文字列内で"(ダブルコーテーション)を使う場合は "(ダブルコーテーション)を2個書かないとそこまでの文字列になってしまう。 ....示されているコードはエラーがでなかった? ・これは環境によるかもしれませんが AccessのSQL文では漢字のフィールド名は[](鍵括弧)で囲まないとエラーになる 因みに、自分の環境は ・MS Access(製品)は持って(入って)いない ・Windows標準に装備されているAccessドライバー(?)を ADO(質問者さんの場合はDAO?)で使用 ・OSはWindows10 Home

この返信は削除されました