<Application.Lock .Unlockを使ってみた>
こんにちは、三流プログラマーのKen3です。 今回は、 同時アクセス、排他制御もどきで、 Application.Lock .Unlockを使ってみた そんなお話です。/* * 1.今回のキッカケ */
HPで訪問者のログを収集してます。 DBに追加されていくので、削除しないとデータが増えてしまいます。 ※当たり前でしょ(笑) 自社のサーバーなら、日替わり処理で、 タスクのスケジュールで、 SQL Delete文を発行すれば、済んでしまうんだけど、 レンタルサーバーだと、そんな処理タイミングを作ることが出来ません。 面倒だけど、削除のSQL文が入ったASPファイルを自分で実行してました。 なんとか、自動化できないかなぁ、、、と考えてて、 その日初めて起動した時に、8日前のデータを消すことにチャレンジしてみました。 ※今のところ、うまくいってます。/* * 2.手で走らせてた削除のSQL文 */
下記のような感じで、SQL文を作り、 strSQL = "Delete From log " '現在時刻、日付型は#で囲む strSQL = strSQL & "Where WriteTime < #" & DateAdd("d", -7, Date) & "#" 削除のSQLを db.Execute(strSQL) で発行してました。
Sub DeleteMDB()
'ADO DB Connection オブジェクトを作成する、英文そのままじゃん
Set db=Server.CreateObject("ADODB.Connection")
'.Provider?プロバイダー?通信会社?じゃなくって
'データアクセスにはJet.OLEDB.4.0を使うことを設定
db.Provider = "Microsoft.Jet.OLEDB.4.0"
'次に、接続DBの位置を渡すので、Server.MapPathで変換して渡す
db.ConnectionString = Server.MapPath("../test/cnt.mdb")
'やっとデータベースを開ける
db.open
'SQL文を作る
strSQL = "Delete From log " '現在時刻、日付型は#で囲む
strSQL = strSQL & "Where WriteTime < #" & DateAdd("d", -7, Date) & "#"
'SQL文を発行
db.Execute(strSQL)
'データベースも閉じようよ
db.Close
'お行儀よくオブジェクトも開放しましょう(通常は自動的に解放されるけど)
Set db = Nothing
End Sub |
| ASPで遊ぶ、失敗する | 掲示板 | バックナンバー | 登録と解除 |
| 三流プログラマー 業務の愚痴 | 掲示板 | バックナンバー | 登録と解除 |
| VBAで楽しくプログラミング | 掲示板 | バックナンバー | 登録と解除 |
| コンビニのオモテとウラ話 | 掲示板 | バックナンバー | 登録と解除 |