閲覧総計:6491  (本日:1  昨日:0)

 カレンダの「日付」をクリックした時の処理事例として、DBへのINSERT(挿入)を行ってみた。

 カレンダの日付をクリックするだけで、その日の昼食弁当の予約がMS-AccessDBへINSERT
され、DBへ保存された情報がすぐにカレンダに表示され確認出来るものである。  10/08/10

カレンダで弁当注文画面60.jpg

【ポイント】
 AccessDataSourceコントロールを利用せずにプログラムから直接DBにアクセスし、
SQLのINSERT(挿入)コマンドでデータをDBに挿入する。

' INSERT(挿入)クエリの作成
Dim comm As DbCommand = factory.CreateCommand()
comm.CommandText = "INSERT INTO [注文テーブル] ([名前], [日付], [商品]) VALUES ('山田 太郎', @CalDate, '日替わり弁当')"
comm.Connection = db

'選択の日付セルの日付情報を取得
Dim param As DbParameter = factory.CreateParameter()
param.ParameterName = "@CalDate"
param.Value = cal.SelectedDate.ToString("yyyy/MM/dd")
comm.Parameters.Add(param)

'クエリの実行(INSERTクエリの場合は結果セットを返さないExecuteNonQuery)
db.Open()
comm.ExecuteNonQuery()

開発環境:VWD2008 + Access2003 + SQL Server2008
サーバ:ASP.NET3.5 + Access2003

【機能】 カレンダの日付をクリックするだけで、その日の昼食弁当の予約がMS-AccessDBへINSERT
され、DBへ保存された情報がすぐにカレンダに表示され確認出来る。

【稼働画面】

ac弁当注文テーブル.jpg
カレンダで弁当注文画面60.jpg

【acOrderCalInsert.aspx】

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data.Common" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    'MS-AccessDBのConnectionString
    Dim MyDbConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\AccessDB.mdb;Persist Security Info=True"
    'MS-AccessDBのProviderName
    Dim MyDbProviderName As String = "System.Data.OleDb"
     
    ' カレンダのそれぞれの日付セルをレンダリングするタイミングで実行
    Sub cal_DayRender(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DayRenderEventArgs)
        
        Dim setting As ConnectionStringSettings = _
          ConfigurationManager.ConnectionStrings(MyDbConnectionString)
        Dim factory As DbProviderFactory = _
          DbProviderFactories.GetFactory(MyDbProviderName)
        
        Using db As DbConnection = factory.CreateConnection()
            db.ConnectionString = MyDbConnectionString
            
            ' 出力する日付セルに対応するスケジュール情報を抽出
            Dim comm As DbCommand = factory.CreateCommand()
            comm.CommandText = "SELECT [ID],[名前],[日付],[商品] FROM [注文テーブル] WHERE [日付]=@CalDate"
            comm.Connection = db
            
            Dim param As DbParameter = factory.CreateParameter()
            param.ParameterName = "@CalDate"
            param.Value = e.Day.Date.ToString("yyyy/MM/dd")
            comm.Parameters.Add(param)
            
            db.Open()
            Dim reade As DbDataReader = comm.ExecuteReader()

            ' 各日の注文した昼食弁当情報を日付セル(e.Call)配下のコントロールとして追加
            Do While reade.Read()
                e.Cell.Controls.Add(New LiteralControl("<br />" & reade.GetString(3)))
            Loop
        End Using
    End Sub

    ' カレンダの日付セルの選択が変更されたタイミングで実行
    Protected Sub cal_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        
        Dim setting As ConnectionStringSettings = _
          ConfigurationManager.ConnectionStrings(MyDbConnectionString)
        Dim factory As DbProviderFactory = _
          DbProviderFactories.GetFactory(MyDbProviderName)
        
        Using db As DbConnection = factory.CreateConnection()
            db.ConnectionString = MyDbConnectionString
            
            ' INSERT(挿入)クエリの作成
            Dim comm As DbCommand = factory.CreateCommand()
            comm.CommandText = "INSERT INTO [注文テーブル] ([名前], [日付], [商品]) VALUES ('山田 太郎', @CalDate, '日替わり弁当')"
            comm.Connection = db
            
            '選択の日付セルの日付情報を取得
            Dim param As DbParameter = factory.CreateParameter()
            param.ParameterName = "@CalDate"
            param.Value = cal.SelectedDate.ToString("yyyy/MM/dd")
            comm.Parameters.Add(param)
      
            'クエリの実行(INSERTクエリの場合は結果セットを返さないExecuteNonQuery)
            db.Open()
            comm.ExecuteNonQuery()

        End Using
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        弁当注文内容をカレンダに表示&日付クリックで簡単弁当注文  10/08/10<br />
        <br />
        <asp:Calendar ID="cal" runat="server" onDayRender="cal_DayRender" OnSelectionChanged="cal_SelectionChanged">
        </asp:Calendar>
        <br />
    
    </div>
    </form>
</body>
</html>

【参考にしたページ】
   なし


選択肢 投票
参考になった 0  
ふつう 0  
参考にならなかった 0  

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS