- - PR -
2つの条件をクリアする if 文を作成しています。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-11-26 07:43
よろしくお願いします。
VB.NETで1つのテーブルから検索条件を満たしたレコードがある場合と条件を満たさない場合とで異なる処理をするWebアプリを作成中です。 フォームには、テキストボックスとドロップダウンリスト(DDL)とラベルがそれぞれあり、テキストボックスとDDLはそれぞれ別々のフィールドをDataViewを使い参照することになっています。 現在、以下のような状態です。 ================================================== ' ユーザーが検索条件を入力したかどうかを確認します。 If TextBox1.Text = "" Then Label1.Text = "ご希望のアカウント名を入力してください。" ElseIf ddl.Items(0).Selected Then Label1.Text = "ご希望のドメイン名を入力してください。" Else Dim i As Integer Dim j As Integer i = dv.Find(TextBox1.Text) j = dv2.Find(ddl.SelectedIndex) If i > dv.Table.Rows.Count Or i < 0 And j > dv2.Table.Rows.Count Or j < 0 Then Label1.Text = "ご希望のアカウント名は取得可能です。" Else Label1.Text = "ご希望のアカウント名は取得できません。" End If End If ================================================== 実行してみるとなかなか意図する結果にならず知識を出し尽くしてしまったようです。 ご教授願います。 | ||||
|
投稿日時: 2003-11-26 08:17
> If i > dv.Table.Rows.Count Or i < 0 And
> j > dv2.Table.Rows.Count Or j < 0 Then 優先順位を明確にするために、括弧をつけてみてください。 例: If (i <= 0 And i < dv.Table.Rows.Count) Or (j <= 0 And j < dv2.Table.Rows.Count) Then [ メッセージ編集済み 編集者: なな 編集日時 2003-11-26 08:17 ] | ||||
|
投稿日時: 2003-11-26 08:43
「意図する結果」とは、どのようなものですか? メールアドレスが取得できるかどうかのチェックのようですが、ドメイン名は選択式なんですよね?「メールアドレス」がどのような形式でビューに格納されているのか、不明ですが、「"入力した文字列"@"選択したドメイン"」が、登録されているメールアドレス内にあるかどうか、という1つを検索するだけで良くないですか?つまり、入力が「watashi」で、ドメインが「my.domain.com」とすると、「watashi@my.domain.com」が登録されているかどうかを調べるだけでいいですよね?「watashi@your.domain.com」があっても、別のアドレスになるので、かまわないですよね。 それから、dvとdv2ですが、おそらくDataViewクラスのインスタンスだと思いますが、DataView.Findメソッドの戻り値は「検索対象のインデックス」なので、この戻り値であるiとjが、全ての行の数であるDataTable.Rows.Countよりも大きくなることはありません。また、見つからなかった場合の戻り値はnull(Nothing)なので、単純な数値比較はできません。 また、DataView.Findメソッドの説明を読むと、どうも並べ替えに使用したキー列からしか探さないように思います。つまり、ビューはすでに並べ替えられているものとして、前方からの線形検索のように思います。 |
1