2018年12月15日土曜日

VBScript から SQLServer などにADO(ActiveX Data Objects) で接続する際の注意点

今回もハマりました。

HTA を使って SQLServer のデータを操作する必要があって、
VBScript を使うことにしました。

接続には常套手段として、ADO(ActiveX Data Objects) を使います。

' ADOコネクションを生成
Set Cn = CreateObject("ADODB.Connection")

' DB接続情報
Cn.ConnectionString = "Data Source=localhost\MSSQLSERVER;Initial Catalog=TESTDB;User Id=sa;Password=xxxxx"

' 接続をOpen
Cn.Open

' ADOレコードセットを生成
Set RS = CreateObject("ADODB.Recordset")

' SQLを発行
RS.Open "select * from Table", Cn,adOpenForwardOnly,adLockReadOnly

ここで、緑字の adOpenForwardOnly は普通に通ります。
ところが、赤字の adLockReadOnly が通らないんです。

上記の例はどちらもデフォルトなので、省略できますから、書いたら通らないけど、省略したら通ります。

でも、レコードセットを編集したい場合は、これではできないので、どうしても、
RS.Open "select * from Table", Cn,adOpenKeyset,adLockOptimistic
にしたい。けど通らない。

さんざんいじくりまわした結果、
adLockReadOnly = 1
adLockPessimistic = 2
adLockOptimistic = 3
adLockBatchOptimistic = 4
という数字で指定すれば通りました。

RS.Open "select * from Table", Cn,adOpenKeyset,3





2018年11月27日火曜日

BRAVIA KJ-43X8500F に KODI を入れる

10年ぶりぐらいでテレビを買い替えました。
今まではSONY KDL-32F5 で、機能面では結構気に入ってましたが、流石に時代遅れかと。

今回は同じく SONY で BRAVIA KJ-43X8500F を選びました。

これは、Android TV というやつで、スマホと同じOSを積んでいるので、
最初から You Tube なども見れるようになっています。
もちろん、 Google Play ストア からアプリを入れることもできます。

スマホほど何でもかんでも入るわけではなさそうです。
テレビではタッチ操作ができないので、そのあたりが問題なのかも。

でも、KODI は入りました。
インストールはめっちゃ簡単です。

普通にテレビ上のメニューでGoogle Play ストアを起動して、KODI を検索したら、
簡単にヒットするので、何も考えずにインストールするだけ。

素晴らしい!テレビがあっという間に最強のメディアプレイヤーになりました。

KODI を使ったことのある方ならわかると思いますが、メニューを日本語化するのに、ちょとだけコツが必要です。

先に「InterFace Setting」の「Skin」「Fonts」から「Arial Base」を選択してから、
「Regional」の「Language」を「Japanese」にしないと、逆順で設定したら文字化けして訳わからんことになります。

これで、テレビがKODIの母艦になりました。

BRAVIA KJ-43X8500F にはUSB3.0の端子もついているので、ここにポータブルHDDを繋いだら、KODIから普通にアクセスできて、保存してあるISO ファイルなどが再生できました。

今までは、Raspberry PI 3 に OSMC を入れてKODI専用機として使っていました。
それなりに便利なんですが、リモコンで電源を入れることができないのが玉に瑕。
仕方ないのでスマートコンセントを使って、スマホをリモコンにして電源を入れるようにしていました。
でもこれだと家族には使い難いようで、不評でした。

これが、Andoroid BRAVIA のおかで、一挙解決です。

今、試行錯誤中なのが、KODI からDOLBY やDTS などを再生できるようにすることです。
もちろん、ダウンミックスで普通に再生できるのですが、BRAVIA に接続してあるAVアンプで再生したいんですよね。



2018年10月21日日曜日

au で SIMロック解除したのに MVNO のSIM を認識しない

au の端末を買って、My au から SIMロック解除をしました。
auショップでやってもらうと3000円(と思う。)が必要ですが、
My au から自分で解除すると無料ですからね。
手順も簡単です。
あっという間に解除出来ちゃいました。

で、今解除したすぐの端末に、用意しておいたMVNOのSIMを入れると、
なんと、「ロック中ですの認識できません。」みたいなメッセージが流れれて、
APNの設定に入れません。

それは多分、SIMロック解除の情報が端末に反映されていないからです。

SIMロック解除した端末の、
「設定」→「システム」→「端末情報」→「機器の状態」→「SIMのステータス」→「SIMカードステータス」とたどると、
一番下に、「SIMステータス更新」というのがあるので、
これを押してしばらくたつと、SIMロックステータスが「許可されています」に変わると思います。

そうなれば、MVNOのSIMが認識されて、APNの設定に入れるようになります。


2018年1月13日土曜日

VBA のユーザー関数の名前の怪

今更ながらですが、同じVBA でも Access と Excel では微妙に違いますね。

今回陥ったのは、ユーザー関数の名前の付け方です。

今までAccess で使っていたユーザー関数をそのままExcel に流用しようとしました。

Access ではこんな感じ。
----------------------------------------------------
Function aaa1( V_1 as String) as String
     aaa1 = "答えは = " & V_1
End Function
----------------------------------------------------

めっちゃ単純化していますけど、まあこんな感じで、ちゃんと運用しています。

これをそのまま Excel にコピーしました。
そして、ワークシート上で使うと、そのセルには、
#REF!
というエラーが表示されています。

これはかなりはまりました。

関数の処理内容はいたって簡単なのに、なぜ?

しかも混乱に拍車をかけたのが、
Excel でも、プロシージャの中で使うと問題なく答えが返ってきます。

なぜ?なぜ?なぜ?なぜ?

ここでふと気づきました。
エラーが「#REF!」ってことは、参照先のセルが不正。
ってことは、これは関数を呼んでいるのではなく、セルを参照している?

ということは、aaa1 というのはユーザー関数とは思われていなくて、
R1C17576 のセルを参照していて、その後に()が付いているので、参照不可。

ということで、関数名を「aaa_1」とかのアルファベットのあとにすぐ数字が来ないような名前にしたら、問題なく処理できました。






2018年1月7日日曜日

Raspberry Pi ZERO W の MPEG-2 ライセンス購入

Pi ZERO でも音楽やMPEG-4 なら結構快適にKODIが動作するんですが、以前に録りためた、DVDのISOファイルを再生するとかなり厳しい状態になります。

この解消方法は、MPEG-2 のライセンスを購入することで、動画再生支援ハードウェアを活用することができるということで、早速ライセンスを購入してみました。

手続き自体は簡単で、
http://www.raspberrypi.com/mpeg-2-license-key/
から購入できます。

値段はユーロ建てで、2.4ユーロ、私の時で日本円にして、311円でした。
これくらいなら、気軽に買えますね。

購入ページによると、手続き後72時間以内に、ライセンスキーがメールで送られてくるとのことです。
が、私の場合、そうはいきませんでした。
まあ、私に非があるといえばそうなんですが、
購入手続きの際に、Pi ZERO のシリアルナンバーを送らなければならないんです。
これは16桁の英数字で構成されていて、その確認方法もちゃんと説明されているので、簡単に確認できます。
ただ、前の方の桁は全部「0」だったので、これを省略して7桁だけ送ってしまいました。

すると、24時間後ぐらいに「そのシリアルナンバーは異常です。」みたいなメールが返ってきて、「このメールに正しいシリアルナンバーを書いて返信しろ」みたいなことが書いてあるので、今度はきちんと「0」の部分も含めて16桁書いて送りました。

ところが、送りなおした後72時間経過しても、キーが送られてきません。
私の中学生並みのたどたどしい英語で、「なんでやねん!」みたいなことを書いて再度送っても、なんの返事もありません。

かなり頭に来たけど、英語なのでどうしようないので、仕方なく、再度購入手続きをして、311円ほどをもう一度払おうかと思っていたら、
やっとライセンスキーが送られてきました。

最初の購入手続きが11月25日で、キーを入手出来たのが12月1日となってしまいました。
ま、手抜きコードを送った自分が悪いんですけどね。

キーをPi ZERO に入れて、早速ISO ファイルを再生したら、なんと!スムーズに動くじゃないですか~。
こりゃ便利です。
Pi ZERO に、昔から多くのISO ファイルを格納してきたUSBの外付けHDD を接続して、快適に映画鑑賞しています。

2018年1月6日土曜日

Fire TV Stick に Silk (Browser) を入れる

既に多くの人が書いていますが、Amazon と Google の仲が悪いようで、Fire TV からYouTube のアイコンが無くなりました。
私はあまりYouTube を必要としないので、がっかり感は少ないのですが、逆に、Amazon がその代替案として、FireFox と Silk という二つのブラウザーをインストールできるようにしてくれましたので、これがラッキーです。

元々、Fire TV を購入したのが、OS が Android と聞いたので、様々なスマホ用アプリが使えると思ってのこと。
一番入れたかったのがカレンダーアプリで、Google カレンダーのデータをテレビで表示したかった。

ところが、Fire TV を購入したものの、なかなかカレンダーアプリをインストールすることが出来ずに困っていました。

それが、ブラウザーがあれば、普通に表示できるはず。ということで、早速普段PCでも使っているFireFox をインストールしました。
外付けのキーボード・マウスなどを接続することなく、標準の Fire TV 用のリモコンだけで、画面キーボードからGoogle のURL を打ち込んで、ID と パスワードを入力したら、簡単にGoogle カレンダーが表示できました。
ところが、FireFox だと、お気に入りに登録する方法がわかりません。
これだと、毎回URLを打ち込まないとダメなので、そんな邪魔臭いことしてたら、意味がない。

そこで、もう一つのブラウザーの Silk を入れてみました。
これは使ったことなかったのですが、別に違和感なく使えて、しかも、お気に入り登録もできます。
もちろん、ID とパスワードも記憶させることができるので、お気に入りをクリックすれば、即カレンダーが表示されます。

これで、子供が自分で自分の予定をテレビで確認できるようになりました。

まあカレンダーの表示までにちょっとモッサリ感がありますが、実用の範囲です。
ついでに、グーグルの基本画面とヤフー天気もお気に入り登録しておきました。

これで、私がスマホを使っている機能の80%ぐらいは網羅できた感じですね。