ギタリストとも呼ばれたい – YouTubeに投稿したギタープレイは海外からのアクセスが多いことがわかった
このblogのタイトルは「プログラマーと呼ばれたい」だが、子供の頃からなりたかった職業に「プログラマー」と「ギタリスト」がある。本当は「ボーカリスト」になりたかったと言いたいところだが、それは遠慮しておこう。
今日ここで紹介したいのは、YouTubeに投稿したギター・ソロの演奏についてのことだ。
職業としては「プログラマー」も「ギタリスト」もなれそうにないが、趣味としての「プログラマー」や「ギタリスト」にはまだなれるかもしれない。そう思いながらプログラミングもやり、ギターの練習もしている。ギターの練習は特にRolandのJS-8、通称「eBAND」を買ってからソロプレイについてはずいぶん上達したと思っている。
ところで昨年の4月に、とりあえず自分の腕はこのあたり、という記録の意味で自分のソロプレイをビデオに撮りYouTubeに公開してみた。公開して長らくほったらかしていたのだが、昨年末に気が付くと投稿した動画のうち一つのアクセス数が増えていることがわかった。そこでアクセス記録を確かめようと思いYouTubeにログインすると、かなり詳細に閲覧記録がとれることがわかった。その一部が下のページだ。
<Fig.1 : YouTubeの地域ごとアクセス記録>
アクセス記録を分析したい期間を指定し地域で分析してみる。すると最も再生回数が多いのは当然日本なのだが、アメリカからの再生もかなりあることがわかる。全期間の再生回数は3,856、うち日本からは916、アメリカ合衆国からは671というぐあいだ。日本の再生回数916回は割合ではたった24パーセントでしかない。アメリカ合衆国からの再生回数671回は17パーセントだ。
第3位のイギリスからは271回で7%とぐっと下がってしまうが、ブリティッシュ・ロック本場のイギリスから見られていると思うとちょっと誇らしい。
ちなみに地域をアメリカ合衆国に絞って統計をとると次のようになる。
<Fig.1 : YouTubeの地域ごとアクセス記録でアメリカ合衆国のみのもの>
このblogを書いている間にアクセスすが671から675に増えてしまった。アメリカ合衆国の中では、カリフォルニア州、ニューヨーク州、テキサス州の順番だ。
YouTubeではこんなふうに統計が取れる。なかなか興味深い。
アメリカ行きの準備(3) – Microsoft 2012 MVP Global Summit参加のために – 国際運転免許証の交付を受けるには
<Fig.1 : 国際運転免許証>
アメリカで車を運転するには国際運転免許証があればいい。国際運転免許証があれば、ジュネーブ条約加盟国により日本の国外運転免許証で運転できる条約に加盟している国等で車を運転することが基本的にできる。だが場合によっては一部の国では国内法で制限を課している場合があるのであらかじめ調べておくことが必要だ。このジュネーブ条約には94加盟国、2行政地区があり、主なところをあげると、アメリカ合衆国、イタリア、英国、オーストラリア、オランダ、カナダ、シンガポール、スペイン、タイ、大韓民国、トルコ、ニュージーランド、フィリピン、フランス、マレーシア、ロシア、などあり、たいてい日本人が旅行しようとする国で通用するはずだ。
国際運転免許の交付を受けるのはとても簡単だ。兵庫県では明石更新センター、阪神更新センター、神戸更新センター及び但馬免許センターの4か所で行っている。つまり運転免許の更新と同じところで申請することができるのだ。
このうち明石更新センター、阪神更新センター、但馬免許センターは一般の免許更新者でごったがえるすので、いちばんいいのは神戸更新センターに行くことだ。ここは優良運転者と70歳以上の高齢運転者だけを対象にした更新センターで空いているし、場所は兵庫県警の近くにあり、交通の便もいいところにある。神戸市営地下鉄の県庁前駅を降り、地上に出るとすぐだ。
国際運転免許証の交付を受けるには、単に申請だけをすればいい。必要なものは(1)パスポートまたは乗員手帳、出張証明書など渡航を証明する書面、(2)運転免許証、(3)国外運転免許用写真1枚(縦5.0cm×横4.0cm)、(4)印鑑、(5)黒色ボールペン、である。申請費用は2,650円。これは申請時に収入証紙を買う。
<Fig.2 : 国際運転免許証申請時の収入証紙領収書>
このうち(1)だが、パスポートでなくても渡航を証明する書面があればいいことになっているが、たとえば航空券などを持って行ってもそれを提出しなければならない。つまりコピーしたものを持って行かなければならないのだ。そこでやはりパスポートを持っていくのが確かである。(3)の写真は通常の証明書用写真やパスポート用写真とサイズが違うので、市中にある多くの自動証明写真撮影機にはない。しかし神戸更新センター内にはこのサイズに対応した自動証明写真撮影機があるので心配しなくていい。センターに行って撮ればいいのだ。ちなみに値段は600円と比較的お得な値段設定になっているので安心していい。(4)の印鑑は忘れがちなので気を付けよう。いまどき印鑑が必要とは、それで何を証明しようとしているか意味がわからないが、申請書類に印鑑が必要だし、交付を受けた時に受領印が必要である。忘れれば印鑑を買いに走らなければならない。一般的な名前の人は100円ショップで間に合うのだろうが。
交付は実に早い。皮肉を込めて言うのだが、本当にこれが行政の仕事かと驚くくらい早い。窓口に書類を出し「椅子に座ってお待ちください」と言われたが、椅子に座ったとたん、と言っても過言ではないくらいに名前を呼ばれた。5分もかかっていない。
気を付けなければならないことは、神戸更新センターの窓口があいている時間が祝日休日を除く9:00~11:00、13:00~16:00だということだ。このあたりはいまだに「お役所仕事」を感じさせられるが、11:00~13:00の昼時はだめだし、夕方も16:00で終わるという早じまいだ。
センター内の自動証明写真撮影機で写真を撮ると2枚つづりの写真ができる。窓口で写真を渡すとこのうちの一枚を使い、もう一枚は返ってきた。「この写真は次の申請時に使いますね」と軽口を言うと苦笑された。国際運転免許証は一年間有効であり、次の申請には6か月以内に撮影した写真を使わなければいけないからだ。うけがわるかったので「じゃあ、弟が申請するときにでも使ってもらうことにしましょうかねえ」と言ったが、こんどは嫌な顔をされてしまった。
もうひとつ。申請の時に「以前に発行した国際運転免許証を返してくださいね」と言われた。この国際運転免許証は期限が終われば返却しなければならないのだ。手元に置いておきたければ、パンチで穴を開け無効にして返してくれるらしい。以前2009年にMicrosoft 2009 MVP Global Summitに行ったときに交付を受けたのだが、そういう記録もちゃんと残っていてパスポート番号に紐づいているようだ。
さらに、前回は運転免許証の裏に備考として国外免許発行のスタンプを押されたのだが、今は押さないらしい。なぜ押さないのかと窓口で聞いたら、今の免許証は裏の備考欄が少ないので押さないことになったんです、とのことだ。俺の運転免許証は平成21年に発行されたものなので、今は違うデザインになっているらしい。だがまだまだ新しい運転免許には変えてもらえない。俺はゴールド免許なので5年間有効なのだ。
なお、ここに書いていることはあくまで2012年2月12日時点のものです。
アメリカ行きの準備(2) – Microsoft 2012 MVP Global Summit参加のために – SONY BANKの2通貨決済機能付きクレジットカードを使おう
<Fig.1 : 二通貨決済ができるSony Card>
もちろん日本で使うクレジットカードを米国内でそのまま使うこともできるのだが、その場合、カードの請求額が米ドルから日本円に換算され、カード会社が設定した両替レートが適用される。このレートがどのくらいかわからないと、実際に買い物をした金額がどのくらいかわからない。だがこのカードを使えば、SONY BANKに持っている米ドルで決済されるので、カード会社の為替両替レートを心配しなくていい。
<Fig.2 : 二通貨決済ができるSony CardのDUAL CURRENCYマーク>
このクレジットカードは2009年にMicrosoft 2009 MVP Global Summitに行った時から使っている。日本にいても重宝することがあって、たとえば米amazonなどでの買い物のときにも使うことができる。為替手数料を心配しなくてよく安心だ。
米国では現金をあまり使わず、できるだけクレジット決済をしようと思っているので、おそらくこのカードを使うシーンが多くなるだろう。このカードを作るためには、まずソニー銀行に口座を作らなければならない。そして日本円で入金し、あらかじめ米ドルに交換しておく。ソニー銀行の為替手数料は確か格安だったはずだ。
できれば外貨を保有する銀行は一つにまとめておきたいところだが、現時点では米国内でATM出金にはCITI BANK、クレジットカードで米ドル決済するにはソニー銀行を使わなければならないので、2つの銀行に分散して米ドルを持っておかなければならかい。CITI BANKの窓口で聞いたところでは、依然CITI BANKでも米ドル決済クレジットカードを扱っていたことがあったらしいのだが、今はやっていない、とのことだった。ぜひ復活してもらいたい。そうすればCITI BANKにまとめることができるからだ。
なお、ここに書いていることはあくまで2012年2月11日時点のものです。
アメリカ行きの準備(1) – Microsoft 2012 MVP Global Summit参加のために – CITI BANKの使い方
2009年にMicrosoft 2009 MVP Global Summitに参加したときにもCITI BANKの口座を持っていたのだが、当時CITI BANKは口座維持手数料が必要だったので、その後当分海外に行くことはないだろうと思い口座を閉じてしまった。そこでこのたび、再度口座を開くことにした。
CITI BANK神戸支店は、以前は三宮駅の南側、神戸市役所の手前くらいにあり、三宮センター街などショッピングエリアから少し離れていた。それが最近、そごう本館の近く、フラワーロードに面した立地のよいところに移転している。センター街の三宮側出口からフラワーロードを横断歩道で渡ったところにある。とても使いやすくなった。
CITI BANKの応対は実に気分がいい。こちらが「お客様」であることを実感させてくれる。このことはひるがえっていえば、多くの日本の銀行ではお客様扱いされていないと感じることが多い、ということだ。特に用事がなくとも行ってみたくなるくらい気分がいい。ところでCITI BANKは、支店に行って口座を作れば口座維持手数料を必要とするのだが、ネットで口座をつくれば口座維持手数料がいらないようになっている。実際に支店に行って詳細を聞いたのだが、支店で申し込んでもネットで申し込んでもサービスは同じだということだ。そこでこのたびはネットで口座を申請して作ることにした。
やり方は簡単で、CITI BANKのサイトで手続きをし、運転免許などの証明書類を送るだけだ。これも免許証をスキャナでスキャンし、ネット経由で送ることで受け付けてもらえる。支店に行く必要はない。インターネットから口座を開くと、それは「e-セービング口座」と呼ばれるものになる。
ネットで申請が完了すると、数日でキャッシュカードが郵送されてくる。
<Fig.1 : CITI BANKのキャッシュカード>
キャッシュカードが届くと、自分のサインを紙に書いてCITI BANKに送らなければいけない。しかしこの書類は、支店に持って行っても受け取ってくれる。そこで今回、米国のATMでドルを引き出せる手続きも必要だったので、サインを支店に持っていくことにした。
CITI BANKの口座は、まず日本で口座を開いたときにできる「円普通預金口座」だけではなく、各国通貨を利用できる「マルチマネー口座」と米国内のATMで米ドルが利用できる「米ドル普通預金口座」の3つがある。インターネットで開いたのは「円普通預金口座」だけだったので他の口座を開く手続きもすることにした。
CITI BANKの神戸支店に行き、まずサインを提出する。そして「マルチマネー口座」と「米ドル普通預金口座」の手続きをする。CITI BANKのオンライ端末でいくつかの手続きをすると、しばらくして両方の口座ができ、米ドル普通預金口座のキャッシュカードも受け取ることができた。
<Fig.2 : 米国内のATMで米ドルが出金できるCITI BANKの外貨キャッシュカード>
このカードで米国のATMでドルを引き出すことができる。このカードを使うメリットは、為替手数料が安くすむことだ。ちなみに市中銀行で日本円を米ドルに替えようと思うと、たいていは1米ドルあたり3円が必要になる。しかしCITI BANKで日本円を米ドルに替えると、手数料が1米ドルあたり1円ですむ。また高額の現金を持ち歩くのも不用心なので、米国内でATMで現金を出せると現金を持ち歩かなくていいメリットがある。なお米国でATMを使うときには、210円の手数料がかかる。またこれ以外にもATMのオーナーによって別途手数料が必要になる場合があることは覚えておいていい。
<Fig.3 : 某大手銀行の外貨両替パンフレットの記載>
米ドルを「米ドル普通預金口座」に用意するためには、まず「円普通預金口座」に日本円を入金し、CITI BANKのサイトで米ドルを買い、まず「マルチマネー口座」に入れる。それから「マルチマネー口座」の米ドルを「米ドル普通預金口座」に振替えるということをする。これで米国内ATMで米ドルを出せる準備が整った。
ちなみに「円普通預金口座」のキャッシュカードも米国内ATMで使うことができる。この場合は米ドルを出すときに日本円から米ドルへの交換が行われ、為替手数料がその都度発生する。
ちなみに、本当に米国内のATMで米ドルが引き出せるかどうか不安だったが、CITI BANKの支店に行くと米国内ATMの引き出しシミュレーションができるので、ちゃんとカードが機能するかどうかを確認することができる。やってみたがオッケーだった。ちなみに「円普通預金口座」のキャッシュカードも確認してもらった。米国のATMは磁気の仕様が日本とはやや異なるようで、日本でATMで使えても米国ATMでは使えない場合があるようだ。
なお、ここに書いていることはあくまで2012年2月10日時点のものです。
マイクロソフトの川西裕幸さんのこと、そしてエバンジェリストという職業
マイクロソフト社でエバンジェリストであった川西裕幸さんが亡くなった。
私は個人的に川西裕幸さんと親しかったわけではない。しかし私は2004年からMicrosoft MVPをいただいており、Microsoft MVPとエバンジェリストの関係はとても深い。一般の方々にとってマイクロソフトのエバンジェリストは、イベントなどで華々しく技術の詳細を語る、いわばスターのようなものだ。しかしMVPにとってエバンジェリストは個人的に顔をあわせる機会もあり、またMVPだけの小規模なミーティングなどでお会いでき、一般の人にとってより身近な存在である。いわば同じ道場で修行する先輩、あるいは師匠のようなものに感じていると言っていいだろう。私にとっても川西裕幸さんがお亡くなりになったことは大きな驚きであり悲しみである。
そしてこのたびの訃報に際して、川西裕幸さんを知る多くの人が驚きと悲しみでそれを受け止め、いかに素晴らしい人であったかということを語っている。彼とともに働いた人が、彼の功績を称えている。彼の人柄を称えている。エバンジェリストとして素晴らしい人であったと、惜しみない賛辞を与えている。
マイクロソフトのエバンジェリストは、一言でいえば技術を平易に解説する人である。evangelistの語源は聖書の福音書の著者のことであるらしく、その意味から「福音伝道者」といった訳をすることもある。技術は宗教ではないのだが、新しい技術はそれが人々に知られなければ使われないし、抽象的な概念はある程度かみくだいて説明されればよくわかる、ということから、技術を解説することを主たる職業としている人を「エバンジェリスト」と呼んでいる。
マイクロソフトのエバンジェリスト達はもちろんマイクロソフト社で働いているのだから、マイクロソフト社の製品について技術を解説することが仕事である。当然、マイクロソフト社の製品が売れるように技術を解説し宣伝する。しかしこれが他の分野における宣伝活動と根本的に異なるのは、エバンジェリストは技術の客観的な優位性に基づいて語るところだ。エバンジェリストはまず徹底的にマイクロソフト製品を使い倒すことからはじめる。自社製品の隅から隅までを知り尽くして技術を解説する。これを「それは当然のことだろう」と言うのは簡単だが、現実は難しい。
マイクロソフト社には山のようなソフトウエア製品がある。製品として販売されているものだけでなく、追加機能やユーティリティとして無償で提供されているものもある。そしてエバンジェリストは特定の製品ごとに専門があるわけではない。もちろんある一定範囲の技術分野というものはあるのだが、主たる目的はユーザーが実現したいことを技術的に解説することになるので、そのためには関連する製品について周知していなければならない。そして今日ではあらゆるソフトウエアがネットワークで情報をやりとりしている。多くのサービスが連携し互いに影響を与え合っている。バージョンアップのサイクルは短い。ある製品が発売された時には、もはや次のバージョンの開発が始まっている。
私の知る限りにおいて、マイクロソフトのエバンジェリストの方々は、技術においてまったく公平で客観的である。決してマイクロソフト製品を誇大に宣伝することはない。場合によってはオープンソースのプログラムの使用を勧めることすら、ある。エバンジェリストはマイクロソフト製品を使いこなすだけではなく、他社製品やオープンソースのソフトウエアを評価することにも多くの時間を費やしているに違いない。おそらく気の遠くなるような作業である。
エバンジェリストの仕事として最も重要だと思われることは、最新の技術を伝えることである。コンピュータやネットワークの世界では、最新の技術をいち早く取り入れることが最も価値があることだからだ。世の中には技術の変化になかなか追い付けない人がいて、そんな人には「ドッグイヤー」どころか「マウスイヤー」とも言われる技術革新が居心地悪いと思えるかもしれない。しかし間違いなく技術革新が私たちの生活を豊かにしているのだ。技術革新によって必ず何かが今まで以上に簡単に実現できるようになる。これは逆説的にいえば、今まで以上に簡単にできるからこそ、その技術が世に現れ使われようとしているのだ。
実現するのに10時間かかっていたことが、新しい技術を使うと5時間でできるようになった。すると余った5時間を人は何か他のことに使うことができる。10人でやらなければならなかったことが5人でできるようになれば、5人は何か他のことをすることができる。人は技術革新によって豊かになってきた。技術がなければ誰もが朝から晩まで生きるための活動に追われていた太古の昔から、現代は多くの人が生きることに直接時間と労力をつかわなくても生きていける時代になった。これからもそうである。新しい技術が次々に開発されることによって、それを使う私たちはますます豊かになっていく。
つまりエバンジェリストは高度情報通信社会に生きる私たちの生活をさらに豊かにすることに携わる人である。直接に技術を使う私たちは、エバンジェリストの導きによって、より効率的に高度情報通信社会を支えていける。エバンジェリストはそのことに誇りを持ち、その先達であった川西裕幸さんに心から哀悼の意を捧げる。私たち技術にかかわる者も、川西裕幸さんの志を引き継ぎ、真摯に仕事に向かう。私たちが生きるこの世界を豊かにするために。
期限切れで保守交換になったサーバー用の無停電電源を利用してギターアンプをバッテリー駆動に改造する
手持ちのギターアンプの電源トランスを取り外し、期限切れで保守交換になったサーバー用の無停電電源を利用してギターアンプをバッテリー駆動に改造することを考えた。改造するのは某ギターショップで初心者用ギターセットを買ったときについていたおまけのギターアンプで、ARIAのAG-20Xである。
<Fig 1 : 初心者向けギターセットについていたおまけのギターアンプ>
やや強引だが、できるだけ簡単に改造することを考え、電源トランスを切断し、基盤の電源供給部に直接コードをはんだ付けした。電源はプラスマイナスの2極供給だ。
<Fig 2 : 電源トランスを切り離し基盤に電源供給のコードを直接はんだ付けした>
電源供給ケーブルの先端は、自動車電装用のコネクタを取り付け、アンプ本体から引き出す形にした。プラスとマイナスを区別してプラグのオスメスを決めている。
<Fig 3 : 電源供給ケーブルを引き出して先端に自動車電装用のコネクタを取り付けた>
使用する電源は、サーバーの無停電電源に使われているもので、期限切れで保守点検の際に取り外されたものだ。この電源は鉛蓄電池で、経年変化で弱ってはいるが、全く使えないものではない。非常時に動作しないと困るので保守点検で外されたが、まだある程度は使えそうなものだ。
これは本来は望ましいことではないが、コネクタ部に直接ケーブルをはんだ付けしている。ケーブルの先端には自動車電装用のコネクタを取り付ける。出力プラスにオスのコネクタを、出力マイナスにメスのコネクタを取り付け、本体ギターアンプのプラスマイナスとあうようにする。
<Fig 4 : サーバーの無停電電源に使われていた鉛蓄電池にケーブルを取り付ける>
バッテリーを本体につないだところ。この状態でギターをインプットして試奏してみるが、ちゃん正常に駆動してくれた。この後はバッテリーを本体にどう格納するか、電源スイッチをどうするか、を考える。
できれば横に並べて配置したいところだが、ギターアンプの横幅が足りないので、横に並べることはできない。バッテリーは鉛蓄電池なので、横に倒すことはできない。容積的にはスペースはあるのだが、縦に積み上げるしかない。電極が他に触れないようにもしなければならないので、ギターアンプ内部に仕切りを設けて縦に2つバッテリーを格納できるようにしたいところだ。
電源スイッチは別途考えよう。
<Fig 5 : バッテリーをギターアンプに接続して音を出してみる>
このギターアンプをRolandのバッキングマシンJS-8、通称「e-Band」につないでみる。JS-8のイヤホン出力をギターアンプのギター入力に接続するのだ。イヤホン出力はミニステレオジャック、ギターアンプのギター入力は標準プラグなので、ミニステレオと標準プラグの変換ケーブルを使う。
<Fig 6 : Roland JS-8を改造したバッテリー駆動のギターアンプで鳴らす>
やはりギターアンプで音を出すと、低音がしっかり出ていい。もちろん音もしっかり大きく出ている。この組み合わせでストリート演奏を試すとしよう。
Access – レコードソースを設定せずテキストボックスに入力した文字列によってSQL文でデータを絞り込みVBAで動的にテーブルのレコードを取得する
前回、前々回に、アクセスのフォームやレポートでレコードソースをプロパティに設定せず、VBAからSQL文によってレコードソースを指定してデータを取得する方法の概要をまとめてみた。
「Access – レコードソースを設定せずVBAで動的にテーブルのレコードを取得する」
http://matsumotoyoshio.wordpress.com/2011/12/25/access-%e3%83%ac%e3%82%b3%e3%83%bc%e3%83%89%e3%82%bd%e3%83%bc%e3%82%b9%e3%82%92%e8%a8%ad%e5%ae%9a%e3%81%9b%e3%81%9avba%e3%81%a7%e3%83%86%e3%83%bc%e3%83%96%e3%83%ab%e3%81%ae%e3%83%ac%e3%82%b3/
「Access – レコードソースを設定せずSQL文でデータを絞り込みVBAで動的にテーブルのレコードを取得する」
http://matsumotoyoshio.wordpress.com/2011/12/25/access-%e3%83%ac%e3%82%b3%e3%83%bc%e3%83%89%e3%82%bd%e3%83%bc%e3%82%b9%e3%82%92%e8%a8%ad%e5%ae%9a%e3%81%9b%e3%81%9asql%e6%96%87%e3%81%a7%e3%83%87%e3%83%bc%e3%82%bf%e3%82%92%e7%b5%9e%e3%82%8a/
今回はVBAによってフォームのテキストボックスに入力した文字列によってSQL文でデータを絞り込みVBAで動的にテーブルのレコードを取得する方法をまとめてみる。
テーブルのサンプルデータは、テーブル構造は前回までの説明で使ったものと同じだが、少しデータを増やした以下のようなものを使う。
<Fig 1 : 絞り込み検索をするテストデータ>
検索するためのフォームは、新しい空白のフォームを作成し、フォームヘッダーを作成する。フォームヘッダーにはテキストボックスをひとつ、ボタンを2つ作成する。テキストボックスは非連結で、名前を「検索氏名」としておく。ボタンの表題には、それぞれ「全文一致」と「部分一致」とする。
詳細にはデータ表示のためのテキストボックスを3つ作成する。フォームのプロパティにはレコードソースを設定しないが、それぞれのテキストボックスのプロパティでコントロールソースには各フィールド、すなわち「学籍番号」、「氏名」、「性別」を記述しておく。
<Fig 2 : データを検索して表示するフォームをデザインする>
フォームのデザインができたら、ボタンのイベントハンドラにVBAコードを書こう。コードを書くにはボタンを選択してプロパティシートの「イベント」タブで「クリック時」のイベントを「・・・」をクリックする。「ビルダーの選択」ウィンドウが表示されたら「コードビルダー」を選択して「OK」をクリックする。
「全文一致」ボタンのイベントハンドラには次のコードを記述する。
———————————————————————————
Me.RecordSource = "select * from 生徒1 where 氏名 = ‘" & 検索氏名 & "’"
———————————————————————————
ここで記述するSQL文は、select * from 生徒1 where 氏名 = (「検索氏名」テキストボックスのテキスト)、であるが、「検索氏名」テキストボックスの記述方法は、ダブルクォーテーションで囲まれたSQL文の外に「&」演算子で接続する。検索氏名の実態はテキストなのでシングルクォーテーションで囲む。したがって「&」で挟まれる「検索氏名」テキストボックスの記述の前後は、シングルクォーテーションとダブルクォーテーションで挟まれることになる。
次に「部分一致」ボタンのイベントハンドラには次のコードを記述する。
———————————————————————————
Me.RecordSource = "select * from 生徒1 where 氏名 like ‘*" & 検索氏名 & "*’"
———————————————————————————
ここで記述するSQL文は、select * from 生徒1 where 氏名 like *(「検索氏名」テキストボックスのテキスト)*、である。「検索氏名」に入力された文字列の前後を「*」で囲み、文字列を含む指定にする。上と同様に「検索氏名」テキストボックスの記述方法は、ダブルクォーテーションで囲まれたSQL文の外に「&」演算子で接続するので、「&」で挟まれる「検索氏名」テキストボックスの記述の前後は、シングルクォーテーションとアステリスク、そしてダブルクォーテーションで挟まれることになる。
VBAコードの全文は次のようになる。
———————————————————————————
Private Sub コマンド1_Click()
Me.RecordSource = "select * from 生徒1 where 氏名 = ‘" & 検索氏名 & "’"
End Sub
Private Sub コマンド2_Click()
Me.RecordSource = "select * from 生徒1 where 氏名 like ‘*" & 検索氏名 & "*’"
End Sub
———————————————————————————
<Fig 3 : ボタンのイベントハンドラにVBAでSQL文を記述する>
コードを記述したらフォームを開いてみよう。フォームが開いた時点ではレコードソースが指定されていないので、データは何も表示されず、テキストボックスは「#Name?」となってエラー表示になる。
「検索氏名」に文字列を入力し、「全文一致」か「部分一致」のボタンをクリックする。たとえば「織田 信長」のようにフルネームを入力し「全文一致」ボタンかまたは「部分一致」ボタンをクリックすると「織田 信長」のレコードだけが表示される。「徳川」のように氏名の一部だけ入力したときは、「全文一致」では何も表示されず、「部分一致」のボタンをクリックしたときに、部分一致したデータが表示される。
<Fig 4 : フォーム「生徒フォーム」を開いてもデータは何も表示されない>
<Fig 5 : 「検索氏名」テキストボックスに「織田 信長」と入力して「全文一致」または「部分一致」ボタンをクリックした>
<Fig 6 : 「検索氏名」テキストボックスに「徳川」と入力して「全文一致」ボタンをクリックしてもデータは表示されない>
<Fig 7 : 「検索氏名」テキストボックスに「徳川」と入力して「部分一致」ボタンをクリックして3件のレコードが表示された>
Access – レコードソースを設定せずSQL文でデータを絞り込みVBAで動的にテーブルのレコードを取得する
Accessでフォームやレポートを作りデータを表示するとき、一般的にはレコードソースをフォームのプロパティに指定するが、レコードソースを設定せずにフォームやレポートを作成し、VBAで動的にレコードソースを指定するとSQL文が使える。SQLに熟練しているなら、この方法で自由にレコードソースを扱うことができ、応用しやすい。
レコードソースを設定せずにフォームを作りVBAでSQL文を書き動的にデータを取得する方法の概要は以下のページを見てほしい。
「Access – レコードソースを設定せずVBAで動的にテーブルのレコードを取得する」
http://matsumotoyoshio.wordpress.com/2011/12/25/access-%e3%83%ac%e3%82%b3%e3%83%bc%e3%83%89%e3%82%bd%e3%83%bc%e3%82%b9%e3%82%92%e8%a8%ad%e5%ae%9a%e3%81%9b%e3%81%9asql%e6%96%87%e3%81%a7%e3%83%87%e3%83%bc%e3%82%bf%e3%82%92%e7%b5%9e%e3%82%8a/
さて、ここで使うSQL文にデータを絞り込むものを使ってみよう。たとえば「男」のデータだけ取得する次のようなSQL文だ。
——————————————————————————–
select 学籍番号,氏名,性別 from 生徒1 where 性別 = 男
——————————————————————————–
まずテーブル「生徒1」に次のようなデータを用意する。
<Fig 1 : テーブル「生徒1」に用意したサンプルデータ>
フォームの作成でレコードソースを指定せずに「生徒フォーム」を作成する。新しいフォームができたらデザインビューにし、「フォームヘッダー/フッター」を作り、フォームの既定のビューを「帳票フォーム」に変更する。フォームヘッダーと詳細の高さを調節する。
次に「詳細」エリアにテキストボックスを3つ作る。各テキストボックスは、プロパティの「データ」タブ「コントロールソース」に、それぞれ表示させたいフィールド名「学籍番号」、「氏名」、「性別」を記述する。通常レコードソースを設定したフォームの編集では、ここでテーブルのレコードソースが表示されドロップダウンリストから選択できるが、ここではレコードソースが設定していないのでリスト表示はされない。キーボードから文字入力でフィールドを設定しておく。
そしてフォームヘッダーには3つボタンを作成する。ボタンの「表題」はそれぞれ「全部」、「男だけ」、「女だけ」としておこう。
<Fig 2 : データを取得するフォームをデザインする>
そしてボタンのクリックイベントに以下のVBAコードを記述する。このときSQL文では、スタティックな文字列はシングルクォーテーション「’」で囲む。
———————————————————————————
Private Sub コマンド1_Click()
Me.RecordSource = "select 学籍番号,氏名,性別 from 生徒1"
End Sub
Private Sub コマンド2_Click()
Me.RecordSource = "select 学籍番号,氏名,性別 from 生徒1 where 性別 = ‘男’"
End Sub
Private Sub コマンド3_Click()
Me.RecordSource = "select 学籍番号,氏名,性別 from 生徒1 where 性別 = ‘女’"
End Sub
———————————————————————————
<Fig 3 : ボタンのクリックイベントにVBAでSQL文を書く>
このフォームを実行すると、フォームを開いたときにはレコードソースが設定されていないのでテキストボックスにはエラーが表示され、「全部」のボタンをクリックすると全てのデータが、「男だけ」では男のデータだけ、「女だけ」では女のデータだけが表示される。
<Fig 4 : フォームを開いたところ>
<Fig 5 : 「全部」ボタンをクリックして全件データを取得した>
<Fig 6 : 「男だけ」ボタンをクリックして男のデータだけを取得した>
<Fig 7 : 「女だけ」ボタンをクリックして女のデータだけを取得した>
Access – レコードソースを設定せずVBAで動的にテーブルのレコードを取得する
アクセスのフォームやレポートは通常レコードソースをプロパティ値に設定してデータを表示する。しかしあらかじめレコードソースを設定しなくても、VBAを使って動的にレコードソースを設定し、データを表示することができる。このときレコードソースの記述がSQL文でできるので、SQLを使ったレコード操作に慣れた人には、このVBAを使った処理はわかりやすく、応用しやすいだろう。たとえばこんなかんじだ。
まずAccessデータベース上に2つのテーブル「生徒1」と「生徒2」を作ってみる。テーブルのフィールドはどちらも同じ構造とし、「学籍番号」、「氏名」、「性別」があるとする。しかしデータの内容は違う。
<Fig 1 : 「生徒1」テーブルを作成する>
<Fig 2 : 「生徒2」テーブルを作成する>
テーブルを作成し適当なデータを作れば、次にフォームを作成する。Access2003の場合は「挿入」-「フォーム」で「新しいフォーム」ウィンドウを開き「基になるテーブルまたはクエリの選択」を空白にしたまま「デザインビュー」をクリックする。Access2007とAccess2010の場合は「作成」-「空白のフォーム」をクリックする。
新しいフォームができたらデザインビューにし、「フォームヘッダー/フッター」を作り、フォームの既定のビューを「帳票フォーム」に変更する。フォームヘッダーと詳細の高さを調節する。フォームの名前は「生徒フォーム」として保存しておこう。
<Fig 3 : レコードソースを指定しないフォームを作る>
ここでいちどフォームを「フォームビュー」にして表示してみよう。レコードソースが指定されておらず、テキストボックスもなにもないので、単に真っ白な画面が表示されるだけである。
<Fig 4 : レコードソースを指定しないフォームを表示した>
次に「詳細」エリアにテキストボックスを3つ作る。各テキストボックスは、プロパティの「データ」タブ「コントロールソース」に、それぞれ表示させたいフィールド名を記述する。通常レコードソースを設定したフォームの編集では、ここでテーブルのレコードソースが表示されドロップダウンリストから選択できるが、ここではレコードソースが設定していないのでリスト表示はされない。キーボードから文字入力でフィールドを設定する。
<Fig 5 : 「学籍番号」、「氏名」、「性別」のテキストボックスを作成する>
テキストボックスを作成したら、もういちどフォームを開いてみよう。もちろんレコードソースが指定されていないので、データは何も表示されない。各フィールドには「#Name?」というエラーが表示されている。
<Fig 6 : データソースが指定されていないフォームを開いたので「#Name?」エラーが表示される>
次にデータソースをVBAで記述するコードを書くが、このコードをボタンのクリックイベントで実行させることにする。そのためにフォームのフォームヘッダーに2つボタンを作成する。ボタンの「表題」はそれぞれ「生徒1データ」、「生徒2データ」としておこう。
<Fig 7 : フォームヘッダーにボタンを2つ作り表題を設定した>
次にVBAコードを書くため、「生徒1データ」の表題を書いたボタンを選択し、プロパティの「イベント」タブから「クリック時」の横の「・・・」をクリックする。すると「ビルダーの選択」ウィンドウが表示されるので、「コードビルダー」を選択して「OK」をクリックする。
<Fig 8 : ボタンのクリック時イベントをVBAで記述するためにコードビルダーを開く>
コードビルダーが開いたら、クリックイベントに対応するイベントプロシージャができている。ここに次のコードを書く。
——————————————————————————–
Me.RecordSource = "select 学籍番号,氏名,性別 from 生徒1"
——————————————————————————–
ダブルクオーテーションで挟まれた部分は単純なSQL文である。
<Fig 9 : コードビルダーでイベントプロシージャを表示する>
<Fig 10 : コードビルダーにレコードソースを指定するコードを書く>
コードが書けたらフォームを開いてみよう。フォームを開いた時点ではレコードソースが指定されていないので、各テキストボックスには「#Name?」のエラーが表示されているが、「生徒1データ」ボタンをクリックすると「生徒1」テーブルを指定したクエリが実行され、データが表示される。
<Fig 11 : レコードソースを指定しないフォームを開く>
<Fig 12 : 「生徒1データ」ボタンのクリックでレコードソースを指定し「生徒1」テーブルのデータを表示した>
では次に「生徒2データ」ボタンのクリックイベントで「生徒2」テーブルからデータを取得するレコードソースを記述しよう。SQL文のfrom句でテーブル名を変更するだけだ。
<Fig 13 : 「生徒2データ」ボタンのイベントプロシージャにレコードソースを指定するコードを書く>
これで「生徒1データ」ボタンをクリックすると「生徒1」テーブルのデータを表示し、「生徒2データ」ボタンをクリックすると「生徒2」テーブルのデータを表示するフォームができた。
<Fig 14 : 完成したフォームを開き「生徒2データ」ボタンをクリックすると「生徒2」テーブルのデータが表示される>
<Fig 15 : 完成したフォームを開き「生徒1データ」ボタンをクリックすると「生徒1」テーブルのデータが表示される>
このようにフォームやレポートをデータソースの指定なしに作成し、ボタンクリックなどで動的にレコードソースを指定してデータを表示させることができる。ここで重要なことは、レコードソースの記述が一般的なSQL文で記述できることである。SQL文に習熟したものなら、自由にレコードセットを記述してフォームやレポートに動的に表示させることができる。とてもわかりやすい。
山近慶一様「Windows コマンドプロンプト ポケットリファレンス」出版記念と 今年を振り返る会(略称:コマポリ忘年会)
雑誌等で数多くの技術情報を発信しておられるWindowsの大家、山近慶一氏が技術評論社から「Windows コマンド プロンプト ポケットリファレンス」を出版されました。この出版を記念して、著者である山近慶一氏を囲み、下記のとおり懇親会を行います。みなさま万障お繰り合わせのうえご参集ください。
名称:山近慶一様「Windows コマンドプロンプト ポケットリファレンス」出版記念と
今年を振り返る会(略称:コマポリ忘年会)
日時:2011年12月22日、19:00(決定)
場所:梅田 CUISINE&個室BLUE RESORT 青の洞窟
http://r.gnavi.co.jp/kag3103/
〒530-0027 大阪府大阪市北区堂山町4-12 白馬車ビル6F
TEL:06-6131-2461
地下鉄御堂筋線梅田駅 徒歩2分
阪急京都線梅田駅 徒歩2分
地下鉄谷町線東梅田駅 徒歩2分
参加費:約4,332円
幹事:松本吉生
参加方法:電子メールで申し込み:
—————————————————————————
宛先アドレス:
20111222komapore@matsumotoyoshio.com
タイトル:「山近慶一様『Windows コマンドプロンプト ポケットリファレンス』出版記念と
今年を振り返る会(略称:コマポリ忘年会)」に参加いたします
本文:
氏名 松本吉生(まつもとよしお)
(所属や山近慶一様とのご関係を簡単に記述していただければ幸いです。)
—————————————————————————
人数がほぼ確定した時点で場所を決め予約をします。詳細は申し込み電子メールアドレスにお送りいたします。
会場手配の都合上、皆様におかれましては、できましたら早めの申し込みをお願いいたします。


