Excel(*.xls)グラフ付雛形にADOで接続しデータ更新


三流君(TOP) /ASPで遊ぶ /記事一覧 test057-1.asp
ASPからADOを使用してExcel(*.xls)と接続して、
.Updateでレコードを更新する。


発行する(した)SQL文は
Select Format(WriteTime, 'YYYY/MM/DD') AS YYYYMMDD, Count(*) AS CNT From log Where WriteTime >= #2008/09/01# GROUP BY Format(WriteTime, 'YYYY/MM/DD')
です
NO.日付閲覧ページ数
12008/09/01260
22008/09/02270
32008/09/03287
42008/09/04318
52008/09/05269
62008/09/0689
72008/09/07106
82008/09/086

ExcelとのADO接続文字列は
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\users\ken3_org\Cgi-bin\test\test057.xls;Extended Properties=Excel 8.0
です
その次はレコードセット
Select * from [DATA$A1:B9], db, 〜
開いたレコードセットに対して.MoveFirst
ループで配列からフィールド(セル)へセット
rs.Close でレコードセットを閉じる
db.Close でxlsとの接続を閉じる

集計値をtest057.xlsへ書き込みました
[書き込んだtest057.xlsを開く]
↑書き込まれたデータの確認、グラフ付はOKか確認する
↓下記がExcel雛形イメージです。


コーヒーブレイク たまには寄り道、休憩も(↓広告です):
広告:[2009年度カレンダー] ← 人気のカレンダーを紹介
[カレンダー商品一覧] ← そろそろ来年の準備

.Updateを使用したサンプル(ソースの紹介)

詳細解説は[http:/asp/backno/asp057.html]を見てください
下記、/cgi-bin/test/test057-1.aspのソース(中身)です

.Update を 使った ソースコードを紹介する

表示色の説明:ASP VBScriptは <% 〜 %>
キーワードは.Update です。 <%@LANGUAGE=VBScript%> <% Response.CacheControl = "no-cache" %> <% Response.AddHeader "Pragma", "no-cache" %> <% Response.Expires = -1 %> <html> <head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis"> <title>Excel(*.xls)グラフ付雛形にADOで接続しデータ更新</title> </head> <body bgcolor=#ffffff text=#000000> <h1 style="color:black;background-color:#e0ffe0"> Excel(*.xls)グラフ付雛形にADOで接続しデータ更新</h1> <hr> test057-1.asp<br> ASPからADOを使用してExcel(*.xls)と接続して、<br> .Updateでレコードを更新する。<br> <hr> <% '---- CursorTypeEnum Values ---- Const adOpenForwardOnly = 0 Const adOpenKeyset = 1 Const adOpenDynamic = 2 Const adOpenStatic = 3 '---- LockTypeEnum Values ---- Const adLockReadOnly = 1 Const adLockPessimistic = 2 Const adLockOptimistic = 3 Const adLockBatchOptimistic = 4 '---- CursorLocationEnum Values ---- Const adUseServer = 2 Const adUseClient = 3 '配列変数に集計値をまず入れます。 Dim PageCNT(10) '8個でいいんだけど Dim dHIZUKE(10) 'ADO DB Connection オブジェクトを作成する、英文そのままじゃん Set db=Server.CreateObject("ADODB.Connection") 'データアクセスにはJet.OLEDB.4.0を使うことを設定 db.Provider = "Microsoft.Jet.OLEDB.4.0" '接続DBの位置は、Server.MapPathで変換して渡す db.ConnectionString = Server.MapPath("cnt.mdb") db.open 'やっとデータベースを開ける 'FORMAT関数を使用して、テーブル名logからデータを集計する 'SQL文を発行する strSQL = "Select Format(WriteTime, 'YYYY/MM/DD') AS YYYYMMDD, Count(*) AS CNT" strSQL = strSQL & " From log" strSQL = strSQL & " Where WriteTime >= #" & DateAdd("d", -7, Date) & "#" strSQL = strSQL & " GROUP BY Format(WriteTime, 'YYYY/MM/DD')" 'オマケで画面にデータ表示 Response.Write "<hr>発行する(した)SQL文は<br><B><font color='green'>" Response.Write strSQL & "</font></B><br>です<hr>" Set rs = db.Execute(strSQL) 'データの表示をテーブルで行う Response.Write "<TABLE Border='1'>" '見出しをバカっぽく、そのまま書き込む Response.Write "<TR>" Response.Write "<TD>NO.</TD>" Response.Write "<TD>日付</TD>" Response.Write "<TD>閲覧ページ数</TD>" Response.Write "</TR>" 'EOFまでループ nCNT = 1 Do While rs.EOF = False '.EOFがFalseの間 Response.Write "<TR>" '内容を表示する Response.Write "<TD>" & nCNT & "</TD>" Response.Write "<TD>" & rs.Fields("YYYYMMDD") & "</TD>" Response.Write "<TD ALIGN='RIGHT'>" & rs.Fields("CNT") & "</TD>" Response.Write "</TR>" & Chr(13) & Chr(10) '配列変数に日付、カウント値を代入 dHIZUKE(nCNT) = rs.Fields("YYYYMMDD") PageCNT(nCNT) = rs.Fields("CNT") '次のレコードにポインタを移動する rs.MoveNext 'これを忘れると悲惨なことに、、、 'カウンタを増やす nCNT = nCNT + 1 Loop Response.Write "</TABLE><HR>" 'テーブルは終わりです 'お行儀よくオブジェクトも開放しましょう '今回同じ名前を使いまわしてみます、開放すれば大丈夫でしょう rs.Close '開いていたレコードセットを閉じる Set rs = Nothing db.Close 'データベースも閉じようよ Set db = Nothing '--------------------- 'ここからExcel側の処理 '--------------------- 'ADO DB Connection オブジェクトを作成する、英文そのままじゃん Set db=Server.CreateObject("ADODB.Connection") '接続文字列作成、test057.xlsを指定する strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Server.MapPath("test057.xls") & ";" & _ "Extended Properties=Excel 8.0" Response.Write "ExcelとのADO接続文字列は<br><b>" Response.Write strCon & "</b><br>です<br>" 'データベース(xls)を開く db.open strCon Response.Write "その次はレコードセット<br>" 'ADO DB Recordset オブジェクトを作成する、英文そのままじゃん Set rs=Server.CreateObject("ADODB.Recordset") rs.CursorLocation = adUseServer 'カーソルはサーバーの指定 Response.Write "Select * from [DATA$A1:B9], db, 〜<br>" rs.Open "Select * from [DATA$A1:B9]", db, adOpenStatic, adLockOptimistic Response.Write "開いたレコードセットに対して.MoveFirst<br>" rs.MoveFirst '先頭へ(A2:B2の行) Response.Write "ループで配列からフィールド(セル)へセット<br>" 'ループ For n = 1 To 8 '当日+一週間の7日で8回まわる rs.Fields(0).Value = dHIZUKE(n) rs.Fields(1).Value = PageCNT(n) rs.Update '更新 rs.MoveNext '次のレコードへ(次の行へ) Next Response.Write "rs.Close でレコードセットを閉じる<br>" rs.Close Set rs = Nothing 'オブジェクト変数を開放する Response.Write "db.Close でxlsとの接続を閉じる<br>" db.Close Set db = Nothing 'オブジェクト変数も開放する %> <hr> 集計値をtest057.xlsへ書き込みました<br> [<a Href="test057.xls" TARGET="_blank">書き込んだtest057.xlsを開く</a>]<br> ↑書き込まれたデータの確認、グラフ付はOKか確認する<br> ↓下記が<b>Excel雛形</b>イメージです。<br> <img src="http://www.ken3.org/backno/gif/asp057-01.gif"><br> </body> </html>

最近発売の雑誌を紹介する

プログラミングと関係あるような無いような、ビジネス・経済の雑誌を紹介します。
  1. NEW MEDIA (ニューメディア) 2008年 10月号
  2. PRIR (プリール) 2008年 10月号
  3. QC (キューシー) サークル 2008年 09月号
  4. ZAITEN (財界展望) 2008年 10月号
  5. オール投資 2008年 9/15号
  6. ターンアラウンドマネージャー 2008年 10月号
  7. トッププロモーションズ販促会議 2008年 10月号
  8. ファイナンシャルコンプライアンス 2008年 10月号
  9. 激流 2008年 10月号

人気の書籍を紹介します

  1. [4103108177]- そうか、もう君はいないのか
  2. [4260002953]- 古武術介護入門[DVD付](古の身体技法をヒントに新しい身体介助法を提案する)
  3. [4901972154]- 古の武術を知れば動きが変わるカラダが変わる―NHK人間講座『古の武術に学ぶ』の甲野善紀・34の技をDVD120分収録! (MC mook)
  4. [4062751860]- この命、何をあくせく (講談社文庫)
  5. [4087712443]-
  6. [4087812774]- 一言半句の戦場 -もっと、書いた!もっと、しゃべった!

※Ken3への連絡先 → [メール@アドレス]です。気軽に問い合わせてください

Googleで関連項目を検索する

LANGUAGE=VBScript + [キーワード:.Update] Sub|Function プログラム|プログラミング
↓で検索するとプログラムの例 Sub/Function でまとまったHP

Google

あれ?私のページが検索に載ってない(笑)一度お試しを(私のページに、また戻ってきてね(爆))

ASPでExcel(*.xls)を使用する
(ADOで*.xlsと接続, xlsファイルの作成など)

テスト実行とサンプルソース

ASP系、ADO使用、Excel(*.xls)接続、SQL発行、メルマガ解説リンク

[No.53 ADOでExcelファイル(*.xls)とやっと接続できた(ほっ)]
[No.54 ADOでSQL Select * INTO文発行でExcel(*.xls)を作成する]
[No.56 Excel(*.xls)とADOで接続、.Addnewしてみた]
[No.57 Excelグラフ付の雛形シートにASPからADOを使用してデータセット]
[No.59 結果をExcelで返すならresponse.ContentType=application/vnd.ms-excel]

[No.79 文字列9-30をExcelに移すと日付と誤解される・・・]
[No.84 ADO Excel(*.xls)接続 [Sheet1$]でシート指定、列名無しで遊ぶ]
[No.85 ADOでExcel(*.xls)に接続 .GetRowsで全件読み込んでみた]
[No.103 ADOでExcel(*.xls)に接続 指定したセルを更新する ]

三流解説とリンクページを紹介

ASP系の解説を項目ごとにまとめてみました

[ASP Form等を使用したデータのやり取り]
[ASP その他処理サンプル]
[ASP テキストファイル処理]
[ASP VBScript関数関係の説明]
[ASP ADOでMdbファイルを使う]
[ASP ADOでExcelと接続してみた]

その他:blogや広告↓
[日記的なblog]← あまり更新してないけど・・・
[三流なプログラムコード]← 恥ずかしいのであまり載せてないけど・・・
[通販商品の足跡を紹介] ←通販商品などを紹介してます


現在時刻は、2008/09/08 3:02:19です。
[Topへ戻る] −−>[ASP系へ戻る] −−>[バックナンバーを見る]