| ■No43041 (gtk2k さん) に返信 ■No43042 (たくボン さん) に返信
いつもありがとうございます。 最初の質問で言葉足らずでした...
Dim SQL As String = "SELECT * FROM Table WHERE 日付 BETWEEN #" & ○/○/1 & "# AND #" & ○/○/最終日 & "#" Dim Ds As DataSet = New DataSet("Tabel") Dim Da As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(SQL, Cn) Da.Fill(Ds, "Tabel")
For i = 1日 to コンボボックスで選択した年月の最終日 If Then Dim Drow as DataRow = Ds.Tables("Tabel").Rows(i) 'i日に登録があれば.Rows.Add Me.DataGridView.Rows.Add(Drow.Item("日付"), Drow.Item("スケジュール内容")) Else 'i日に登録がなければスケジュール内容は "" で.Rows.Add Me.DataGridView.Rows.Add(CDate(i), "") End If Next
のように (もう少し条件分岐があるのですが...) カレンダを生成しています。 これは編集する上で、行(日付)単位の追加・削除ができるようにこの手法を使っております。
ですのでデータソースをDataTableにすることもできず、試行錯誤しておりました。
また、表示する際にカレンダーとして見せるために再度コンボボックスで年月度を選択した際、編集中にDataGridViewの行が削除され登録されていても再びDataGridViewには毎回1日〜月最終日までが生成され、登録のある日付にはスケジュール内容が表示されるようになっております。
gtk2k さんの > Select Case row.RowState で判定という具合に今回のケースは簡単に行けそうもなさそうです。
今回は、[登録]ボタンをクリックした際、変更がないのに処理を行うのが無駄だと思い投稿されていただきましが、 毎回登録処理を行って対応しようと思います。
ありがとうございました。 |