こんにちは、初めて投稿させていただきます。
どうぞよろしくお願いします。
VBにDate型の変数がありますが、初期値に"0:00:00"が
入っています。この変数になにも値が入らなかった場合は、
空文字(長さ 0 の文字列)の状態にしたいのですが、
そのようなことは可能でしょうか?
また、AccessとVBの連携もしているのですが、Accessの
日付時間型のフィールドに空文字をInsert
することはできるのでしょうか。
型が一致しません、というエラーが出てしまい困っております。(もしACCESSの質問は対象外ならすいません)
初歩的な質問で恐縮ですが、どうぞよろしくお願いいたします。
> VBにDate型の変数がありますが、初期値に"0:00:00"が
> 入っています。この変数になにも値が入らなかった場合は、
> 空文字(長さ 0 の文字列)の状態にしたいのですが、
> そのようなことは可能でしょうか?
無理です。
Date 型である以上、日時しか入れることはできません。
> また、AccessとVBの連携もしているのですが、Accessの
> 日付時間型のフィールドに空文字をInsertすることはできるのでしょうか。
無理です。
ただ、 Null を Insert できるようにすることは出来ます。
> 型が一致しません、というエラーが出てしまい困っております。
当然ですね。
lll様、回答ありがとうございます。
ためしにNULLをAccessの日付時間型のフィールドにInsertしてみたのですが、
やはりデータ型が一致しないというエラーが出てしまいます。
アクセスのフィールドデザインは
値要求 いいえ
インデックス いいえ
としているのですが、NULL値を許可するような設定も見当たらなかったので
そのままにしております。
NULLについて勉強中ですが、もしご存知でしたらご教授のほどよろしく
お願いいたします。
> ためしにNULLをAccessの日付時間型のフィールドにInsertしてみたのですが、
> やはりデータ型が一致しないというエラーが出てしまいます。
insert into TABLE1 (FIELD_DATE) values (null)
という感じのクエリですよ。
もしかして、前後に ' をつけていませんか?
lllさん、ありがとうございます。
前後に’はつけていません。
SQL文の中身
insert into TABLE名(ID,S_DATE)VALUES(7,)
のようになっています。
しかし、INSERT INTOのステートメント構文エラーと
でてしまいます。(すいません、エラーメッセージ
違っていました)
ちなみに、ACCESSへの接続はADOです
VBはVB6 SP6
ACCESSはACCESS2000を使用しております。
何度も恐縮ですが、もしおわかりになりましたら、どうぞ
よろしくお願いします。
『VALUES(7,)』では、文字通り、構文エラーになりますよね。
lllさんの回答にもあったように、『NULL』というキーワードを使って、
『VALUES(7,NULL)』という構文に変更してみてください。
こんにちは。
ただ単純なSQL文の間違いだと思いますよ。
NULLをINSERTしたいならきちんとNULLと宣言してあげないと駄目です。
なので、みきさんが書かれているSQL文
insert into TABLE名(ID,S_DATE)VALUES(7,)
ではなくて
insert into TABLE名(ID,S_DATE)VALUES(7,NULL)
が正しい書き方です。
lllさん、魔界の仮面弁士さん ありがとうございます。
2つ前の私の文章は表現が適切ではありませんでした。
SQL文として投げていた内容は
strSql = "INSERT INTO TABLE名(ID,S_DATE)VALUES(" & intID & "," & Null & ")"
でした。
(ちなみにintIDはInteger型の変数です)
つまり、NULLも変数扱いをしてダブルコーテーションの外に
書いていました。
NULLをダブルコーテーションの中に書くことでエラーがなくなりました。
ありがとうございました。
あと、もしご存知でしたら、
NULLを変数のように、ダブルコーテーションの外に書く方法が
ありましたら、教えてください。
必ずしもNULLが入るとは限らないので、どのような値がはいっても
対応できるSQLが書きたいのです。
何度も申し訳ありませんが、よろしくお願いします。
SQL文自体は文字列なので、文字列変数の中に『NULL』と入れておけば良いんじゃないですか?
> strSql = "INSERT INTO TABLE名(ID,S_DATE)VALUES(" & intID & "," & Null & ")"
> でした。
> (ちなみにintIDはInteger型の変数です)
そういう場合は、Format関数が利用できるかも知れません。
例えば、Variant型変数 V があったとして、
S = Format(V, "@;NULL")
といったコードを書けば、
V = Null の時は、S = "NULL"
V = "TEST"の時は、S = "TEST"
V = "123" の時は、S = "123"
V = 123 の時は、S = "123"
V = -345 の時は、S = "-345"
V = 0 の時は、S = "0"
などと変換されます。
こんにちは、ご回答くださったnanashiさん、魔界の仮面弁士さん
ありがとうございました。お返事遅くなってしまい申し訳ありません。
文字列変数はDate型だったので、NULLを入れることが出来なかったのですが、
SQL文作成するのに、String型の文字列を条件分岐で後付けしていく方法をとり、
NULLも固定値として実装しました。
時間に余裕が出来ましたら、魔界の仮面弁士さんが紹介してくださった
Format関数を是非ためし、報告したいと思います。
どうもありがとうございました。
ツイート | ![]() |