- PR -

Calendarコントロールの日付を取得し色を変えるには。

1
投稿者投稿内容
ひよこ
会議室デビュー日: 2006/01/24
投稿数: 13
投稿日時: 2006-02-09 23:37
こんばんは、いつも拝見させていただいています。この度は質問があり参りました。
件名の通りVS.2003 VB-ASP.NET WebアプリケーションのCalendarコントロールを使いスケジュールのような物を作っています。データベース接続方法はAccessを使っています。Calendarコントロール(名前はcal)とDataGrid(名前はそのまま)を使いデータベースの中にある日付のスケジュールを該当の日付をクリックすると表示するという所までは出来ています。
しかし今のままでは何日に予定が入っているのか、また予定の入っている日はいつなのかと言うのが分からないため予定の入っている日の色を変えたいと考えているのですがうまくいきません。
コードはこのような感じになっています。

コード:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Cal_SelectionChanged _
    (ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles Cal.SelectionChanged

        Dim cal As Calendar = CType(sender, Calendar)
        DispDetail(cal.SelectedDate)
        Dim selectString As String = "SELECT No, Date, memo FROM スケジュール where Date = #" & Me.Cal.SelectedDate.Date.ToShortDateString & "#"


        Dim connectString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                    "Data Source=C:\test\WebDB\スケジュール.mdb"
        Dim da As New OleDbDataAdapter(selectString, connectString)
        Dim ds As New DataSet
        da.Fill(ds)
        Me.Datagrid1.DataSource = ds
        Me.Datagrid1.DataBind()


    End Sub
    Private Sub DispDetail(ByVal SelectedDate As Date)
    End Sub



このままでも日付をクリックすればデータベースの中のDateと一致した日をクリックすればメモの内容が出てきますが予定の入っている日の色が変わりません。
どうすればよいかアドバイスいただけないでしょうか?よろしくお願いいたします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-10 09:02
引用:

ひよこさんの書き込み (2006-02-09 23:37) より:

このままでも日付をクリックすればデータベースの中のDateと一致した日をクリックすればメモの内容が出てきますが予定の入っている日の色が変わりません。
どうすればよいかアドバイスいただけないでしょうか?


ASP.NET Calendar レンダリング で検索する。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ひよこ
会議室デビュー日: 2006/01/24
投稿数: 13
投稿日時: 2006-02-10 10:29
返信ありがとうございます。
これを作りに当たってこのサイトにある
http://www.atmarkit.co.jp/fdotnet/dotnettips/337aspcalendarsel/aspcalendarsel.html
を参考にしてデータベースの接続方法をSQLからOleDbに変えて作っています。
参考にしたサイトの「' 出力する日付で登録されたスケジュール情報が存在するかをチェック」から「' 選択セルが変更されたタイミングで実行」の上までのコードを入れれば日付に色がつくと言うことは分かるのですが肝心なコードの方が分かりません。

コード:
        Dim selectString As String = "SELECT No FROM スケジュール where Date = #" & Me.Cal.SelectedDate.Date.ToShortDateString & "#"



でDateが入っているか調べてこの後どうすればよいのでしょうか?Dateにデータが入っているかどうか調べて入っていたら色を変えると言う流れは分かるのですが記入の仕方がわかりません。
アドバイスいただけないでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-10 10:37
引用:

ひよこさんの書き込み (2006-02-10 10:29) より:

でDateが入っているか調べてこの後どうすればよいのでしょうか?
Dateにデータが入っているかどうか調べて入っていたら色を変えると言う流れは分かるのですが記入の仕方がわかりません。


??? どちらがわからないのですか?
DBMS が違うところからして、データが存在しているかどうかを調べる術の書き方がわからないのでしょうか???

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ひよこ
会議室デビュー日: 2006/01/24
投稿数: 13
投稿日時: 2006-02-10 10:49
引用:

じゃんぬねっとさんの書き込み (2006-02-10 10:37) より:
DBMS が違うところからして、データが存在しているかどうかを調べる術の書き方がわからないのでしょうか???



素早い返信ありがとうございます。
データが存在していたら色を変えるという一文はIf分なので何となく分かるのですが、参考サイトとはデータベースの接続方法が違うためその前の段階のデータが存在しているかどうか調べる術の書き方で悩んでいます。
アドバイスいただけないでしょうか?よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-10 11:13
引用:

ひよこさんの書き込み (2006-02-10 10:49) より:

参考サイトとはデータベースの接続方法が違うためその前の段階のデータが存在しているかどうか調べる術の書き方で悩んでいます。


とはいえ、参考サイトとほとんど一緒になっちゃうわけですが...
Parameters のところですが、ひよこさんのテーブルの構成がわからないので埋めてやってください。

コード:

    Dim hConnection As System.Data.OleDb.OleDbConnection

    Try
        hConnection = New System.Data.OleDb.OleDbConnection("...")
        Dim hCommand As System.Data.OleDb.OleDbCommand

        Try
            Const COMMAND_TEXT As String = ( _
                "SELECT AnyField FROM TableName WHERE DateFields = @Date1" _
            )

            hCommand = New System.Data.OleDb.OleDbCommand(COMMAND_TEXT, hConnection)
            hCommand.Parameters.Add( _
                New System.Data.OleDb.OleDbParameter("@Date1", System.Data.OleDb.OleDbType.[ここにタイプを入れる], [VarChar などであればサイズを入れる]) _
            )
            hCommand.Parameters("@Date1").Value = Me.Cal.SelectedDate

            hConnection.Open()

            Try
                Dim hReader As System.Data.OleDb.OleDbDataReader
            
                Try
                    hReader = hCommand.ExecuteReader()

                    If hReader.HasRow = True Then
                        '/ ここに処理を追加
                    End If
                Finally
                    If Not hReader Is Nothing Then
                        hReader.Close()
                    End If
                End Try
            Finally
                If Not hConnection Is Nothing
                    hConnection.Close()
                End If
            End Try
        Finally
            If Not hCommand Is Nothing Then
                hCommand.Dispose()
            End If
        End Try
    Finally
        If Not hConnection Is Nothing Then
            hConnection.Dispose()
        End If
    End Try


これは、別にこの SQL コマンドでなくてもいいですし、DataReader を使う必要もなかったり。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ひよこ
会議室デビュー日: 2006/01/24
投稿数: 13
投稿日時: 2006-02-10 22:10
PCのトラブルにより返信が遅くなってしまい誠に申し訳ありませんでした。
詳しく教えていただいたおかげで無事に動かすことが出来本当に感謝しています。
この度はありがとうございました、またお世話になることがでてきてしまうかもしれませんがその時はどうかよろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)