投稿日 | : 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