• 締切済み
  • すぐに回答を!

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

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数2612
  • ありがとう数1

みんなの回答

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

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

共感・感謝の気持ちを伝えよう!

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

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

関連するQ&A

  • ACCESS SQLのINSERTについて

    TBLというテーブルにINSERT文を使用して1行レコードを追加したいです。TBLテーブルのカラムAにはシステム日付を、カラムBには別テーブルのselect count(*)の実行結果を挿入したいのですがうまくいきません。何か良い方法はございませんでしょうか? INSERT INTO カウンタ統計 ( [DATE], USER_COUNT ) VALUES (date(), (SELECT COUNT(*) FROM hiplus_HW_USER)); ※日付は問題なく挿入できるのですがSELECT文の結果が挿入できない状況です。宜しくお願いします.

  • [ADO.NET]Accessの日付型にデータをInsertするには?

    言語はVB.NETでDBはAccess2003、OleDbで接続をしています。 テーブルに日付型のフィールドがあるのですが、 SQL文でInsertしようとすると、 System.Data.OleDb.OleDbException: 更新可能なクエリであることが必要です。 という例外がスローされます。 SQL文としては、 INSERT INTO TEST_TABLE (name,updatetime) VALUES ('テスト',DateValue('2006/12/11 18:00:00')); というような構文になっています。 初歩的な不明点ですが、ご教授お願いします。

  • INSERTできません

    以下のSQL文でテーブルに追加したいのですが、実行すると 実行中のメッセージがでたまま動かなくなってしまいます。 他のテーブルで同じようなINSERT文を実行すると追加できるので SQL文の間違いではないと思うのですが、原因がわかりません。 どなたか教えてください。 INSERT INTO table (CODE_A, CODE_B, SAISYUU_KOUSIN_DATE) values('9999', '999999', TO_DATE('2005/11/0716:15:14','YYYY/MM/DD HH24:MI:SS'));

  • AccessでInsertした際に前ゼロをつけたい

    AccessのバージョンはAccess2007です。 テーブル(TBL_A)のカラム(COL_A2)はテキスト型、桁数が3文字で、 下記のようなInsert文でTBL_Aにレコードを登録しようとしています INSERT INTO (COL_A1, COL_A2) TBL_A VALUES('000000001', '1'); このとき、COL_A2に登録される値を'1'ではなく'001'としたいのですが、 INSERT文自体を修正することができません。 ACCESSのTBL_Aの書式等を変更することは可能なのですが、 前ゼロをつけて登録することはできるのでしょうか。

  • INSERT INTOに関しまして。

    $sql = "INSERT INTO テーブル名(name,day,kg)VALUES('','$day','-1')"; 現在このようなSQL文でINSERTしていますが、データベース内にあるカラムname全てに対してINSERTするにはどうすれば良いでしょうか??現在のSQL文ではそれができず、nameが空欄の状態で更新されてしまいます。

    • ベストアンサー
    • PHP
  • ACCESSでのINSERTについて

    ACCESSで以下のコマンドがエラーになってしまったのですが、 何か問題がありますでしょうか? INSERT INTO tbl_TREE (TEXT, DATE) VALUES ('ああ'     ,TO_DATE('2007/01/121:57:27',YYYY/MM/DDHH24:HH24MI:SS')) よろしくお願いいたします。

  • 日付型カラムへのデータINSERT

    お世話になります。ひとつご教授ください。 オラクル10g, ojdbc14でjdk1.4.2から接続です。 INSERT命令を使ってテーブルにレコードを追加する際に、DATE型のカラムに対して INSERT TABLE_A (DATE1, ...) VALUES ('2006-4-27 12:00:00', ...); を実行するとエラーORA-01861が出ます。そこで INSERT TABLE_A (DATE1, ...) VALUES ('2006-4-27', ...); このように記述して再度実行すると通ります。 このようなとき、時間の部分まで設定した値をカラムに格納したいときはどうしたらよろしいでしょうか? よろしくお願いします。

  • VBAのAccessでDATE型のINSERT

    テーブルに今日の日付でインサートしたいのですが、なぜか、まったく違う日付になってしまいます。 わかる方教えてください。 よろしくお願いします。 INSSQL = "INSERT INTO aaa(test)" _ & " Values(" & Format   (Date, "yyyy/mm/dd") & ");"

  • mysqlでdate型のカラムに今日から1年分の日付を挿入するSQLは

    mysqlでdate型のカラムに今日から1年分の日付を挿入するSQLは書けますでしょうか ・テーブル  T_TEMP ・カラム  M_DATE (DATE型) ・SQL  insert into T_TEMP (select ???); 以上、よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • 入力値と外部キーをINSERTするには

    追加したいカラムが3つあるとしまして、そのうち2つはフォームからの入力値で、残り1つは別テーブルのIDをWHEREで引っ張ってきてINSERTしたい場合、INSERT...VALUES()とINSERT...SELECT構文を組み合わせないとダメかと思うのですが、組み合わせるとうまくいきません。2つの文に分けるしかないのでしょうか? やりたいことは下の感じのSQLです。が、解釈してくれません。 INSERT INTO room(A, B, C) VALUES (1, 2, SELECT other_table.id FROM other_table WHERE other_table.id = 1");

    • ベストアンサー
    • MySQL