データがNullの時の回避処理の方法

このQ&Aのポイント
  • データがNullの場合の回避処理についての方法を解説します。
  • Visual StudioのASP.NETで、データベースから特定の値を取得する際に生じるNull値への対処方法について詳しく説明します。
  • データグリッドを使用してデータベースから特定の値を取得する際、NoフィールドがNullの場合のエラー処理について解説します。
回答を見る
  • ベストアンサー

データがNullの時の回避処理の方法。

Visual StudioのASP.NETです。 データグリッドを使って、 データベースから特定の値を持ってくるとき、下の方法でしています。 DataSet11.テーブル名(DataGrid1.SelectedItem.DataSetIndex).No この時、Noフィールドに何もなければNullになります。 それで、エラーになってしまいます。 If IsNull(Datagrid1.selecteditem~~ としても、 「型 'DBNull' から型 'Integer' へのキャストが有効ではありません。」 というエラーになってしまいます。 Nullの場合の回避処理ってどのように書けばよろしいのでしょうか?

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

  • ベストアンサー
  • mo_gu
  • ベストアンサー率51% (56/109)
回答No.1

.NETになってから NULLはDBNULLになりました。 If IsDBNull(Datagrid1.selecteditem~~ としてください。

参考URL:
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vblr7/html/vafctisnull.asp
KOHEI_JAPAN
質問者

お礼

ありがとうございました!!

関連するQ&A

  • (Null)の表示について

    お忙しいところ恐れ入ります。 Microsoft Visual Basic .NET 2003を使っておりますが、初歩的なところでつまずいております。お知恵をお貸し下さい。 SQLserverのDBにDataAdapter、DataSet経由で接続しDataGridで表示させているのですが、DBのカラムでNullの部分が画面上素直に「(Null)」と表示されます。この表示をNullであればカラムには何も表示させたくないのですがどのようにしたら良いのでしょうか? いままでVB6やAccessでは何の苦もなくできていたので、.NETでもどうにかすれば出来ると思っているのですが、その方法が分かりません(^_^;) お手数と存じますがご存じの方のご回答をお願いいたします

  • NULLについて

    NULLについて伺います。 現在、strutsで入力画面にて入力した内容がデータベース(MYSQL)に反映されるWEBアプリケーションを作っているのですが、Column 'title' cannot be nullとコンソールでエラーが出ており、「not nullでテーブルを作り直せばいいのかな」と思い、一旦テーブルを削除してからもう一度作り直したのですが、エラーが変わりません。何かしらご教授頂ければ幸いです。よろしくお願いいたします。下記にテーブル構造と、その下にエラーを貼り付けておきます。(文字数の関係上、エラー全文は貼り付けられませんでした) mysql> desc input; +--------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | text | NO | | NULL | | | movie_url | text | NO | | NULL | | | material_url | text | NO | | NULL | | | explanation | text | NO | | NULL | | +--------------+---------+------+-----+---------+----------------+ com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'title' cannot be null

    • ベストアンサー
    • MySQL
  • insert時に日付のフィールドにnullを入れたい

    テーブルに以下のフィールドがあります。 [No],[区分],[キーNo],[日付] このテーブルに日付のデータのない、以下のようなデータをインサートしたいのですが、 [No],[区分],[キーNo] 1 ,kbn1 , key1 strSQL1 = "INSERT INTO テーブル1" & " ([No],[区分],[キーNo],[日付])" _ & " VALUES ("1","kbn1","key1",NULL )" とするとエラーが出てしまいます。日付フィールドに何も入れないようにinsert文を書くにはどうしたらよいでしょうか。 すみません、アドバイス等宜しくお願いします。

  • ADOでNULLのレコードを抽出したい

    ADOでNULLのレコードを抽出したいのですがうまくできません。 Q全てクエリには、登録日フィールドや登録数フィールドがあります。 登録数フィールドは数値です。 その登録数フィールドがnullのレコードを抽出したいです。 RS.CursorLocation = adUseClient RS.Open "Q全て", cn, adOpenKeyset, adLockOptimistic RS.Sort = "登録日 DESC" RS.Filter = "[登録数] = NULL" RS.Filter = "IsNull(登録数) = True" RS.Filter = "登録数 Is Null" ↑これどれをやってもエラーになります。 対策をお願いします。

  • ASP.NET (VB) データのnull(空白)項目について

    現在、visual web developer 2005 expressで簡単な検索型のwebシステムを構築しています。 DBにはaccessを使用しています。vb.netでコードを記述しているのですが、 データ項目にnull(空白)項目があると"型が一致しません"とのアプリケーション エラーが出てしまいます。 どのように回避すればよいのでしょうか? コードは下記のように記述しています。 ================================================================================================= Private Sub set_data(ByRef d As Data.DataSet, ByVal i As Integer, ByRef txt As TextBox) If Len(d.Tables(0).Rows(0).Item(i)) > 0 Then txt.Text = d.Tables(0).Rows(0).Item(i) End If End Sub ================================================================================================= 上記は最下部に記述し上部にtextboxをフォームと対応させてブラウザで対応項目を表示させています。

  • 「テーブルに主キーがありません。」というエラーが出て困ってます。

    VisualStudioでASP.NETをやってます。初心者です。 データグリッドの削除ボタンを押して行を削除したいのですが、 テーブルに主キーがありません。というエラーが出てしまいます。 テーブルに主キーはあるんですけれども、原因がわかりません。 Dim mytable As DataTable Dim myrow As DataRow Dim key As String SqlDataAdapter1.Fill(DataSet11) key = DataGrid1.DataKeys(e.Item.ItemIndex) mytable = DataSet11.Tables("テーブル名") ↓ここでエラーになるようです。 myrow = mytable.Rows.Find(key) myrow.Delete() ご存知の方いらっしゃいましたら、よろしくお願いします。

  • datetime型でNULL値を入れたい。

    現在SQLserver上で、、CSVを一時テーブルに保管し、ある条件に合致する行のみTBLに追加するというストアドを書いています。そのTBLには「datetime型」の列があります。 この作業で、2点問題が発生しています。 (1)CSVファイルから一時テーブルにデータを入れようとすると、datetime列がNULLの場合、型の不一致でエラーが発生します。 (2)上記において、一時テーブルの型をとりあえずvarcharにしておくと入れれるのですが、TBLに追加しようとする際、「convert(datetime,変数)」としているのですが、上手くキャストしてくれません。(「文字列から日付への変換に失敗しました」のような文がでます) どのようにすれば、NULLでもdatetimeに入れられるのでしょうか?教えてください。

  • <ASP.NET>DataGridでOnSelectedIndexChangedイベントが発生しない。

    こんにちわ。 VS.NET2003でASP.NET+C#で開発をしております。 DataGridコントロールを使用して、選択ボタンを追加し、選択時に処理を行おうと思っているのですが、OnSelectedIndexChangedイベントが発生しません。 ホームページ等にあるソースをそのまま打ち込むと発生するのですが、自分でコントロールを配置するとうまく動いていないようです。 何か設定があるのでしょうか? 一応HTMLレベルではこんな感じで、書いてます。 =WebForm1.aspx================================== <省略> <asp:DataGrid id=DataGrid1 runat="server" OnSelectedIndexChanged="DataGrid1_Select" DataSource="<%# dataSet11 %>" DataKeyField="SYAIN_NO" DataMember="syain" AutoGenerateColumns="False"> <Columns> <asp:BoundColumn DataField="SYAIN_NO" SortExpression="SYAIN_NO" HeaderText="SYAIN_NO"></asp:BoundColumn> <asp:BoundColumn DataField="SYAIN_NAME" SortExpression="SYAIN_NAME" HeaderText="SYAIN_NAME"></asp:BoundColumn> <asp:BoundColumn DataField="ADDRESS" SortExpression="ADDRESS" HeaderText="ADDRESS"></asp:BoundColumn> <asp:BoundColumn DataField="TEL" SortExpression="TEL" HeaderText="TEL"></asp:BoundColumn> <asp:ButtonColumn Text="選択" ButtonType="PushButton" CommandName="select"></asp:ButtonColumn> </Columns> </asp:DataGrid> <省略> =============================================== 選択ボタンを押したら、DataGrid1_Selectに飛ぶはずなのですが、デバッグしても止まりません… どなたかアドバイスお願いします。

  • ADOでNullフィールドの抽出

    VB6.0+ADO2.7で、mdbファイルを扱っています。 .filterプロパティを使ってabcフィールドの値がnullまたは空のテーブルを抽出したく recordset.filter="abc= null or abc=''" としました。この場合は問題ないのですが、更にdefフィールドの条件を追加し recordset.filter="(abc= null or abc='') AND def= 'xyz'" としたところ 「実行時エラー3001 引数が間違った型、許容範囲外、または競合しています。」 というエラーが発生してしまいます。 また、 recordset.filter="abc= null AND def= 'xyz'" 或いは recordset.filter="abc='' AND def= 'xyz'" では問題ありません。 何が悪いのでしょうか? よろしくお願いします。

  • BitフィールドにLOAD DATAできない

    以下の定義のテーブル(Bitフィールドを持つ)にLOAD DATAでデータを 入れようとしているのですがエラーになり困っています。 マニュアルにあるようにSET句を使用してLOADをしようとしているのですが 「You have an error in your SQL syntax;~」と コマンドの4行目のところで出てしまいます。どこがおかしいのでしょうか。 【テーブルの定義】 mysql> desc data; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | key1 | int(11) | NO | PRI | NULL | | | key2 | int(11) | NO | PRI | NULL | | | date | datetime | NO | PRI | NULL | | | flg1 | bit(1) | NO | | b'1' | | +-------+----------+------+-----+---------+-------+ 【CSVファイルの内容】 1,2,"2016-12-17 10:00:00",1 1,2,"2016-12-17 11:00:00",0 【コマンド】 LOAD DATA INFILE 'C:/csv/data.csv' INTO TABLE test.data (key1, key2, date, @var1) SET flg1 = CAST(@var1 AS SIGNED) FIELDS TERMINATED BY ',' ENCLOSED BY '"';

専門家に質問してみよう