- PR -

Calendarコントロールについて。

投稿者投稿内容
ひよこ
会議室デビュー日: 2006/01/24
投稿数: 13
投稿日時: 2006-01-26 16:14
たびたびすみません。
教えていただいたコードに変更してみましたが描画処理だけうまくいきません。
現在のコードは下記のようになっていてエラーも出ませんが日付をクリックしても何も表示されない状態です。


Imports System.Data
Imports System.Data.OleDb
Imports System.Drawing

Public Class WebForm1
Inherits System.Web.UI.Page
#Region " Web フォーム デザイナで生成されたコード "

'この呼び出しは Web フォーム デザイナで必要です。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub
Protected WithEvents DisplayTable As System.Web.UI.WebControls.Table
Protected WithEvents Cal As System.Web.UI.WebControls.Calendar

'メモ : 次のプレースホルダ宣言は Web フォーム デザイナで必要です。
'削除および移動しないでください。
Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
' CODEGEN: このメソッド呼び出しは Web フォーム デザイナで必要です。
' コード エディタを使って変更しないでください。
InitializeComponent()
End Sub

#End Region

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

End Sub

Private Sub Calendar1_SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim cal As Calendar = CType(sender, Calendar)
DispDetail(cal.SelectedDate)
End Sub

Private Sub DispDetail(ByVal SelectedDate As Date)
Dim connectString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Stage7\WebDB\スケジュール.mdb"
Dim cn As OleDbConnection = New OleDbConnection(connectString)
cn.Open()
Dim selectString As String = "SELECT ナンバー, タイトル, 日付, 開始, 終了, メモ FROM スケジュールデータ"
Dim cmd As OleDbCommand = New OleDbCommand(selectString, cn)
Dim reader As OleDbDataReader = cmd.ExecuteReader()
DisplayTable.Width = Unit.Percentage(90.0)
Dim tableHeading As TableRow = New TableRow

Dim customerナンバーHeading As TableHeaderCell = New TableHeaderCell
customerナンバーHeading.Text = "ナンバー"
customerナンバーHeading.HorizontalAlign = HorizontalAlign.Left
tableHeading.Cells.Add(customerナンバーHeading)

Dim customerタイトルHeading As TableHeaderCell = New TableHeaderCell
customerタイトルHeading.Text = "タイトル"
customerタイトルHeading.HorizontalAlign = HorizontalAlign.Left
tableHeading.Cells.Add(customerタイトルHeading)

Dim customer日付Heading As TableHeaderCell = New TableHeaderCell
customer日付Heading.Text = "日付"
customer日付Heading.HorizontalAlign = HorizontalAlign.Left
tableHeading.Cells.Add(customer日付Heading)

Dim customer開始Heading As TableHeaderCell = New TableHeaderCell
customer開始Heading.Text = "開始"
customer開始Heading.HorizontalAlign = HorizontalAlign.Left
tableHeading.Cells.Add(customer開始Heading)

Dim customer終了Heading As TableHeaderCell = New TableHeaderCell
customer終了Heading.Text = "終了"
customer終了Heading.HorizontalAlign = HorizontalAlign.Left
tableHeading.Cells.Add(customer終了Heading)

Dim contactメモHeading As TableHeaderCell = New TableHeaderCell
contactメモHeading.Text = "メモ"
contactメモHeading.HorizontalAlign = HorizontalAlign.Left
tableHeading.Cells.Add(contactメモHeading)

While (reader.Read())
Dim detailsRow As TableRow = New TableRow

Dim customerナンバーCell As TableCell = New TableCell
customerナンバーCell.Text = reader("ナンバー").ToString()
detailsRow.Cells.Add(customerナンバーCell)

Dim customerタイトルCell As TableCell = New TableCell
customerタイトルCell.Text = reader("タイトル").ToString()
detailsRow.Cells.Add(customerタイトルCell)

Dim customer日付Cell As TableCell = New TableCell
customer日付Cell.Text = reader("日付").ToString()
detailsRow.Cells.Add(customer日付Cell)

Dim customer開始Cell As TableCell = New TableCell
customer開始Cell.Text = reader("開始").ToString()
detailsRow.Cells.Add(customer開始Cell)

Dim contact終了Cell As TableCell = New TableCell
contact終了Cell.Text = reader("終了").ToString()
detailsRow.Cells.Add(contact終了Cell)

Dim customerメモCell As TableCell = New TableCell
customerメモCell.Text = reader("メモ").ToString()
detailsRow.Cells.Add(customerメモCell)

DisplayTable.Rows.Add(detailsRow)
End While
reader.Close()
cn.Close()

      ' 画面の描画処理
End Sub

End Class


このような感じになりましたが画面の描画処理の部分だけうまくできていないので表示されません。

申し訳ありませんが描画処理の方法をアドバイスいただけないでしょうか?
ひよこ
会議室デビュー日: 2006/01/24
投稿数: 13
投稿日時: 2006-01-26 16:20
たびたびすみません。
教えていただいたコードに変更してみましたが描画処理だけうまくいきません。
現在のコードは下記のようになっていてエラーも出ませんが日付をクリックしても何も表示されない状態です。


Imports System.Data
Imports System.Data.OleDb
Imports System.Drawing

Public Class WebForm1
Inherits System.Web.UI.Page
#Region " Web フォーム デザイナで生成されたコード "

'この呼び出しは Web フォーム デザイナで必要です。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub
Protected WithEvents DisplayTable As System.Web.UI.WebControls.Table
Protected WithEvents Cal As System.Web.UI.WebControls.Calendar

'メモ : 次のプレースホルダ宣言は Web フォーム デザイナで必要です。
'削除および移動しないでください。
Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
' CODEGEN: このメソッド呼び出しは Web フォーム デザイナで必要です。
' コード エディタを使って変更しないでください。
InitializeComponent()
End Sub

#End Region

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

End Sub

Private Sub Calendar1_SelectionChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim cal As Calendar = CType(sender, Calendar)
DispDetail(cal.SelectedDate)
End Sub

Private Sub DispDetail(ByVal SelectedDate As Date)
Dim connectString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Stage7\WebDB\スケジュール.mdb"
Dim cn As OleDbConnection = New OleDbConnection(connectString)
cn.Open()
Dim selectString As String = "SELECT ナンバー, タイトル, 日付, 開始, 終了, メモ FROM スケジュールデータ"
Dim cmd As OleDbCommand = New OleDbCommand(selectString, cn)
Dim reader As OleDbDataReader = cmd.ExecuteReader()
DisplayTable.Width = Unit.Percentage(90.0)
Dim tableHeading As TableRow = New TableRow

Dim customerナンバーHeading As TableHeaderCell = New TableHeaderCell
customerナンバーHeading.Text = "ナンバー"
customerナンバーHeading.HorizontalAlign = HorizontalAlign.Left
tableHeading.Cells.Add(customerナンバーHeading)

Dim customerタイトルHeading As TableHeaderCell = New TableHeaderCell
customerタイトルHeading.Text = "タイトル"
customerタイトルHeading.HorizontalAlign = HorizontalAlign.Left
tableHeading.Cells.Add(customerタイトルHeading)

Dim customer日付Heading As TableHeaderCell = New TableHeaderCell
customer日付Heading.Text = "日付"
customer日付Heading.HorizontalAlign = HorizontalAlign.Left
tableHeading.Cells.Add(customer日付Heading)

Dim customer開始Heading As TableHeaderCell = New TableHeaderCell
customer開始Heading.Text = "開始"
customer開始Heading.HorizontalAlign = HorizontalAlign.Left
tableHeading.Cells.Add(customer開始Heading)

Dim customer終了Heading As TableHeaderCell = New TableHeaderCell
customer終了Heading.Text = "終了"
customer終了Heading.HorizontalAlign = HorizontalAlign.Left
tableHeading.Cells.Add(customer終了Heading)

Dim contactメモHeading As TableHeaderCell = New TableHeaderCell
contactメモHeading.Text = "メモ"
contactメモHeading.HorizontalAlign = HorizontalAlign.Left
tableHeading.Cells.Add(contactメモHeading)

While (reader.Read())
Dim detailsRow As TableRow = New TableRow

Dim customerナンバーCell As TableCell = New TableCell
customerナンバーCell.Text = reader("ナンバー").ToString()
detailsRow.Cells.Add(customerナンバーCell)

Dim customerタイトルCell As TableCell = New TableCell
customerタイトルCell.Text = reader("タイトル").ToString()
detailsRow.Cells.Add(customerタイトルCell)

Dim customer日付Cell As TableCell = New TableCell
customer日付Cell.Text = reader("日付").ToString()
detailsRow.Cells.Add(customer日付Cell)

Dim customer開始Cell As TableCell = New TableCell
customer開始Cell.Text = reader("開始").ToString()
detailsRow.Cells.Add(customer開始Cell)

Dim contact終了Cell As TableCell = New TableCell
contact終了Cell.Text = reader("終了").ToString()
detailsRow.Cells.Add(contact終了Cell)

Dim customerメモCell As TableCell = New TableCell
customerメモCell.Text = reader("メモ").ToString()
detailsRow.Cells.Add(customerメモCell)

DisplayTable.Rows.Add(detailsRow)
End While
reader.Close()
cn.Close()

      ' 画面の描画処理
End Sub

End Class


このような感じになりましたが画面の描画処理の部分だけうまくできていないので表示されません。

申し訳ありませんが描画処理の方法をアドバイスいただけないでしょうか?
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-01-26 18:44
引用:

教えていただいたコードに変更してみましたが描画処理だけうまくいきません。
現在のコードは下記のようになっていてエラーも出ませんが日付をクリックしても何も表示されない状態です。



イベントが発生してないようですね
SelectionChanged のハンドラが設定されていません

コード:
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) 
End Sub 



#ソースは BBコードを使って [CODE][ /CODE]でくくってください
#全部乗せなくてもいいですよ 見るのも大変です
ひよこ
会議室デビュー日: 2006/01/24
投稿数: 13
投稿日時: 2006-01-26 22:08
教えていただいた通り下記のようにコードを書き換え実行してみましたら初期状態では何もスケジュールが表示されなくなりましたがカレンダーの何日の日付をクリックしても全てのスケジュールが出てきてしまうようになりました。

具体例:データベースの日付が2006/01/12・2006/01/13・2006/01/15の3件分入っていたとしてもカレンダーの全く関係ない2006/01/25日をクリックしても上記の3件のスケジュールが表示されてしまいます。また同様に2006/01/12をクリックしても全てのスケジュールが表示されてしまいます。

これはデータベース検索処理の所が悪いのだと思うのですがどこが悪いのでしょうか?
毎回申し訳ありませんがアドバイスお願いいたします。

コード:

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)
End Sub



#[code][ /code]でくくってみましたが全コードを乗せてから変更したのがこの部分だけなのでこの部分だけでよいでしょうか?

[ メッセージ編集済み 編集者: Da-ku 編集日時 2006-01-26 22:09 ]
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-01-26 22:35
前回提示していただいたソース上では使用していなかったようですが
DispDetail() に cal.SelectedDate を渡しているのはどうしてだと思いますか?
ひよこ
会議室デビュー日: 2006/01/24
投稿数: 13
投稿日時: 2006-01-26 22:52
>DispDetail() に cal.SelectedDate を渡しているのはどうしてだと思いますか?
DispDatail()に必要なスケジュールデータ選択して読み込んできて表示すると言うことでしょうか?
データベースの検索処理が間違っていることは分かるのですがどこをどう修正して良いのか分かりません。毎回申し訳ありませんがアドバイスいただけないでしょうか?よろしくお願いいたします。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-01-27 11:11
Webで検索してみましたか???????



条件を元にデータベースを検索すればいいんですよね
とりあえずはこんな感じで
コード:

Dim selectString As String = "SELECT ナンバー, タイトル, 日付, 開始, 終了, メモ FROM スケジュールデータ where 日付 = " & 検索する値



これが出来たら検索する値を OleDbParameter で置き換える用に
調べてください


[ メッセージ編集済み 編集者: かるあ 編集日時 2006-01-27 11:26 ]
ひよこ
会議室デビュー日: 2006/01/24
投稿数: 13
投稿日時: 2006-01-27 22:20
返信が遅くなり申し訳ありません。
教えていただいたSELECT文を元に色々と調べてやっていくうちにDataGridを使ってやる方法を見つけ正常に動作することが出来ました。

コード:
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 ナンバー, タイトル, 日付, 開始, 終了, メモ FROM スケジュールデータ where 日付 = #" & 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




この度は色々とお手間をかけて申し訳ありませんでした。

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