おはようございます。検索結果をデータグリッドに表示するのに、条件と合う結果がないとき”見つかりませんでした”のエラーメッセージを表示したいのですが、データグリッド=Nullみたいな構文はあるでしょうか?テキストボックスなら””だけど”データグリッドに何も無い”の表現方法教えてください。宜しくお願いします。
検索がHitしなければ
msgbox "見つかりませんでした"←詳しくはヘルプを
で一応はメッセージが表示されますが・・・
[VB.NET]なら Item で取れるんだけど = Null とか
書いてるから[VB6.0]の話ですよねぇ?取れたかなぁ?
データグリッドは表示をするだけのコントロールだと
思ってます。デフォルトの設定でやってみましたが
Null も "" も "" になるみたいです。(Text が
String 型なので Null は入らないと思います)
もしかしたら何か方法があるかもしれませんが、
DataSource に設定しているオブジェクトの方で
検索すれば取れると思います。
がつさん、特攻隊長まるるうさんお返事どうもありがとうございました。
説明不足ですみません。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も英語版を使っています。
よろしくお願いします。
データグリッドの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 で判断することになります。テーブルを複数表示する必要がありますか?。無いなら
データテーブルを取り出したほうが扱いやすいと思いますよ?。
特攻隊長まるるうさん、返信どうもありがとうございます。
早速試してみます。
ツイート | ![]() |