データグリッド=””の構文

解決


ドキンちゃん  2004-06-01 14:05:39  No: 113615

おはようございます。検索結果をデータグリッドに表示するのに、条件と合う結果がないとき”見つかりませんでした”のエラーメッセージを表示したいのですが、データグリッド=Nullみたいな構文はあるでしょうか?テキストボックスなら””だけど”データグリッドに何も無い”の表現方法教えてください。宜しくお願いします。


がつ  2004-06-01 18:25:27  No: 113616

検索がHitしなければ
msgbox "見つかりませんでした"←詳しくはヘルプを
で一応はメッセージが表示されますが・・・


特攻隊長まるるう  2004-06-01 19:41:48  No: 113617

[VB.NET]なら Item で取れるんだけど = Null とか
書いてるから[VB6.0]の話ですよねぇ?取れたかなぁ?
データグリッドは表示をするだけのコントロールだと
思ってます。デフォルトの設定でやってみましたが
Null も "" も "" になるみたいです。(Text が
String 型なので Null は入らないと思います)

もしかしたら何か方法があるかもしれませんが、
DataSource に設定しているオブジェクトの方で
検索すれば取れると思います。


ドキンちゃん  2004-06-02 06:45:12  No: 113618

がつさん、特攻隊長まるるうさんお返事どうもありがとうございました。
説明不足ですみません。Vb.netを使っています。Itemの構文はどういうのですか?
    Private Sub BtnSearchPaper_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSearchPaper.Click

        Try

            If TxtPaperTitle.Text <> "" Then
                DsReviewSearch1.Clear()
                DaReviewSearch.SelectCommand.CommandText = "SELECT * FROM Paper WHERE Paper_Name = '" & TxtPaperTitle.Text & "'"
                DaReviewSearch.Fill(DsReviewSearch1)
                MsgBox("Query Successful")

            Else
                MsgBox("Please fill any one of information in the form")
            End If

        Catch oleDbExceptionParameter As System.Data.OleDb.OleDbException
            Console.WriteLine(oleDbExceptionParameter.StackTrace)
            MessageBox.Show(oleDbExceptionParameter.ToString)

        Catch invalidOperationExceptionParameter As InvalidOperationException
            MsgBox(invalidOperationExceptionParameter.Message)

        End Try

        If dgdReviewSearchPaper.Text = "" Then MsgBox("no matching record found")

    End Sub

で今やっているのですが、これだと検索結果にかかわらずまず       MsgBox("Query Successful")の後にMsgBox("no matching record found")のメッセージがでます。(Hitがなくても)

まだHelpが使いこなせなくて、なかなかほしい情報にたどりつけません。
ちなみにVBもOSも英語版を使っています。
よろしくお願いします。


特攻隊長まるるう  2004-06-02 18:05:30  No: 113619

データグリッドの1つのセルの値がデータベースの Null 値かどうか判定するのなら
[VB.NET]
        With Me.DataGrid1
            MsgBox(IIf(.Item(.CurrentRowIndex, .CurrentCell.ColumnNumber) Is DBNull.Value, "DBNull", .Item(.CurrentRowIndex, 

.CurrentCell.ColumnNumber)))
        End With

…だけど、ソースを見る限りデータベースの検索結果でレコード数が0の時を判断したいということ?
それは Fill したデータセットを見たらいいんじゃないでしょうか?データテーブルの .Rows.Count
で何行検索できたか分かります。データグリッドに設定した後でも CType でデータセット(データテーブル?)
にキャスト(型変換)してやれば必要な情報を調べることができます。

エラーで Catch された時はテーブルが取れていませんのでデータセットの .Tables.Count が0となります。

…ところでデータセットはデータテーブルを複数抱えることができるので、このままデータセットを
データグリッドの DataSource に設定するとデータセットからデータテーブルを取り出してテーブルの
.Rows.Count で判断することになります。テーブルを複数表示する必要がありますか?。無いなら
データテーブルを取り出したほうが扱いやすいと思いますよ?。


ドキンちゃん  2004-06-03 07:38:31  No: 113620

特攻隊長まるるうさん、返信どうもありがとうございます。
早速試してみます。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加