- - PR -
Access2000
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-06-28 23:36
VB6でアクセスから取得したデータ(A,B,C,D)を別のテーブルにINSERTしたいのですが。
INSERT INTO table SELECT a,b,c,d, FROM table_b でBは、数値型でbは、日付型です。 Cdate(b)とやるとオーバーフローします。データ型を変換してINSERT INTO 〜 SELECTの使い方のヒントなど頂けたらと思います。 |
|
投稿日時: 2004-06-29 03:29
こんにちは
> VB6でアクセスから取得したデータ(A,B,C,D)を別のテーブルに > INSERTしたいのですが。 > INSERT INTO table SELECT a,b,c,d, FROM table_b でBは、 > 数値型でbは、日付型です。 おしゃられていることが矛盾しているように思えます。 INSERT INTO SELECT はデータを直接テーブルからテーブルへ 挿入する機能です。 1データずつ処理をするのであればINSERT INTO VALUES を 使うことになります。 提示されているINSERT文ではtable_bのa,b,c,d列の("d,"で 終わっているのは単なるタイプミスですよね)データをすべて tableに挿入します。 このとき各列の順番とtableの挿入先の列の順番が一致している 必要があります。列名をみて挿入しているのではなく 列の順番どおりに挿入するからです。 さて、オーバーフローの件ですが実際に確認したわけではないので 確かではないですが ・table_bのbにNullが混ざっている ・値が大きすぎて日付変換の範囲を超えているとか ・INSERT INTO table のあとに挿入先の列を指定していないため 違う型の列に挿入しようとしている などの原因が考えられませんか。 [ メッセージ編集済み 編集者: べーちゃん 編集日時 2004-06-29 03:31 ] [ メッセージ編集済み 編集者: べーちゃん 編集日時 2004-06-29 03:35 ] |
|
投稿日時: 2004-06-29 23:43
こんばんわ、返信ありがとうございます。説明が足りなかったです。すいません。フィールドの1つがデータ型が異なるだけで、他は同じです。それをINSERT INTO 〜 SELECT 〜で
一致するデータを一括でINSERTしようとしています。INSERT INTO table SELEDT a,FORMAT(b,"yyyy/mm/dd"),c,d FROM table_b WHERE 〜 で b は、数値型のフィールドです。これで実行しても、オーバーフローします。 |
|
投稿日時: 2004-06-30 09:14
日付型に変換しようとしている数値 b には具体的にどのような値が入っているのですか?
|
|
投稿日時: 2004-07-01 03:18
具体的な解決策として次の方法をとってみたらどうですか。
1.INSERT INTO table SELEDT a,FORMAT(b,"yyyy/mm/dd"),c,d FROM table_b WHERE 〜 とあるうちのSelect以下のクエリを実行してみる。 もしエラーがでれば、列bの値お確認してみる。 Null、マイナスの値、やたら大きな値は要注意です。 2.もしエラーがでなければ、tableに挿入するときにエラーになっているので テーブルの列順が正しいかなどを確認してみる。 |
|
投稿日時: 2006-10-11 15:27
型変換
|
1