プロが教えるわが家の防犯対策術!

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

A 回答 (2件)

後はVC側で文字列のフォーマットを変えれば良いですね。


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

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

Accessにto_date()は無かったと思います。

Oracle固有だったような...
AccessのSQL文の中で日付を渡したいときには、
VALUES (#YYYY/MM/DD#, ....)
のように記述します。この例では
VALUES (#2002/04/13#, ....)
です。

なお、YYYYは必ず4桁で出力してください。
参考URL欄には長すぎて記入できなかったため、こちらに書きます。
http://support.microsoft.com/default.aspx?scid=% …

この回答への補足

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

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

補足日時:2002/04/14 15:31
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!