- - PR -
Calendarコントロールについて。
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-01-24 20:50
いつもとても参考にさせてもらっています。
開発環境はWin2000 VS.NET2003 VB ASP.NET Webアプリケーションです。 こちらのサイトで公開されている http://www.atmarkit.co.jp/fdotnet/dotnettips/337aspcalendarsel/aspcalendarsel.html についてお尋ねします。こちらはSQL Serverを使って行っている処理だと思いますがこれと同等に近い機能でサーバーエクスプローラー上のSQL Serverを使わずにAccessのデータベースを使って作りたいと考えています。 AccessのデータベースをWebアプリケーション上に接続(?)する方法などは調べて分かりましたが肝心な全体のコードが分かりません。 どこかにこの条件のCalendar機能の作成方法などはありませんでしょうか? 助言の方よろしくお願いいたします。 | ||||
|
投稿日時: 2006-01-25 00:03
MDB にはどのようにして接続しますか?
oledb を使用して接続するなら下の URL を見てもらえばわかりますが SQLServer と Access だと記述がかなり似通っています。 http://support.microsoft.com/default.aspx?scid=kb;ja;311021 | ||||
|
投稿日時: 2006-01-25 12:06
返信が遅くなり申し訳ありません。
MDBはoledbを使って接続するやり方です。 Web.configの下のほうに下記のような記入をし <appSettings> <add key="conStringAccSc"value="PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=C:\フォルダ名\Accessファイル名.mdb" /> </appSettings> のようにしています。 本コード中からは ・・・前略・・・ mdtCustomers = CreateDataTable("EXECUTE クエリ名") Dim dc As DataColumn = 項目名.項目("ID") ・・・中略・・・ Private Function CreateDataSet(ByVal strQuery As String, _ Optional ByVal strConnectionString As String = "conStringAccSc") As DataSet Dim con As New OleDbConnection(ConfigurationSettings.AppSettings(strConnectionString)) Dim da As New OleDbDataAdapter(strQuery, con) Dim ds As New DataSet da.Fill(ds) Return ds End Function ・・・以下略・・・ このように呼び出そうと考えています。 接続の方法はわかるのですがSQL Serverを使わずにAccessを使って http://www.atmarkit.co.jp/fdotnet/dotnettips/337aspcalendarsel/aspcalendarsel.html のような機能を実装したいと考えています。 どこかにこの条件のCalendar機能の作成方法などはありませんでしょうか? 助言の方よろしくお願いいたします。 | ||||
|
投稿日時: 2006-01-25 12:59
SqlConnectionをOleDbConnection
SqlCommand をOleDbCommand と書き換えるだけでいいんじゃないですか? (もちろん使用する名前空間と、接続文字列は修正する必要がある)。 | ||||
|
投稿日時: 2006-01-25 21:17
返信ありがとうございます。
SqlConnectionをOleDbConnection SqlCommand をOleDbCommand に書き換えてやってみましたがうまくいきませんでした。その際に接続文字列は変更しました。 今まで行った事を整理してみます。 開発環境はWin2000 VS.NET2003 VB ASP.NET Webアプリケーションです。 接続の方法はoledbを使うやり方です。 ・Cドライブ直下にtestというフォルダを作り仮想ディレクトリも設定。 ・「test」フォルダの中にVB ASP.NET Webアプリケーションの新規プロジェクト作成。 ・「test」フォルダの中にWebDBというフォルダを作りその中にAccessで「Sc.mdb」というファイルを作成。 ・「Sc.mdb」の中のテーブル名は「scd」でフィールド名に「sid(主キー)」・「title」・「sDate」・「sTime」・「eTime」・「memo」を作成。 ・Web.configに下記の内容を追加 <appSettings> <add key="conStringAccSc" value="PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=C:\\test\\WebDB\\Sc.mdb" /> </appSettings> ・http://www.atmarkit.co.jp/fdotnet/dotnettips/337aspcalendarsel/aspcalendarsel.html のサイトにあるコードの(VB.NET版:calendar_desc_vb.aspx)をWebForm1.aspxのデザイン上に貼り付け。 ・SqlConnectionをOleDbConnection ・SqlCommand をOleDbCommandに置換。 ここまでは間違っていないと思うのですがこの後が問題のようです。 どこをどう変えたらよいかアドバイスいただけないでしょうか? よろしくお願いいたします。 | ||||
|
投稿日時: 2006-01-25 21:41
サンプルを切って貼って、置換してもそう動きませんよね
SqlClient と OLDDB のコードの違いをしっかりと把握しましょう google で「mdb asp.net oledb 」などで検索すると ASP.NET から OLEDB を使用して MDB から レコードを引っ張るような例が たくさん出てくると思うのでまず、MDB から レコードを検索するところから 勉強されたほうがいいかも知れませんよ。 これなんかも参考になるかも [HOWTO] ASP.NET、ADO.NET、および Visual Basic .NET を使用して Access データベースからレコードを取得して表示する方法 http://support.microsoft.com/default.aspx?scid=kb;ja;308278 | ||||
|
投稿日時: 2006-01-26 02:23
素早い返信ありがとうございました。教えていただいた
http://support.microsoft.com/default.aspx?scid=kb;ja;308278 サイトを見てOLEDBを使ってMDBを取得するのを学び直し途中ま作ることが出来ましたが行き詰まってしまいました。 最初はWeb.configを使った方法でやると言いましたが少し変更して以下の方法を使わせてもらいました。 http://www.atmarkit.co.jp/fdotnet/dotnettips/337aspcalendarsel/aspcalendarsel.html のサンプルのままだとフォームとコードビハインドが一つになっていてより複雑だったので今回は別々の形で作ってみました。早速ですがコードの方を記入いたします。 ***WebForm1.aspx*** <%@ Page Language="vb" AutoEventWireup="false" Codebehind="DateSample.aspx.vb" Inherits="test.DateSample"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>DateSample</title> <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body> <form id="Form1" method="post" runat="server"> <asp:Calendar id="Calendar1" runat="server" BorderWidth="1px" BackColor="#FFFFCC" Width="220px" DayNameFormat="FirstLetter" ForeColor="#663399" Height="200px" Font-Size="8pt" Font-Names="Verdana" BorderColor="#FFCC66" ShowGridLines="True"> <TodayDayStyle ForeColor="White" BackColor="#FFCC66"></TodayDayStyle> <SelectorStyle BackColor="#FFCC66"></SelectorStyle> <NextPrevStyle Font-Size="9pt" ForeColor="#FFFFCC"></NextPrevStyle> <DayHeaderStyle Height="1px" BackColor="#FFCC66"></DayHeaderStyle> <SelectedDayStyle Font-Bold="True" BackColor="#CCCCFF"></SelectedDayStyle> <TitleStyle Font-Size="9pt" Font-Bold="True" ForeColor="#FFFFCC" BackColor="#990000"></TitleStyle> <OtherMonthDayStyle ForeColor="#CC9966"></OtherMonthDayStyle> </asp:Calendar> <asp:Table id="DisplayTable" runat="server"></asp:Table> </form> </body> </HTML> ***WebForm1.aspx.vb*** Imports System.Data.OleDb Public Class DateSample 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 Calendar1 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 Dim connectString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\\\\\\\\test\\\\\\\\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 AccessファイルはC直下のtestというフォルダの中のWebDBというフォルダの中にあるスケジュール.mdbというファイルでテーブル名「スケジュールデータ」です。フィールドは ナンバー(主キー) タイトル 日付 開始 終了 メモ のようになっています。 現在はカレンダー表の下にデータベースに入っている全てのスケジュールが一覧表示されている状態です。 スケジュールに入っている日付データを元にカレンダーの該当の日付をクリックしたらその日の内容のスケジュールを表示する処理はどうしたらよいのでしょうか? 長くなりましたが是非アドバイスお願いいたします。 | ||||
|
投稿日時: 2006-01-26 09:58
たとえば選択された日付を元に詳細データを検索したいのであれば
SelectedDate の値を元に データベースに再問い合わせしてください
[ メッセージ編集済み 編集者: かるあ 編集日時 2006-01-26 18:45 ] |