MDB ファイルの最適化 [Windows/ASP/VBScript]
データーベースパスワードが設定してない MDB ファイルであれば、コマンドライン(バッチファイル)から↓みたいな感じで最適化できた。
"c:\Program Files\Microsoft Office\Office10\MSAccess.exe" "C:\foo\bar\baz.mdb" /compact
MSAccess で使えるコマンドラインオプション↓
http://support.microsoft.com/kb/209207/ja
ところが、今回のファイルはデーターベースパスワードかかってる。
そうなると、上のようにはいかない。結局 VBScript ででけた。
Set objEngine = CreateObject("JRO.JetEngine") objEngine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\for\\bar\\baz1.mdb;Jet OLEDB:Database Password=secret1", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\foo\\bar\\baz2.mdb;Jet OLEDB:Database Password=secret2"
(行が切れてるので、コピペで見てね)
上の VBScript で baz1.mdb(パスワード secret1)を最適化して baz2.mdb(パスワード secret2)を作ってくれる。
source と destination を同じファイルにはできなかった。
日付ごとにファイルを作ってファイル出力をリダイレクト [Windows/ASP/VBScript]
拡張子 .bat か .cmd で・・・
for /F "tokens=1-3 delims=/ " %%a in ('date /t') do SET DATES=%%a%%b%%c echo Hello world!>>%DATES%.log
むかーしの Windows だとできなかったけど、とりあえず手元の Windows 2000 ではできる。
ついでに、sh の場合
echo Hello world! >>`date +%Y%m%d`.log
こんな感じ。
VBScript で整数同士の割り算の切捨て [Windows/ASP/VBScript]
整数同士で割り算すると、自然と切捨てになる・・・と勝手に思ってた。
VBScript は、整数同士の割り算で勝手に浮動少数にしちゃうのは知ってたので
http://blog.so-net.ne.jp/nakagami/2005-12-13
それを Long に変えちゃえばいいんでしょ、と思ってた。
ところが
cscript divtest.vbs
WSh.Echo 4308000/10000 WSh.Echo CLng(4308000/10000) WSh.Echo Fix(4308000/10000)
の結果が
430.8
431
430
がーん。長いこと稼動中のスクリプトでバグ発見。こういうのは発見に手間取るのだ。
ところで、Python 3000 では、整数同士の割り算で割り切れない場合は自動的に浮動少数になるみたい。がーん。
さすがに、Python 3000 では
int(4308000/10000)
は、430 になるとおもうけど、演算途中で型が変わっちゃうのは、はまりそうな予感。
VBScript で 半角カナ→全角カナ変換 [Windows/ASP/VBScript]
WSH で作ったスクリプトで、Basp21 の HAN2ZEN を使って半角カナ→全角カナ変換していた。
この度、違うPCで動かしたくなって、できることなら Basp21 に依存しないように、
半角カナ→全角カナ変換を VBScript だけでしたいなーっ、と思って調べてみた。
エレガントに解く方法は発見できず、ここ↓を発見
http://www.ac.cyberhome.ne.jp/~mattn/AcrobatASP/1.html
結局、SELECT~CASE で1つ1つ変換していくしかないのかなぁ。
ここ↓のソースの StrConvWide() では、フルスペックに、英数文字まで全角にしてしまっている。
http://www.ac.cyberhome.ne.jp/~mattn/AcrobatASP/StrConv.inc
StrConvWide() の半角カナ→全角カナ変換する部分だけ切り取って使ってみることにした。
ASP で CSV ファイルの出力 [Windows/ASP/VBScript]
前にどっかでメモったと思うんだけど発見できなかったので再度メモ。
先頭で
Response.Contenttype="application/octet-stream" Response.AddHeader "Content-Disposition", "attachment;filename=foo.csv"
として、あとはカンマ区切りで Response.Write() してく。
IE 君は、filename の拡張子で csv かどうか判断してるので Content-Disposition を設定して適当なファイル名で出力してあげるのがポイント。
ASPだけに限った話じゃないが。
SharePoint Services [Windows/ASP/VBScript]
SharePoint Portal Server っていうのがあるのは知ってました。
http://www.microsoft.com/japan/office/sharepoint/prodinfo/default.mspx
http://www.itmedia.co.jp/enterprise/0403/31/epn03.html
なんか使い方もややこしそうで、とても値段ほどは使いこなせそうなので、敬遠してましたが・・・
恥ずかしながら、先日 SharePoint Services っていうのがあることを教えてもらいました。
http://www.microsoft.com/japan/windowsserver2003/technologies/sharepoint/default.mspx
FAQ を読んでもよくわからないけど・・・
http://www.microsoft.com/japan/Office/sharepoint/prodinfo/faq.mspx
要するに、Office 2003の価値を高めるべく、 SharePoint Portal Server のベースの機能を無料で公開しちゃえ!ってものみたい。(Office 2003 がなくても使える)
(・・・嘘かも、Office 製品のことはよくわからんので自信なし)
(でも、フォルダ作って履歴管理とかのドキュメント管理ができるのは確か)
で、ただより高いものはないとは言うけど無料ってのはすごいですよ。
(Windows Server や CAL のライセンスがあればって事ですけど)
稟議書を書いたり、買ってもらったけどやっぱり使えないからやめることにしたりっていう場合に、0円と1円の差は山よりも高いですから。
昨日のリモートデスクトップの話もそうですけど、MS の製品も、気が付いたらどんどん無料で使えるようになってて、自分には縁のないものだと思っていたものが、知らないだけで、実は、ダウンロードしてインストールすれば使えるようになってたりして油断ならんです。
私は、標準インストールで入れてみましたが、既定のサイトで使いたくない場合や、MSDE を使いたくない場合は「サーバーファーム構成」ってのでインストールしないといけないみたいです。
http://blogs.sqlpassj.org/mizobata/archive/2004/02/23/673.aspx
Windows のリモートデスクトップ機能 [Windows/ASP/VBScript]
Windows XP Professional とか Windows 2003 Server では、リモートデスクトップという機能が付いているのは知っていたが、今回初めて使った。
(正確には、使ってはいたが初めて設定してみた)
http://www.microsoft.com/japan/windowsxp/using/mobility/getstarted/default.mspx
ホスト側の「コントロールパネル」→「システム」→「リモート」タブ→[このコンピュータにユーザーがリモートで接続することを許可する]にチェックする。
あとは、クライアントにソフトをインストールすれば良い。(Windows XP Home Edition には最初からインストールされてる)簡単じゃん。
最初「このシステムのローカル ポリシーは、このユーザーが対話的にログオンすることを許可していません。」と出たが、
http://support.microsoft.com/?scid=kb;ja;289289&spid=3221&sid=131
同じところの「リモートユーザーの選択」で、リモートから接続するユーザーを登録してあげる。ここ以外にはまるところはなさそう。
そういえば、Linux で動く rdesktop というクライアントがあったが、
ちと古いが、ここ↓の解説がわかりやすかった
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/431usexprd.html
リモートデスクトップをまとめて解説してるところもあり。
もっと、いろいろすることがあったら、ここらへん↓を基点に調べることにする。
http://www.sra.co.jp/people/akira/rdp/index.html
http://www.ayati.com/KOMONO/tse.htm
プロキシ経由で RSS を取得して返す [Windows/ASP/VBScript]
JavaScript で RSS をパースして Web 画面上に表示しようとした場合、セキュリティのために、
JavaScript が置いてあるサーバーと同じドメインから RSS を返さないといけないようになっている。
いろいろ試行錯誤の末、プロキシ越しに RSS を取得して内容をそのままクライアントに返す ASP が書けた。長いこと悩んだ問題が、解決。かなりれしい。
Option Explicit Dim xmlHttp Set xmlHttp = Server.CreateObject("WinHttp.WinHttpRequest.5.1") xmlHttp.setProxy 2, "1.2.3.4:8080" xmlHttp.open "GET", "http://bulknews.net/rss/rdf.cgi?NikkeiNet", False xmlHttp.Send xmlHttp.WaitForResponse Response.ContentType="application/xml" Response.Charset="utf-8" Response.BinaryWrite(xmlHttp.ResponseBody)
↓の JavaScript と組み合わせて、イントラの画面にニュースが表示できるようになった。
http://blog.so-net.ne.jp/nakagami/2006-04-19
Python で feedparser なんか使えば、こんな回りくどいことしなくてもいいんだけどね。
ASP(Active Server Page) で掲示板 [Windows/ASP/VBScript]
以前、プロトタイプとして作ったものを元に、自己完結するようにソースを整理した。
「いまさら ASP かよ」とか「いまさら掲示板かよ」とか「HTML 3.2 かよ」とか・・・
ちょっと恥ずかしいかなぁとも思ったけど、以前「恥ずかしくない」と言ったのを思い出した。
http://blog.so-net.ne.jp/nakagami/2005-04-23
誰かが(特に将来の自分が)、コード片を参考にするかもしれないので公開しておくことにする。
http://www005.upp.so-net.ne.jp/nakagami/Download/toybbs20060714.zip
(だれかが HTML4.01+CSS2 で小奇麗にデザインしてくれるとうれしい)
VBScript から Excel を使う [Windows/ASP/VBScript]
いまさらながら VBScript から Excel のデータを取り扱うことが必要になった。
「4.1エクセルオブジェクトを作る」から始まる 4章を読んでみる
http://www.happy2-island.com/vbs/cafe02/capter00401.shtml
あと、「引数を指定してExcelを起動する」が小さくまとまってて良い。
http://www.vbasekai.com/vbscript.html#vbs0004
最低限のサンプルを作ってみる( A1 と B1 を MsgBox に表示してみる)
Option Explicit Dim objExcel Set objExcel = CreateObject("Excel.Application") objExcel.Visible = True 'Excel を表示してみる(MsgBox 表示には必要ない) objExcel.Workbooks.Open("C:\some\what.xls") MsgBox objExcel.Worksheets(1).Cells(1,1).Value '1シート目の A1 MsgBox objExcel.Worksheets(1).Cells(1,2).Value '1シート目の B1 objExcel.Quit Set objExcel = Nothing
とりあえず、今回は Excel からデータが取ってこれれば良いので、これで十分だろう。