三流君のソースコード置き場

ブログにソースコードをアップして、ブログの検索機能で利用してます(利用予定です)

よく検索されるキーワード: [VBA]/ [VBS]/ [CreateObject]/ [Excel]/ [ADO]


asp057.html 三流君ASP:Excelグラフ付の雛形シートにASPからADOを使用してデータセット

元の三流解説は、
三流君ASP:Excelグラフ付の雛形シートにASPからADOを使用してデータセット
↑を見て、笑ってやってください。
ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)
※古くさいコードが多いです・・・



ソースコード

<%@LANGUAGE=VBScript%>
<html>
<head>
<title>Excel(*.xls)グラフ付雛形にADOで接続しデータ更新</title>
</head>
<body>
<h2>Excel(*.xls)グラフ付雛形にADOで接続しデータ更新</h2>
<!-- Ken3 --><!--  #include file="info.inc" -->
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>
</body>
</html>

↑をテスト実行する→http://www.ken3.org/cgi-bin/test/test057-1.asp実行する



↑コードの三流解説は、
三流君ASP:Excelグラフ付の雛形シートにASPからADOを使用してデータセット
を見て、笑ってやってください。



ASPの解説 トップページは
三流君ASPで遊ぶ、失敗する
です。こちらもよろしく・・・

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
(※詳細は[三流君 三流プログラマーとは?]を見てください)


Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。
・[Excel/Access VBA]の解説
・[ASP(Active Server Pages)]の解説。
・[元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
・[プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
三流君を踏み台にする
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。

三流解説動画の再生リスト
https://www.youtube.com/user/ken3video/playlists

本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)