- VBScriptについて必死に話し合うスレ
993 :デフォルトの名無しさん[sage]:2014/11/24(月) 19:05:38.32 ID:5R7rrTlS - DAO.DBEngineのインスタンス作成や、データベースの取得を無駄に逐一やらずに
インスタンスはClass_Initializeで作ってクラスレベル変数に保持して使い回し データベースもCreateDatabaseかOpenDatabaseで一度開いたら、無駄に何度も開き直さない 既にデータベースがある場合はOpenDatabase、無い場合はCreateDatabaseとする また、動作上は問題ないが、利用するオブジェクトのメンバ名で使われてる名前は 混乱を避けるため、自作のプロシージャや変数名では使わないようにする>CreateDatabase、WriteLine DatabaseNameはWScript.ScriptFullNameからスクリプトのあるディレクトリを取得してそこに作るか 他からもアクセスできるように特定の場所に固定するなら、環境変数を使って書く クラス直下の変数宣言は、公開か非公開かを明示すべく、DimではなくPrivateとPublicを使う 定数を上手に利用する("inTitle"とか、フィールド番号の0,1なども定数にすべきもの) 因みに同じ1でも「ReDim Data(GetCount(RecordSet) - 1)」の1は定数化の必要なし 今回のようなケースなら DA.Insert CreateDatum("タイトル", "内容") のCreateDatumは、変更されることも省かれることもなく必ず使用されるものなので Sub Insertで(Title, Content)の引数を取り、その中でCreateDatumすることで DA.Insert "タイトル", "内容" とスッキリ書けるようにする 検索結果を取得する部分は、対象フィールドを定数にしたものを引数として渡し 検索するフィールド毎に専用関数を作るなんて無駄なことはしない cscript.exeでの実行の仕方が解らない人でもWScript.StdOut.WriteLineでエラーにならないように wscript.exeで実行されてもcscript.exeで実行し直すようにし、最後に WScript.StdOut.WriteLine "Enterキーを押すと終了します..." WScript.Stdin.ReadLine などを入れて、結果が残せる開発環境とかからの実行ではなくても、 結果表示が見る間も無く消えるなんてことが無いようにする.....って、もう行数制限いっぱいかよ...orz
|