Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
ListBox→修正ボタン→Form2
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=9652#CommentId14867
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
Norimasa
 (学生)
投稿日時
2010/5/31 18:25:33
こんにちわ。Norimasaです。
先日はありがとうございました。VBとDB間の読み書きはできるようになりました。
今はDetaSetを勉強していますが、どうしても分からない所があり、またお伺いさせていただきました。
環境:XP-pro/VB2005/SQLServer2005
前回と同じでScheduleList管理システムを作っています。
画面は左右で割ると
左側に、
---------------------------------------------------------------------
MonthCalendar、
日にちを表すStartDateTextBox/開始時間を表すDomainUpDown
/終了時間を表すDomainUpDown
件名を入力するSubjectTextBox
内容を入力するContentsTextBox
登録ボタン
右側に、
-----------------------------------------------------------
スケジュールを表示するshortscheduleListBox
修正ボタン/削除ボタン
となっております。
日にち時間、件名、内容を記入して登録ボタンを押すと、shortscheduleListBoxに表示され、同時にDBも書き込まれるようになっています。
shortscheduleListBoxに表示されるのは
開始時間~終了時間 件名 内容
です。
カレンダーをクリックするとDBからその日の日付の予定をshortscheduleListBoxに表示できるようにしました。
修正ボタンを押すと別のフォームUpdateFormへ行き、修正専用の画面が出るようにしています。(まだ画面が出るだけの状態です)
修正画面は本画面の左側と同じでカレンダーがないバージョンです。
・今回分からない部分というのは、
カレンダーをクリックしListBox上にデータを表示させ、そのデータを仮に
16:00~17:00 第1回(件名) 会議(内容)
としたとき、選択肢し修正ボタンをクリックしたら、修正画面になり、
修正画面
------------------------------------------------------------------
日にちTextBox:2010/05/31 / 開始時刻Text:16:00
/終了時刻Text:17:00
件名TextBox:第1回
内容TextBox:会議
---------------------------------------------------------------------
と表示されている状態にしたいです。
現状のコードは、
Private Sub RefreshListBox()
Dim Connection As New SqlConnection()
Dim Command As New SqlCommand()
Dim DataSet As New DataSet("Short")
Dim SQLAdapter As New SqlDataAdapter()
'接続文字列の取得
Connection.ConnectionString = "Data Source=サーバー名;Initial Catalog=ScheduleList;Integrated Security=True"
'コネクションの定義
Command.Connection = Connection
Try
Command.CommandText = "SELECT start + '~' + [end] + ': ' + subject + ' ' + contents as schedule FROM Short WHERE startdate = '" & startdate & "'"
'データを取得する
SQLAdapter.SelectCommand = Command
DataSet.Clear()
SQLAdapter.Fill(DataSet)
'リストボックスに列別名scheduleを表示できるようにする。
Me.shortscheduleListBox.DisplayMember = "schedule"
'リストボックスにShortテーブルのデータを連結する。
Me.shortscheduleListBox.DataSource = DataSet.Tables(DataSet.Tables(0).ToString)
Catch ex As Exception
MsgBox("エラー")
End Try
End Sub
これがカレンダーをクリックしたらその日付の予定を表示させるメソッドです。
複数行表示させなければならないのでDataSetを使いました。
Private Sub shortupdateButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles shortupdateButton.Click
Dim UpDateForm As UpdateDate = New UpdateDate()
Dim DataSet As DataSet = DirectCast(Me.shortscheduleListBox.DataSource, DataSet)
Dim Row As DataRow
Dim Value As String
Value = Row("startdate")
UpDateForm.startdateTextBox.Text = Value
UpDateForm.ShowDialog()
これが途中ですが修正ボタンプロシージャになります。
まず、StartDateだけでも修正画面に表示させようと思い中途半端ですが、こんな感じです。
shortscheduleListBoxのDataSourceからDataSetを取得し、startdate列を指定し、UpDateForm(修正画面)のstartTextに代入させ、ShowDialogで開くという風に記述しました。
これだと、行の指定がないからかInvalidCastException 例外がでます。
この先どう記述していいか分からない状態です。
・どうしたいか
選択した予定を修正画面に移して行きたいので、どういった感じで記述するのかを教えていただきたいです。
長文になり、また至らぬ点もあるかもしれませんが、ご指導お願いいたします。