フォーム間で値の受け渡しを行うには??

解決


ぼず  2008-02-07 01:50:17  No: 138876

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名()")
で、クラスで値を使用することはできるのですが
クラスではなくフォームで値を使用したい場合はどのようにすればよいのでしょうか?


特攻隊長まるるう  2008-02-07 03:19:38  No: 138877

フォームもクラスですので、同様の方法で値を設定することができます。

>MessageBox.Show("confirm.Function名()")
>で、クラスで値を使用することはできるのですが
それだとクラスの関数の戻り値ではなく、書いてある
そのままの文字列『confirm.Function名()』が表示
されるはずですが?


ぼず  2008-02-08 02:38:50  No: 138878

特攻隊長まるるう様
ご返信ありがとうございます。

>そのままの文字列『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


特攻隊長まるるう  2008-02-08 20:25:22  No: 138879

>上手くいきません。
では分かりません。
ステップ実行して何がどううまくいってないか確認してください。


ぼず  2008-02-08 20:55:39  No: 138880

特攻隊長まるるう様

説明不足で申し訳ございませんでした。

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("予定")でエラーが発生し
追加情報 : 指定されたキャストは有効ではありません。
となってしまいます。


特攻隊長まるるう  2008-02-09 03:22:58  No: 138881

データが NULL なのでは?


ぼす  2008-02-10 09:21:50  No: 138882

特攻隊長まるるう様
きちんと中身が入っていることを確認しました。


matsu  2008-02-11 20:45:08  No: 138883

>Label9.Text = rs.Item("予定")でエラーが発生し
>追加情報 : 指定されたキャストは有効ではありません。
>となってしまいます。

rs.Item("予定").ToString
としてもエラーになりますか?


ぼず  2008-02-12 01:16:23  No: 138884

特攻隊長まるるう様  matsu様

お力添えのおかげで無事に表示させることができました。
ありがとうございました。


ぼず  2008-02-12 01:16:28  No: 138885

特攻隊長まるるう様  matsu様

お力添えのおかげで無事に表示させることができました。
ありがとうございました。


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




  


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