Visual Studio 2003で開発を行っています。
データベースを表示させたDataGridのセルをクリックすることでセル内の値を取得。
取得した値で検索を行い、その結果を別フォームのLabelに表示させたいのですが、いき詰まってしまいました。
現在は、DataGridのセルをクリックしてセル内の値を取得することはできましたが別のフォームへ値を渡す方法がわかりません。
以下FORM1でDataGridのセルをクリックした際の処理です
Private Sub DataGrid1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseUp
Dim c As DataGridCell = DataGrid1.CurrentCell
Dim confirm As New confirm
'クリックされたセルの値を取得します。
Dim rno As Integer = c.RowNumber
Dim cno As Integer = c.ColumnNumber
If cno = 0 Then
confirm.start = DataGrid1(rno, cno)
confirm.plan = DataGrid1(rno, cno + 1)
confirm.important = DataGrid1(rno, cno + 2)
confirm.remainder = DataGrid1(rno, cno + 3)
ElseIf cno = 1 Then
confirm.start = DataGrid1(rno, cno - 1)
confirm.plan = DataGrid1(rno, cno)
confirm.important = DataGrid1(rno, cno + 1)
confirm.remainder = DataGrid1(rno, cno + 2)
ElseIf cno = 2 Then
confirm.start = DataGrid1(rno, cno - 2)
confirm.plan = DataGrid1(rno, cno - 1)
confirm.important = DataGrid1(rno, cno)
confirm.remainder = DataGrid1(rno, cno + 1)
ElseIf cno = 3 Then
confirm.start = DataGrid1(rno, cno - 3)
confirm.plan = DataGrid1(rno, cno - 2)
confirm.important = DataGrid1(rno, cno - 1)
confirm.remainder = DataGrid1(rno, cno)
End If
MessageBox.Show("")
End Sub
MessageBox.Show("confirm.Function名()")
で、クラスで値を使用することはできるのですが
クラスではなくフォームで値を使用したい場合はどのようにすればよいのでしょうか?
フォームもクラスですので、同様の方法で値を設定することができます。
>MessageBox.Show("confirm.Function名()")
>で、クラスで値を使用することはできるのですが
それだとクラスの関数の戻り値ではなく、書いてある
そのままの文字列『confirm.Function名()』が表示
されるはずですが?
特攻隊長まるるう様
ご返信ありがとうございます。
>そのままの文字列『confirm.Function名()』が表示されるはずですが?
""は余計ですね。
confirmというフォームにとばしたいので
MessageBox.Show(confirm.dtop())としたところ
無事に値を引き継ぐことができました。
次に、この取得した値を用いて検索を行い、その結果をLabelに表示させたいと考えています。
データベースへの接続はできていますす。
読み呼んだ値をLabelに表示させために以下のコードを作成したのですが
上手くいきません。
よろしくお願いします。
Public Function dtop()
Dim confirm As New confirm
Dim cn As New OleDb.OleDbConnection
Dim cmd As New OleDb.OleDbCommand
Dim rs As OleDb.OleDbDataReader
'データベースへの接続
cn.ConnectionString = "Provider=Microsoft.jet.oledb.4.0;data source=scheduler.mdb"
cn.Open()
cmd = cn.CreateCommand()
cmd.CommandText = "SELECT 予定,内容,日時,時間,分 FROM db WHERE 日時 = '" & start & "' AND 予定 = '" & plan & "' AND 優先度 = '" & important & "'"
'データベースの値を取得
rs = cmd.ExecuteReader()
response = rs.Read()
If response Then
Label9.Text = rs.Item("予定")
Label6.Text = rs.Item("内容")
Label8.Text = rs.Item("日時")
Label7.Text = rs.Item("時間")
Label10.Text = rs.Item("分")
'readlabel = "予定: " & response1 & Environment.NewLine & "内容: " & response2
cn.Close()
Else
response = "該当するデータがありません"
cn.Close()
'Return response
End If
MessageBox.Show("エラーが発生しました")
End Function
>上手くいきません。
では分かりません。
ステップ実行して何がどううまくいってないか確認してください。
特攻隊長まるるう様
説明不足で申し訳ございませんでした。
DataGridのセルをクリックすると
「エラーが発生しました」と表示されてしまいます。
MessageBox.Show("エラーが発生しました")をコメントアウトし
ブレークポイントをつけて実行してみたところ、
Label9.Text = rs.Item("予定")
Label6.Text = rs.Item("内容")
Label8.Text = rs.Item("日時")
Label7.Text = rs.Item("時間")
Label10.Text = rs.Item("分")
Label9.Text = rs.Item("予定")でエラーが発生し
追加情報 : 指定されたキャストは有効ではありません。
となってしまいます。
データが NULL なのでは?
特攻隊長まるるう様
きちんと中身が入っていることを確認しました。
>Label9.Text = rs.Item("予定")でエラーが発生し
>追加情報 : 指定されたキャストは有効ではありません。
>となってしまいます。
rs.Item("予定").ToString
としてもエラーになりますか?
特攻隊長まるるう様 matsu様
お力添えのおかげで無事に表示させることができました。
ありがとうございました。
特攻隊長まるるう様 matsu様
お力添えのおかげで無事に表示させることができました。
ありがとうございました。
ツイート | ![]() |