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

三流プログラマーが作成したコードが置いてあります。ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)※古くさいコードが多いです・・・



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


asp091.html 三流君ASP:ADO CSVでReadOnly=0と.AddNewを使いデータ追加

元の三流解説は、
三流君ASP:ADO CSVでReadOnly=0と.AddNewを使いデータ追加
↑を見て、笑ってやってください。
ブログに過去のソースコードをアップして、ブログの検索機能で利用してます(利用予定です)
※古くさいコードが多いです・・・



ソースコード

<%@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>ADOでReadOnly=0と.AddNewを使いCSVファイルにデータ追加</title>
</head>
<body>
<h1>ADOでReadOnly=0と.AddNewを使いCSVファイルにデータ追加</h1>
test091-1.asp<br>
ASPからADOを使用してテキストファイル(*.csv)に接続を行う<br>
ファイル名はtest091.csvで、データは,カンマで区切られてます。<br>
FID,書き込み時刻,IP情報,Reffer<br>
の4つの項目をCSVで管理してみます。<br>
大きな流れは、このASP(test091-1.asp)が実行されたら、<br>
最終行にカーソルを移動、.MovelastしてFID+1の次の番号を取得。
IPアドレスの頭10桁とReferrer(どこからきたか)を取り出し保存します。<br>
<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

  '※接続情報の作成 ドライバーの指定と、DBQには、パスのみを指定する
  Con = "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=" _
      & Server.MapPath(".") & ";" _  
      & "ReadOnly=0;"

  'SQLのテーブル名には、ファイル名を指定します(test091.csvを指定)
  strSQL = "select * from test091.csv"

  Response.Write "使用する接続文字列は<br>"
  Response.Write "<STRONG><CODE>" & Con & "</CODE></STRONG><br>"
  Response.Write "発行するSQL文字列は<br>"
  Response.Write "<STRONG><CODE>" & strSQL & "</CODE></STRONG><hr>"

  'ADO DB Recordset オブジェクトを作成する、英文そのままじゃん
  Set rs=Server.CreateObject("ADODB.Recordset")
  rs.CursorLocation = adUseServer  'カーソルはサーバーの指定

  '接続文字列、SQLを渡して、レコードセットを開く
  rs.Open strSQL, Con, adOpenDynamic, adLockOptimistic

  '最終のデータを取得する
  rs.MoveLast  'レコードを最終行へ移動
  NEXT_NO = Cint(rs.Fields("FID").Value) + 1 '次の番号を+1して計算する
  Response.Write "rs.MoveLastで取得したFIDは<b>"
  Response.Write Cint(rs.Fields("FID").Value) & "</b>です+1します<br>"

  'データを追加する
  Response.Write "次は、開いたレコードセットに対して.AddNew<br>"
  rs.AddNew
  Response.Write "フィールドにアクセスする(データセットする)<br>"
      '↓フィールド名でアクセス
  rs.Fields("書き込み時刻").Value = Now() 
  rs.Fields("FID").Value = NEXT_NO  '次の番号をセットする
      '↓番号でフィールドにアクセスも出来るよ
  rs.Fields(2).Value = "ADDR" & Left(Request.ServerVariables("REMOTE_ADDR"), 10)
  rs.Fields(3).Value = Request.ServerVariables("HTTP_REFERER")

  Response.Write ".Updateで更新(レコード確定)<br>"
  rs.Update
  rs.Close   'クローズして確定する

  '再度レコードセットを作成する(表示用)
  'top10で10件のデータとする FIDを降順にする そんなSQLを作成してみた
  strSQL = "select top 10 * from test091.csv Order By FID DESC" 
  rs.Open strSQL, Con, adOpenForwardOnly  '読み込みだけなのでForwardOnly

  '先頭行へデータを移動する(無くてもよさそうですが)
  rs.MoveFirst

  'データの表示をテーブルで行う
  Response.Write Request.ServerVariables("REMOTE_ADDR") & "←アナタのIP<br>"
  Response.Write "test091.csv - " & strSQL & "<br><TABLE Border='1'>"

  '見出しを(フィールド名を)そのまま書き込む
  Response.Write "<TR>"
  For Each fld_A In rs.Fields 'フィールドのアイテムに対してループ
     Response.Write "<TH>" & fld_A.Name & "</TH>" '←.Nameでフィールド名
  Next
  Response.Write "</TR>"

  'お約束のEOFまでループは(データが無くなるまでループ)、
  Do While rs.EOF = False   'レコードセットの.EOFがFalseの間
    Response.Write "<TR>"   '内容を表示する
    For Each fld_A In rs.Fields 'フィールドのアイテムに対してループ
       Response.Write "<TD>" & fld_A.Value & "</TD>" '←.Valueでフィールドの値
    Next
    Response.Write "</TR>"
    rs.MoveNext    '次のレコードに移動する
  Loop

  Response.Write "</TABLE></SAMP>"  'テーブルは終わりです

  '後始末
  rs.Close '開いていたレコードセットを閉じる
  'Set rs = Nothing 'お行儀よくオブジェクトも開放しましょう

%>
<hr>
[<a Href="test091-1.asp">再度テストでcsvへデータを追加する(再実行)</a>]
[<a Href="test091.csv" TARGET="_blank">
操作した結果のCSV test091.csvを確認(開く)</a>]<br>
</body>
</html>

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



↑コードの三流解説は、
三流君ASP:ADO CSVでReadOnly=0と.AddNewを使いデータ追加
を見て、笑ってやってください。



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



Ken3 ホームページ 目次

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

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

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