C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: VB6 ADO DBのINT型の項目をNULLで更新


(過去ログ 82 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■48838 / inTopicNo.1)  VB6 ADO DBのINT型の項目をNULLで更新
  
□投稿者/ Yuuta (1回)-(2010/04/15(Thu) 11:46:41)

分類:[VB6 以前] 

開発環境

VB6
MS-SQL Server 2000
ADO(Microsoft ActiveX Data Objects 2.6 Library)

ご教授下さい

データベースで、NULLが許可されたINT型の項目を
NULLで更新(UPDATE)するときに、VBではINT型に
NULLを代入する事ができないので困っております


RS:RecordSet
Count:データベースの項目名(int型:NULL許可)
注:AddNewではなく、前もってSelect文でレコードを1件読み込んだ後

RS!Count = IIf(cnt < 0, vbNullChar, cnt)
RS.Update

イメージとしては、こんな感じで行いたいのですが…
データベースはクライアント元の物なので
こちらで変更する事ができません

よろしくお願いします

引用返信 編集キー/
■48892 / inTopicNo.2)  Re[1]: VB6 ADO DBのINT型の項目をNULLで更新
□投稿者/ 魔界の仮面弁士 (1623回)-(2010/04/15(Thu) 21:17:11)
2010/04/15(Thu) 21:27:00 編集(投稿者)

No48838 (Yuuta さん) に返信
> RS!Count = IIf(cnt < 0, vbNullChar, cnt)
vbNullChar は「Chr(0)」を意味する『文字列』なので、今回は使えません。
使うとすれば Null でしょう。

VB6 には似たような名前のキーワードとして
 (1) Empty
 (2) Null
 (3) vbNull
 (4) vbNullChar
 (5) vbNullString
などがありますが、それぞれ意味が異なるので注意してください。


それと、RS!Count の記述は避けた方が良いかと。
多少冗長的になりますが、代わりに、
 RS.Collect("Count") = 〜
 RS.Fields("Count").Value = 〜
などの構文を使ってみてください。

# なお上記は、「!」を使うのが悪いという意味ではなく、
# ADODB.Field 型に対して値を代入すべきでは無いという意味です。
引用返信 編集キー/
■48921 / inTopicNo.3)  Re[2]: VB6 ADO DBのINT型の項目をNULLで更新
□投稿者/ Yuuta (3回)-(2010/04/16(Fri) 13:01:43)

魔界の仮面弁士様、初めまして
無事、下記の書式でNullを代入する事ができました

RS.Fields("Count").Value = IIf(cnt < 0, Null, cnt)

どうも、ありがとうございました

これからは、RSに値を代入するときは
今回のような明確な書式に修正して行こうかと思います

始めは、NullとしてvbNullを使用したのですが
値に1が入ってしまい、次にvbNullString→vbNullCharと
試した次第です

Nullと同意の定義、こんなにあったんですね
また、普通にNullが使えるとは思いよりませんでした

回答や貴重なアドバイス、ありがとうございました

解決済み
引用返信 編集キー/
■48922 / inTopicNo.4)  Re[3]: VB6 ADO DBのINT型の項目をNULLで更新
□投稿者/ 魔界の仮面弁士 (1626回)-(2010/04/16(Fri) 15:34:13)
No48921 (Yuuta さん) に返信
> 始めは、NullとしてvbNullを使用したのですが
> 値に1が入ってしまい、次にvbNullString→vbNullCharと
> 試した次第です

一応補足。

http://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200504/05040116.txt
解決済み
引用返信 編集キー/
■48943 / inTopicNo.5)  Re[4]: VB6 ADO DBのINT型の項目をNULLで更新
□投稿者/ Yuuta (4回)-(2010/04/17(Sat) 10:09:10)
追加情報ありがとうございます

バリアント型等の変数により、間口の広いサブルーチンや
クラスが作れるようになった昨今
後からソースを見た人が分かりやすいように
こう言った記述をしっかりと使い分けてプログラム
して行きたいですね

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -