• 締切済み

Accessへ日付をINSERT

今Access2000のテーブルから文字として受け取ったデータを 同じくAccessの別テーブルの日付型にINSERTしようとしています。 ソフトはVC6.0を使用しています。 受け取るSELECTはうまくできています。 UCHAR sqlstr [ ] ="INSERT INTO テーブル名"           "(カラム1、カラム2、カラム3)"           "VALUES(?,?,?)"; INSERTはこのようにSQL文を用意しておいてSQLExecuteで SQL文を実行しようとしています。 この場合にカラム1が日付型だとしたら、 「?」のパラメータには文字として渡し、 SQL文のなかで "VALUES(to_date(?,'YYYYMMDD'),?,?)"; とすればうまくいくと思ったのですができません。 いろいろサイトを見るとAccessでは「’」ではなく「#」を使うと 書いてあったので to_date(?,#YYYYMMDD#) とやったのですがエラーになってしまいます。 ちなみにパラメータとして渡す文字列は「20020413」という 8桁の普通の文字です。 どなたか知っている方いませんでしょうか? 他に方法があればそれでも構いません。 どうか教えてください。m(__)m どうしても先へ進めません…。

みんなの回答

  • zzzzzz
  • ベストアンサー率61% (70/113)
回答No.2

後はVC側で文字列のフォーマットを変えれば良いですね。 memcpy()、lstrcpyn()あたりで文字列を切り出して、'/'やNULLは自分でセットすればできますし、 フォーマットが単純なのでwsprintf()を使用しても簡単です。 桁数固定のため、日付部分に適当な文字を入れたSQL文の文字列を作成しておき、後から該当部分に値をセットする、という方法でもできます。 Access側で日付入力のフォーマットを変更することは、クエリレベルではできないと思います。

  • zzzzzz
  • ベストアンサー率61% (70/113)
回答No.1

Accessにto_date()は無かったと思います。Oracle固有だったような... AccessのSQL文の中で日付を渡したいときには、 VALUES (#YYYY/MM/DD#, ....) のように記述します。この例では VALUES (#2002/04/13#, ....) です。 なお、YYYYは必ず4桁で出力してください。 参考URL欄には長すぎて記入できなかったため、こちらに書きます。 http://support.microsoft.com/default.aspx?scid=%2Fisapi%2Fgomscom%2Easp%3Ftarget%3D%2Fjapan%2Fsupport%2Fkb%2Farticles%2Fj054%2F8%2F94%2Easp&LN=JA

yoro
質問者

補足

実際にソースにベタで「20020413」とは書けないのです。 SELECTした文字列データをAというような変数が保持しているため その変数Aを日付型のカラムにINSERTしたいのです。 他にやり方はありませんでしょうか?

関連するQ&A