2009年8月アーカイブ

Access 2007 で稼働中のシステムを  SQL Server 2005 Express Edition にアップサイジングしました。
一見正常に動いているようですが、あるフォームで表示中のデータを別の詳細フォームで編集するマクロが動きません。全く同じようにデザインした別のフォームでは動いています。違いはクエリが単純に変換されたか、新規作成したストアドプロシージャーを使用しているかの違いくらいしか思い当たりません。ストアドプロシージャーを使用しない場合には、テーブルの先頭レコードを開いてしまいます。

というわけで、ボタンにアサインしたマクロの Where を削除し、ストアドプロシージャーに変更しました。しかし、データの編集ができないや新規データのフォームが開かないなどの追加の問題も発見されて、戸惑っている最中です。苦笑い!

SQL Server 2005 Express Edition に Access 2007 からアップサイジングしました。当然、いくつかアップサイジングできない部分が生じます。クエリの Where 式が失敗すると Web 上にたくさん出ていますし、イベント・プロシージャーを書くとき DAO もダメで ADO にしなさいなどとあります。

と、いうことで Access 2007 の内から ADO に切り替えて作成しました。完璧と思えるほどに作りこんでアップサイジングしましたが、いくつもバグが見つかり苦労しました。年金組は高いマニュアルの購入はできませんのでインターネット情報のみが頼りです。何も分からないときにインターネット検索をしてもなかなか該当が見つからないものです。わかってから検索すると一発でヒットします。(笑)

イベント・プロシージャーの部分はデータベースの或る月分のデータを集計し、エクセルの表に差し込む作業です。

トラブルが発生した時の原因を列挙しておきます。
  1. フォーム内に埋め込んだマクロは外出しにしてマクロを保存しました。Where 式の部分を Stored Procedure で作成する件は無くなりました。一部どうしてもストアドプロシージャーで書かないとうまくいかないものがあります。同じような設計にもかかわらず、原因究明できていません(as of  2009/9/1)
  2. ADP の VBA 画面で、<ツール>-<参照設定>項目に Microsoft ActiveX Data Objects 2.8 Library の設定を追加しますが、Microsoft Excel  12.0 Object Library も必要でした。参照 #1
  3. コーディングの途中に DAO の Currentdb.name を使った Excel File の Path を見つける仕組みが残っていました。現在は CurrentProject.Path を使用しています。ついでにコード行が大幅に削減される効果もあり。参照 #2
  4. SQL文の作成は、Access 2007 のクエリで集計用から作成すると便利です。それをデザインモードで開いたのち、コピーします。集計用クエリを SQL 文表示にすると where 式の部分が Having となります。当初、機能的には違いがないと勝手に判断し SQL文で Where と書き換えていましたが、どうしてもバグがとれません。初心に帰ってコピーして貼り付けたら一発でOKとなってびっくり。調べたら集計のときはHaving になるようですね。20年前の知識でやってはいけません、最新の情報に更新してから進めるべきでしたね。参照 #3
  5. 同SQL文で、日付で絞り込むには Access 2007 の DB と SQL サーバーでの書き方が異なります。日付の囲む文字が Access 2007 では # でしたが、' (アポストロフィ)です。 参照#3

先月23日に草取り中誤って茎を折ってしまい収穫する羽目になった宿儺かぼちゃ。煮物にして食べました。1か月放置していましたら幾分か糖度がましたのかおいしくなっています。

ちょっと失敗 宿儺かぼちゃを折っちゃった
知り合いのサイトをタイトルのレンタルサーバーへ乗せ換えてみました。
お名前.comのDDNSサービス料金315円より安いことがわかり、ICT業界のデフレーションは相当なものだと実感しています。

移行作業で気がついたこと
  1. ブログとウェッブ・ページのデータ (SQLite2) はバックアップで取得できました。復元するのは、新サーバーで MTOS v4.261をセットアップしたのち、ログインして「システム」の「ツール」にある "復元" から戻します。(さくらレンタルサーバー・ライトはSQLite3)
  2. 初期ドメイン・サイトからサイトを作成し、出来上がったらドメインを追加登録して、同一内容を新規ドメインで表示させます。
  3. お名前.comのDDNSサービスをキャンセルして、直後にDNS情報を登録するといつの間にか登録した情報が消されていて、面食らいました。多分、サービスのキャンセルによりプログラムが無条件で削除でもしたのでしょう。数時間後に再度確認したらブランクになっていて、あわてて再登録しました。
  4. バックアップは、gzファイルへ圧縮するのが良さそうです。復元でも自動的に処理してくれます。
  5. 復元では新規ドメイン (元のホームサーバーで使用していたドメイン名) で復元しても良いかもしれません。この場合には、リンク情報等の修正が要らないかもしれません。(未確認)
  6. 請求書は申し込み翌日に発行されていました。初期費用1,000円+年額サービス料金1,500円+請求書発行手数料315円の合計2,815円也。
新しいLenny Server でカウンターを設置しようとしています。
使用しているプログラムはDream counter です。以前から使用していて手順は理解しているつもりでした。調べていくうちに、昨年3月に更新されてファイルの配置やコーディングが異なっていました。

ダウンロードしたファイルをサーバーにアップロードし、解凍しました。当然ディレクトリーはDream で解凍されます。お勧めのものは/count です。
Webmin を使用して、コピー&ペーストをし、名前を /count へ変更しましたが、Permission の割りつけの画面で Setgid □ files inherit group のチェックマークがオンになっていることを未確認のまま、755 に設定しました。
後刻、Homepage Builder のファイル転送で権限のグループ部分に x の代わりに s が付いていることに気がつきました。いままで気にも留めていなかったチェック項目ですが、Webadmin 1.480 から既定値になったのでしょうか。次回、Server 構築時に確認してみます。

続いて、本題はこちらです。
TerraPad を使用して、PC サイドで解凍した CGI ファイルを UTF-8 型式で保存したら、アップロード後に1行目の前に不明なキャラクターが3文字余分についてきます。当然ながら実行することができません。Shift-JIS や EUC-JP では文字は追加されません。

UTF-8 型式で保存したテキスト・ファイルはこのようになるのでしょうか?
FTP プログラムが自動的に処理をしてくれるのではないかと思っていますが、未解決です。

Upload したのち、サーバー側で最初の文字3文字を削除して使用中です。
(カウンターの設置は完了しています)

おすすめ