misc.log

日常茶飯事とお仕事と

仕方が無いのでメイドインアビスに手を出す

娘が映画を見に行ってから「おやおやおや……すばらしい」しか言わなくなってるので原作を買うことにする。

メイドインアビス(1) (バンブーコミックス)

メイドインアビス(1) (バンブーコミックス)

メイドインアビス(2) (バンブーコミックス)

メイドインアビス(2) (バンブーコミックス)

メイドインアビス(3) (バンブーコミックス)

メイドインアビス(3) (バンブーコミックス)

仮想マシンが「すべてのパイプ インスタンスがビジーです」で起動しない

前の日、職場での帰宅前にVMware Playerが完全に落ちる前にPCをシャットダウンしてしまったらしく、今朝PCを起動したら真っ黒な画面のVMware Playerが最初から起動していました。なんだこりゃ?と思っていろいろ触って見るも、どうやらゲストOS(仮想PC)のシャットダウンに失敗した状態になっている様子。こういう場合は仮想PCのフォルダにロックファイル(名称の末尾がlckのフォルダ)ができているので、それを消せば大丈夫……と思ったのですが、VMware Playerを強制終了してからそれをやっても、下記のようなエラーが出て仮想PCが起動しなくなってしまいました。

f:id:frontline:20200124092846p:plain
「すべてのパイプ インスタンスがビジーです」エラー

エラーメッセージは

パワーオン中にエラーが発生しました: VMware Playerは仮想マシンに接続できません。プログラムが起動でき、使用しているまたは一時的に使用されるファイルがある全てのディレクトリにアクセス権利ががるかどうか確認してください。
パイプを仮想マシンに接続できませんでした: すべてのパイプ インスタンスがビジーです。

結論からいうと、lckフォルダを削除したのち、ホストPCを再起動して改めてVMware Playerから起動し直すと治りました。参考まで。

AccessのクエリとVBAにおけるADODBで用いるクエリーではLike文記述が違う!

これに気づかず午後をひたすら原因探ししてしまった……

Accessを使ったデータ引っ越し作業(この是非については別の問題とします。客先の指定なので仕方ない)において、以前は手作業でクエリとして組んだSQLを実行していたのですが、VBAで自動化することになりそのままSQLを文字列としてVBAの処理に組込みました。VBAではADODOのRecordsetを使ってSQLを実行していたのですが……上手く動かない。というかエラーは起きていないのに処理結果が想定と違う。しばらく考えてふと「あれ?LIKE文のワイルドカードアスタリスク(*)になってる!」。

そう、Accessの機能として作るクエリではワイルドカードアスタリスクなのですが、ADODBで使うワイルドカードはいわゆる一般的なSQLと同じ「%(パーセント)」なんですね。やられました。

たとえばこのように「abcを含む列は全部固定文字ABCに置換する」のようなSQLの場合

UPDATE テーブル名
    SET テーブル名.列名 = 'ABC'
    WHERE テーブル名.列名 LIKE '*abc*'

こうなります。

UPDATE テーブル名
    SET テーブル名.列名 = 'ABC'
    WHERE テーブル名.列名 LIKE '%abc%'

あーもう!!!

Accessマクロ&VBA 開発工房 Office365/2019/2016/2013対応

Accessマクロ&VBA 開発工房 Office365/2019/2016/2013対応

  • 作者:緒方 典子
  • 出版社/メーカー: ソシム
  • 発売日: 2019/07/19
  • メディア: 単行本