アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして。
学生でVBを使用しているのですが、どうしても分からない所があるので教えてください。
言葉足らずな部分があると思いますが、よろしくお願いします。

VisualBasic2010を使用しています。

私が作成したい機能は、
1、テキストボックスとコンボボックスで必要な情報を記入・選択
2、登録ボタンを押して登録
3、登録した内容がデータグリッドビューに表示される(削除・変更も可能)
4、分析ボタンを押すとコンボボックスの内容の数をかぞえる

私がつまずいている部分は4の「分析機能」です。

分析を押すと、数は表示されるようになりましたが
全て「0」が表示されてしまいます。
データグリッドビューの内容を検索して数をかぞえる方法が分からなくて
困っています・・。

つまずいている部分のコードを載せておきます。
どうぞお力を貸してください。


----------------------------------------------------------

Private Sub bunnseki_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bunnseki_Button.Click
'数の宣言
Dim ACount As Double = 0
Dim BCount As Double = 0
Dim CCount As Double = 0
Dim DCount As Double = 0
Dim FCount As Double = 0

'個数をカウント
For i As Integer = 0 To listTask.Count - 1
'オブジェクトを取り出す
Dim selectedTask As Task = listTask(DataGridViewTask.Rows(i).Index)
'タスクデータを取り出す
selectedTask.GetData(TextBox.Text, A_ComboBox.Text, B_ComboBox.Text)


If A_ComboBox.Text = "A" Then
ACount += 1
ElseIf A_ComboBox.Text = "B" Then
BCount += 1
ElseIf A_ComboBox.Text = "C" Then
CCount += 1
ElseIf A_ComboBox.Text = "D" Then
DCount += 1
ElseIf A_ComboBox.Text = "F" Then
FCount += 1

End If

Next

'項目の数を表示
A_Label.Text = ACount.ToString
B_Label.Text = BCount.ToString
C_Label.Text = CCount.ToString
D_Label.Text = DCount.ToString
F_Label.Text = FCount.ToString

End Sub

A 回答 (3件)

こんにちは。




サンプルプログラム↓
※実行する前にボタン、コンボボックス型の列をもつDataGridViewを配置してください。

Private Sub 分析ボタン_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 分析ボタン.Click

Try
'コンボボックスにAが設定されているレコード件数を表示
MsgBox("Aの合計=" & カウント("A").ToString)

'コンボボックスにBが設定されているレコード件数を表示
MsgBox("Bの合計=" & カウント("B").ToString)

Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace, MsgBoxStyle.Critical)
End Try
End Sub

Private Function カウント(ByVal in_検索値 As String) As Integer
'変数宣言
Dim コンボボックス選択値 As String = String.Empty

Try
'カウンター初期化
カウント = 0

For intRowCnt As Integer = 0 To Me.DataGridView1.Rows.Count - 1
'コンボボックスの値選択値を取得
コンボボックス選択値 = DataGridView1.Rows(intRowCnt).Cells(0).Value

If in_検索値.Equals(コンボボックス選択値) = True Then
'カウンタ更新
カウント += 1
End If
Next

Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace, MsgBoxStyle.Critical)
End Try
    • good
    • 0

こんにちは。



下の図のようなイメージだと、下記のコードで取得できます。

サンプルプログラム↓
※実行する前に、ボタンとコンボボックス型の列をもつDataGridViewを配置してください。

Private Sub 分析ボタン_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 分析ボタン.Click

Try
'コンボボックスにAが設定されているレコード件数を表示
MsgBox("Aの合計=" & カウント("A").ToString)

'コンボボックスにBが設定されているレコード件数を表示
MsgBox("Bの合計=" & カウント("B").ToString)

Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace, MsgBoxStyle.Critical)
End Try
End Sub

Private Function カウント(ByVal in_検索値 As String) As Integer
'変数宣言
Dim コンボボックス選択値 As String = String.Empty

Try
'カウンター初期化
カウント = 0

For intRowCnt As Integer = 0 To Me.DataGridView1.Rows.Count - 1
'コンボボックスの値選択値を取得
コンボボックス選択値 = DataGridView1.Rows(intRowCnt).Cells(0).Value

If in_検索値.Equals(コンボボックス選択値) = True Then
'カウンタ更新
カウント += 1
End If
Next

Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace, MsgBoxStyle.Critical)
End Try
    • good
    • 0

疑問点




>1、テキストボックスとコンボボックスで必要な情報を記入・選択
コントロールのテキストボックス、コンボボックス?
DataGridView上のテキストボックス、コンボボックス?


>4、分析ボタンを押すとコンボボックスの内容の数をかぞえる
1と同件
コントロールのテキストボックス、コンボボックス?
DataGridView上のテキストボックス、コンボボックス?

処理を見た感じ、コントロールのテキストボックス、コンボボックスのようではありますが。


>'オブジェクトを取り出す
>Dim selectedTask As Task = listTask(DataGridViewTask.Rows(i).Index)
>'タスクデータを取り出す
>selectedTask.GetData(TextBox.Text, A_ComboBox.Text, B_ComboBox.Text)


listTaskメソッドはどのような動きをする処理ですか?





さて本題ですが、わかっている事象から処理をさかのぼっていけば、直し方がわからなくても、落ちている箇所までは特定できるかと思います。

>全て「0」が表示されてしまいます。

とある以上、A_ComboBox.Textの値はA~Fのいずれの値でもない。

または、下記処理でバグがあり判定が行えていない。

>'オブジェクトを取り出す
>Dim selectedTask As Task = listTask(DataGridViewTask.Rows(i).Index)
>'タスクデータを取り出す
>selectedTask.GetData(TextBox.Text, A_ComboBox.Text, B_ComboBox.Text)


可能性があります。

オブジェクト取り出し処理とタスクデータ取り出し処理で不具合があるか、使い方を間違っているかのような気がします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!