みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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
どうしても先へ進めません…。

投稿日時 - 2002-04-13 21:49:19

QNo.252283

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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

Access側で日付入力のフォーマットを変更することは、クエリレベルではできないと思います。

投稿日時 - 2002-04-14 16:31:34

ANo.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

投稿日時 - 2002-04-13 23:27:01

補足

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

他にやり方はありませんでしょうか?

投稿日時 - 2002-04-14 15:31:22

あなたにオススメの質問