2019年12月14日土曜日

スペース区切りのデータベースもあるくらいだから、汎用性を高めるためには、値に半角スペースを含めない方が無難なんだな - ADO接続(ActiveXDataObject・VBA)

スぺース入りの値だらけだ

Windowsは、初心者にはやさしくファイル名にスぺースが付けられます 。
よく、”hoge hoge.xlsx"みたいな名前で保存してしまうけど、大丈夫。

これってWindows95の頃から、半角スペースも使えたという古いお話。
確かに、”Prgram Files”なるフォルダーもあったりして、納得してしまう。

だけど、この手のファイル名は、VBAでプログラムを組むと難敵なんだな。
特に、外部プログラムでファイル名を指定して、起動させるのがそうです。

Sub Sample()
 With CreateObject("Wscript.Shell")
   .Run "C:\Users\Ojiji\Desktop\Hoge Hoge.pptx"
 End With
End Sub

これを実行させても、スペースのあるファイル名は実行されてこないのよ。
こんな時は、代わりに”_”で置換して、ファイル名を書き換えてみます。

上の例だと、”Hoge Hoge.pptx”を”Hoge_Hoge.pptx”になるな。
もちろん、VBAのコードも直すけど、あーら、不思議とちゃんと動きました。

それで、日本人は”アンダーバー”と称していますが、正式の名称は違う。
”Undescore”、つまり”アンダースコア”なので、こちらを使うとしましょう。

それで、”Underbar Underscore Which is correct?”でググった。
意味は、どっちが正しいのって問い合わせで一発で回答を手繰り寄せる。

そうしたら、アンダーバーは下線であり、上に何か文字記号があるのです。
その一方で、アンダースコアは一つの文字を意味する、言わば”底線”ね。

日本語では、特殊な学術用語として使われますが、中国語にはあった。
許容譲歩できる最低値といった意味ですが、他国を顧みない奴らの事。

自分の価値判断基準が、世界で唯一のドグマだと思っているから危険。
地上から投げた手榴弾で、高空の戦闘機を撃墜する「抗日ドラマ」あり。

ありえへん世界の抗日ドラマ
   
素手で日本兵の体を切断したり内臓をえぐりだすなど、グロな番組作り。
こんな荒唐無稽な演出を、差配する共産党中央宣伝部が許可する。

だから、抗日ドラマが底線なのでしょうが、中国はまともな国家ではない。
北斗の拳のケンシロウに言わせれば、”お前はもう死んでいる”だろうな。

だいぶ脱線なので元に戻しますが、スペースの入ったデータは厄介なの。
特に、エクセルVBAで、外部データベース接続を試行錯誤していました。

アクセスやSQLのデータベースをエクセルで操作しますがサンプルが必要。
ググって海外サイトからダウンロードしましたが、このCSVファイルが曲者。

なんと、ヘッダーになる一行目の項目が、一部がスペース付きの設定だ。
それ以外は、DBのルール通りに、項目がコロンで区切られていました。

それで、ADO(ActiveXDataObjext)接続でシートに表示させる。
すると、ヘッダー部で、このスペース付き項目を表示しようとするとエラー。

エディターのVisualStudioCodeで発見して、モグラたたきの置換です。
他にもありまして、サンプルデータには、国名が入っており、スペース付き。

これもエディターの置換操作で一気に変換してしまって、楽しいもんだよ。
しかも、150万行のデータ(183M)も置換できたりして、こりゃ凄いわ。

時々、エラーでフリーズしても再開すると、前のデータが残されています。
なので、一気にアンダースコアに変換してADO接続に邁進しましたとさ。

というわけで、ADO接続を組み込むデータベース開発には注意が必要。
他にも、アクセスのサンプルファイルをダウンロードしてみたら、テーブルの名前にスペースが入っていて接続できなかったりして、安易に投入値の中にスペースを入れるのは、データベースの操作上、問題が出るのでアンダースコアで代用させねばなるまいと思った自分がいるのでした。



いいねと思ったら、三つポチっとね!
にほんブログ村 スキースノボーブログへにほんブログ村 スキースノボーブログ スキーへにほんブログ村 旅行ブログ 旅日記・旅の思い出へ
にほんブログ村    にほんブログ村      にほんブログ村 



0 件のコメント:

コメントを投稿