• ベストアンサー

AccessでNULLのデータを判断する方法

ご指導、宜しくお願い致します。 Accessを経由してPostgresのデータベースへ データをインポートしていきたいのですが、 Accessから抽出したデータが空白か空白ではないのかを 判断させたいのですが、以下のように記述しているのですが、正しく判断されないようです。 どのように記述すればよいのでしょうか??? ---------------------------------------- SQL="SELECT 単価,フラグ FROM AAA_TBL" Set RS = Conn.Execute(SQL) IF RS(0) = NULL THEN  RESPONSE.WRITE "空白" ELSE  RESPONSE.WRITE "単価" END IF IF RS(1) = NULL THEN  RESPONSE.WRITE "空白" ELSE  RESPONSE.WRITE "フラグ" END IF ---------------------------------------- Accessdb:AAA_TBL フィールド名/データ型 単価/INT4 フラグ/varchar

質問者が選んだベストアンサー

  • ベストアンサー
  • guruguru2
  • ベストアンサー率29% (39/132)
回答No.1

こんにちわ。 Null判定は、IsNull関数を使って行います。 IF IsNull(RS(0)) = TrueTHEN  RESPONSE.WRITE "空白" ELSE  RESPONSE.WRITE "単価" END IF ↑こんな感じに。 ヘルプにも載っていますので詳しくは参照してみてください。

MMM-SRV
質問者

お礼

guruguru2様 ありがとうございます!! 関数を使ってあげればよかったんですね。 参考になりました。 今後とも宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • puzou
  • ベストアンサー率35% (102/284)
回答No.4

こんばんは。 席をはずしておりました。 >NULLと「ゼロバイトの空白文字列」はどのように使い分けるものなのですか? ===== 使い分け、という観点ではないかもしれませんが、 Null=レコードが作られてからまだ一回もデータが入っていない。 ""=何かデータが入ったことはあるが、削除された。 という違いがあります。 私の知ってる限り、MSSQLやORACLEにはこの概念(空白文字)はありません。 プログラムが煩雑になるだけであまり使い分けメリットは思い浮かびません…。 (強いて言うなら入力用テンポラリーのテーブルで、入力があったのかどうかの判別とか???) >また、SELECTでデータを抽出した場合に、データがNULLなのか空白文字列なのかを判断する方法はあるのでしょうか? ===== No3の方がされているように、やるしかないですねぇ。 せいぜい、1つのIF文にまとめるぐらいですか。。。 ■パターン1 IF IsNull(RS(1)) = True or RS(1)="" Then   strDate="Nullか空白" ELSE   strDate=RS(1) END IF ■パターン2 IF IsNull(RS(1)) = True Then   strDate="Null" ELSEIF RS(1)="" Then   strDate="空白" ELSE   strDate=RS(1) END IF

MMM-SRV
質問者

お礼

puzou様 回答ありがとうございました。 特別、データを扱う上で注意しなければいけないわけではなさそうですね。 参考になりました。今後とも宜しくお願い致します。

全文を見る
すると、全ての回答が全文表示されます。
  • guruguru2
  • ベストアンサー率29% (39/132)
回答No.3

こんにちわ。 >SELECTでデータを抽出した場合に、データがNULLなのか空白文字列なのかを判断する方法はあるのでしょうか? この方法は、 IF IsNull(RS(1)) = True THEN strDate="Nullです" ELSE IF RS(1) = "" THEN strDate="空白文字列です" ELSE strDate=RS(1) END IF END IF とするしかないかもです。

MMM-SRV
質問者

お礼

guruguru2様 回答ありがとうございました。 参考にさせていただきます。

全文を見る
すると、全ての回答が全文表示されます。
  • puzou
  • ベストアンサー率35% (102/284)
回答No.2

こんにちは。 私もNo1さんが回答されている方法と同じです。 Accessには、Nullのほかに 「ゼロバイトの空白文字列」という概念がありますので そちらも判定するといいと思います。 (Nullのフィールドに何かを入れて削除した場合はコレになります) 判定の仕方は、 IF RS(0) = "" Then … です。

MMM-SRV
質問者

お礼

puzou様 ありがとうございます。 >「ゼロバイトの空白文字列」という概念がありますので >そちらも判定するといいと思います。 そうだったんですね。勉強になります。 もう少し教えてください。 NULLと「ゼロバイトの空白文字列」について・・・ NULLと「ゼロバイトの空白文字列」はどのように使い分けるものなのですか? また、SELECTでデータを抽出した場合に、データがNULLなのか空白文字列なのかを判断する方法はあるのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • AccessVBA NULLについて

    いつもお世話になっております。 AccessVBAでコーディングを始めたのですが、 NULLの判定で分からない点がでてきました。 データベースより If rs.Fields(0) = Null Then Else 区分 = rs.Fields(0) End If この場合、rs.Fields(0)の中身がNULLの場合は rs.Fields(0)のデータを入れるとエラーになるので ELSEで逃がしたいのですが、 中身のデータがNULLにもかかわらずELSEの方を通ってしまいます。 If rs.Fields(0) Is Null Then Else シール = rs.Fields(0) End If こちらかとも思いましたが、オブジェクトが必要とエラーが返ってきました。 NULLをIF分で判定したい場合どのような記述を行えばよいでしょうか。 どうぞよろしくお願い致します。

  • 空文字列の判断方法

    お世話になっています。 空文字列を判断させる方法について教えて下さい。 下記のように、If分を作成しています。 ============================== If rs("USER") = "" Then Response.write "有効" Else Response.write "無効" End If ============================== これだと、空文字列をうまく判断してくれず、結果がすべて"無効"になってしまいます。rs("DEL_FLAG") = ""をrs("DEL_FLAG") = Nullにしても駄目でした。 空文字列を判断させるには、どのように記述したらよいでしょうか? どうしても空文字列を判断させる必要があります。 よろしくお願い致します。

  • EXCELのVBA NULL、スペースの判断

    EXCEL2000を使用しています. 入力データはテキストファイルで VBAで 空白値のを読み飛ばししたい為 if mid(da_i,1,1) <> " " then goto aa end if で判断していますが、空白データが読み飛ばしできません. (null値ではありません) どのようにすればよいのでしょう? また、null値の場合の読み飛ばしは if mid(da_i,1,1) <> "" then goto bb end if でよいのでしょうか?

  • スプレッドシートのnull表示

    win2000、vb6.0、スレッドシート3.0(文化オリエント)を使用しています。 1レコードの中から特定のフィールドだけスプレッドシートに表示し、更新できるようにしたいと考えています。 'ここまでで、レコードセットrsに1レコードセット。 Set SPR_Test.DataSource = rs SPR_TEST.col = 1 SPR_TEST.DataField = "data1" SPR_TEST.col = 2 SPR_TEST.DataField = "data2 ※上記でスプレッドシートにDBから数値型のデータを読み込んで表示しているのですが、nullのレコードが 0 で表示されています。 回避する為に、 SPR_TEST.col = 1 If IsNull(rs.Fields("data1")) Then   SPR_TEST.DataField = "" Else   SPR_TEST.DataField = "data1" End If SPR_TEST.col = 2 If IsNull(rs.Fields("data2")) Then   SPR_TEST.DataField = "" Else   SPR_TEST.DataField = "data2" End If と変更したのですが、今度はdata1,data2共にNullの場合、全くフィールドを指定していないので、他のフィールド全部表示してしまいます。 Nullは空白のまま表示したいのですが、方法はあるのでしょうか?

  • Access VBAで int型にnullを入れる方法について

     Access で作ったテーブルの数値型のフィールド「金額」にnullを入れたいと思い、四苦八苦しています。  以下のソースを書いたのですが、値には「0」が入ってしまい、nullが挿入されません。 Dim a As Long Dim SQL1 As String If IsNull(Me.摘要_会員番号) = True Then IsNull (a) Else a = Me.摘要_会員番号 End If SQL1 = "UPDATE 個人情報入金 SET 個人情報入金.金額 = " & a & ";" DoCmd.RunSQL SQL1  その他、a=null や、a=''をやってみたのですがこれでは入らず、String型ではないので、スペースも入りません。  nullで無くても、目で見てデータが見えない状態であればいいのですが、そのようにupdateをかける方法をしっている方、是非ご教授をお願いします。

  • データコンボのNullについて

    何度もすいませんm(__)m データコンボで 値が選択されてない場合は nullをデータベースに格納したいんですが、 できません。nullの使い方が不正です。と出ます。 教えてください。 VB6を使ってますデータベースはMySQLです。 Dim id As Integer If Me.DataCombo1.Text = "" Then id = Null Else id = Me.DataCombo1.SelectedItem End If datacombo1はInteger型のデータを データベースに格納します

  • Access Nullの評価について

    お世話になります。 Access2010 フォームを作成しました。 「登録」ボタンが押されたら、フォーム上の値の変更有無をチェックし 変更がなければ何もせず、変更があった場合のみ該当レコードを更新 します。 そこで質問ですが、  If Me.AAA = Me.BK_AAA And Me.BBB = Me.BK_BBB And Me.CCC = Me.BK_CCC Then    '変更が無ければ何もしない  Else    該当レコードにAAA~CCCの値を上書き  End If としておりますが、例えばMe.CCCとMe.BK_CCCにそれぞれNullが 入っている場合、Elseになってしまいます。 ※M.BK_CCCは変更前の値が入っている 恐らく、  If Me.AAA & "@" = Me.BK_AAA & "@" ・・・ のように文字をくっつけて評価させればよいかと思うのですが、 そもそもNullの場合は、イコールで評価出来ないのでしょうか。 ご教示の程、宜しくお願い致します。

  • 【エクセル】ActiveCellはなぜNullではないのでしょうか?

    私は今まで新規のシートを挿入した際のActiveCellは、Nullだと思っていたのですが Sub Empty空白なら() If ActiveCell.Value = Empty Then Debug.Print "空白セルです" End Sub Sub Null空白なら() If ActiveCell.Value = Null Then Debug.Print "空白セルです" End Sub Sub Null空白なら2() If IsNull(ActiveCell.Value) = True Then Debug.Print "空白セルです" End Sub VBAでこのコードを実行すると Emptyの方だけ「空白セルです」となりました。 (1)なぜ空白でもNullだと反応しないのでしょうか? (2)NullとEmptyの違いはなんですか? ご教授よろしくお願い致します。

  • レコードセットのループ処理でエラー・・・

    簡単なことだと思うのですが、解決できなくこまっております。お助けください。 以下のコーディングで、データの取得は出来ているのですが、「Do Until rs1.EOF」でエラーとなります。 SOURCE----------------------------------------- sql = "Select No from t01" Recordset.Open sql, dbc, 3 If rs1.EOF Then Response.Write "データナシ<BR>" ←表示されません。 else Do Until rs1.EOF ←この行でエラーとなります。 Response.Write "No=" & rs1("No").Value rs1.MoveNext Loop end if Error-------------------------------------------- ADODB.Field (0x80020009) BOF と EOF のいずれかが True になっているか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。 因みに、Do Untilを使用せず  Response.Write "No=" & rs1("No").Value  rs1.MoveNext  Response.Write "No=" & rs1("No").Value と記述すると正常にデータが表示されます。 「Do Until rs1.EOF」で発生するエラーの回避方法を御教示願います。

  • Access2000のデータをASPで表示させるには?

    間違ってソースを全部消してしまって、記憶を頼りに戻してみたのですが、Accessのデータの表示方法がわからなくなってしまいました。 ↓これがそのソースです <%@ LANGUAGE="VBScript" %> <% Option Explicit %> <Html> <Head> </Head> <Body> <% Dim db,rs,sql Set db = Server.CreateObject("ADODB.Connection") db.Open ("db1")←データベース名入れるんですよね? sql = "Select id,namae,n_yomigana,juusyo,j_yomigana From table1 where db1" Set rs = db.Execute (sql) Response.Write rs.fields("id") Response.Write "<br>" Response.Write rs.fields("namae") Response.Write "<br>" Response.Write rs.fields("n_yomigana") Response.Write "<br>" Response.Write rs.fields("juusyo") Response.Write "<br>" Response.Write rs.fields("j_yomigana") Response.Write "<br>" rs.close db.close %> </Body> </Html> ソースを丸ごと載せてしまってごめんなさい、読みにくいですよね。 足りないところや直し方が思い出せなくて困っています。 ご迷惑おかけしますが、アドバイスお願いします。

このQ&Aのポイント
  • ワード2013を開いたときにテンプレートが表示されないという問題が発生しています。
  • 富士通FMVを使用している場合に特に多く報告されています。
  • 解決策を見つけるために、以下の手順を試してみてください。
回答を見る

専門家に質問してみよう