VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2005/02/23(Wed) 16:35
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe^3: MSHFlexGridでのNULL表示について

> > 事前に置き換えておくのではだめですか?
> mdbのデータを書き換える事ですか?

SELECTで取得する時に、
  SELECT IIF(ISNULL(列名), '', 列名)
のような構文にすれば、NULLを空文字に置き換えられます。

> また、下記の様にnullだったら""を表示するIF文を加えてみたのですが、
> rst![*] = Null で、NULLの値を認識してくれません。

こういう時は、IsNull関数(など)を使ってみてください。


> そのまま、Else文を処理してしまいます。
ヘルプをもう一度良く見てみましょう。

ヘルプで[比較演算子]の項を見ると、「式1 = 式2」という比較式においては、
   両者が同一なら、True。
   両者が異なると、False。
   一方が Null だと、Null。
という結果になるという旨が書かれています。

つまり、『If (A = Null) Then』の条件式は、絶対に「真(True) にはならない」のです。
(ヘルプの[If...Then...Else ステートメント]の項も参照してみてください)


あるいは、
    .TextMatrix(i, 0) = "" & rst.Fields("partName").Value
のように、『空文字列 と連結させる』という逃げ方もあります。


もしくは、Nullからの変換関数を独自に用意しておき、
    .TextMatrix(i, 0) = Nz(rst.Fields("partName").Value)
のようなコードにするのも良いかと思います。


たとえば、Access の Nz関数を真似て変換関数を作るなら、こんな感じで。

  Public Function Nz(ByVal Value As Variant, Optional ValueIfNull As Variant) As Variant
    If Not IsNull(Value) Then
      Nz = Value
    ElseIf IsMissing(ValueIfNull) Then
      Nz = Empty
    Else
      Nz = ValueIfNull
    End If
  End Function


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -