2026年8月28日金曜日

accessクエリで日付時刻型フィールドの範囲指定はbetweenではなく>= 開始日 And <終了日+1が良い

日付時刻型フィールド(例 2026/08/28 00:00:00)ならば、>=DateValue([開始日]) And < DateValue([終了日])+1 と指定すれば良い。
betweenに拘るならば、between [開始日] and DateValue([終了日])+0.99999もある。しかし、>=と<+1が無難らしい。
ちなみに1日は24時間、1時間は60分、1分は60秒なので、1日は 86,400秒。0.00001が0.86秒で、1-0.99999=0.00001という関係で、+0.99999は59秒あたりの時刻をピックアップできるわけだ。

2026年8月27日木曜日

On MicroSoft's WindowsUpdates at 2026/08/12

マイクロソフトが保守終了したOffice2016へ2026/08/12にセキュリティ強化と称するWindows Updatesを提供し、Office2016では以下の現象が起きている。一方、Office2021以降では一切、起きない。これは単なる自分へのメモである。Office2016ユーザのワタシは、解決策を求めて、日々、多大な労力を費やしている。
  • システム管理者権限のコマンドプロプトでVBScriptのcreate object("Outlook Application") が「サーバーに接続できません」で失敗する。システム管理者ではなく、一般ユーザ権限のコマンドプロンプトでやれば、成功する。
  • VBA(マクロ含む)のWorkSheets("シートn").copyはクラッシュすることがある。手作業でのシートnのコピーでも同様。シートnをイチから作り直せば、元のコードがそのまま、動くよ。何だよ、コレ。
    1. Excel 97-2003形式(.xls)のファイルが開けない。Office2021又はそれ以降のOfficeで開いて、xlsx形式に変換するしかない。
    2. シート再作成では、元のシートnからコピー&ペースト(式のみ)はOKだが、セルの丸ごとコピー&ペーストは直ぐにクラッシュする。もしくは「excelの一部に問題が見つかりました。」というメッセージが出て、修復すると、修復されたレコード: /xl/sharedStrings.xml パーツ内の文字列プロパティ (文字列)が出る。
    3. シートnが式がなく、文字列しかなければ、コピーできるようだ。
    4. また、式にシート名がある場合、元のシートnを削除すると、式が壊れる。
    5. 一旦、シートnを別名シートn_oldにして、新しいシートの式(シートn_old)をシートnに文字列置換(全て)で戻してあげればいいよ。