このサイトはMicrosoft Accessの良さを活かした
使えるプログラムの簡単な作り方」を紹介するホームページです
質問はAccess質問掲示板まで

2005年7月のコラム

2005/07/02 「俺、マクロ使わねぇ」宣言

今日からブログ書くことにしました。
ホームページの更新はちょっと大変ですけど、 これなら空いた時間に更新できるので・・・ (^ー^;;

早速ですけどAccessネタで・・・
「Accessを早く覚えたいんですけど、いい方法ないですか?」と、結構聞かれます。 本だったり、ホームページとかお勧めできるものはあるのですが、それよりも先に「俺、マクロ使わねぇ」宣言をした方がいいっす

ウィザードやマクロ使っても、全然、思った通りに作れないですから。 それならVBAを少しずつ勉強していった方が、早く・確実に理解できます。

マクロでは出来ない事の方が多くて、ちょっと手を加えるにも悪戦苦闘させられます(−−;;
わからないながらも、VBAを使ってみると、Accessの面白さも倍増しますよ。

では、フォームにボタンを貼り付けてください。 そのボタンのクリック時イベントのイベントプロシージャを開いて、 MsgBox("「俺、マクロ使わねぇ」宣言します") と書きます。

フォームを開いて、ボタンをクリックしてください。 これで、Accessを楽しみながら、覚えられます


2005/07/03 地区予選を勝つ

ラジオで聞いた話ですけど・・・
--------
「人間にとって外見というのは、高校野球で言えば地区予選みたいなもの。
 内面こそが甲子園なんだ」
「つまり、内面を磨けということですね!」
「違う。地区予選で勝たないと、甲子園には出場できないということだ」
--------
なるほど、納得です
これって、プログラムにも当てはまると思うんですよ。

どんなに便利な機能があっても、見栄えやデザインが悪いと、
使う人は「使いにくそうだなぁ」と思いますし(^ー^;;

私が使っているブラウザ「Sleipnir」は、
便利な機能満載ですごいのですが、それ以上に見栄えがカッコいいです。
見た目から「すごい便利そうだなぁー」って感じがします(^ー^

Accessにしても、使いやすそうな画面で、 まずは地区予選での1勝を目指しましょう。

ウィザードが作る画面はダメダメっすね 地区予選の初戦敗退です(−−;;


2005/07/04 キレイな字と読みやすい字

昔から字を書くのが苦手で、ごにょごにょしたような字しか書けなくて、
相手に手書きで渡す時「ごめんです・・・(−−;;」と思いながら、
ヘタ字で書かれた書類を渡してます。

これでも、少しは上達しようと本を読んだりしたんですけど、
その効果は無いようです(−−;;
で、本に書いてあったのが・・・
「ヘタな字=読みにくい字」ではないということでした。

・文字の位置を揃えて書く
・漢字は大きめ、ひらがなは小さめに書く

こうすると、ヘタ字であっても読みやすいので、
そこまで字がヘタな感じはしないそうです。

未だに読みにくい字を書く私が言うのも何ですが・・・
Accessのフォームも似たようなものですよね。
微妙にでこぼこしてたり、大きさが不均一だったりすると
(?ー? ん?? って感じになっちゃいます。

手書きの文章に、
書式メニューの「配置」「サイズ変更」が使えたら便利なのに、
と思ってしまいました(^ー^;; 下揃えとか


2005/07/05 忘れちゃいけない組み合わせ

Accessでは、今のレコードの状態を把握することが重要です。

「普通は動くんだけど、データを修正すると動かない」といったエラーは、 このレコードの状態が原因です。

修正したデータというのは「次のレコードに移動」といった動作がないと、 レコードとして保存されません。 なので・・・ 画面で変更はしているけど、 テーブルには反映されていない、中途半端な状態となっています。

この中途半端な状態でレコードの削除を実行すると、 Accessのエラーがでます。(特に新規レコードの場合)

では、どうするかというと・・・
常に、削除を実行する前に「レコードの保存」を実行しちゃえばOKです。

ボケたら→ツッコむ
カレー→福神漬け
と同じように

保存→削除
忘れちゃいけない組み合わせですね。

ただし・・・
アイス→醤油
これだけは納得できねぇ(▼ー▼  なんで甘味に醤油なんだ


2005/07/06 騙されちゃいけねぇ そいつは偽物だ

昨日、レコードの状態について書いたので、その続きです。
レコードを修正した後に(保存されない状態での)削除でエラー発生、これは事前にレコードを保存することで回避できるってとこまで書きましたが、回避できない場合があります。

新規レコードに移動して、何も入力していない状態で削除すると、エラーが発生します。入力されてないので事前の保存も意味がなく、レコードとして存在しないものを削除しようとしているので、 Accessのエラーが発生します。

では、どうするか・・・
NewRecordプロパティという便利なものがあります。これは新規レコードの時はTrueを返すので、これを使って判断します。

このプロパティ、新規レコードで入力した場合、レコードが保存されていない状態では、 Trueを返すので、このプロパティを使う前には、必ずレコードを保存する必要があります。

削除の処理は、こうなります
@レコードの保存
AフォームのNewRecordプロパティをチェック(Trueだったら処理中断)
  If Me.NewRecord = True Then
    Exit Sub
  End If
Bレコードの削除

これでOKです。

「何も入力されていない新規レコード」これを見破ることが重要です。なんとなく、インディジョーンズとかで見かける宝箱の罠に近い感じがします。
「待ちな、その宝箱は偽物だ・・・(´ー`)┌フッ」
で、下っ端が偽物の宝箱を開けて大きな石が転がってくるんですよ
(^ー^ あー やっぱり


2005/07/07 俺のは14徳だ!!

ちょっと懐かしいネタですが、10徳ナイフが小学校低学年のころ流行ってました。ガチャガチャ(がちゃぽん)ですけどね。 で、このナイフ、缶きりとか付いているから、そりゃ便利・・・かと思いきや、便利すぎると、逆に使う場面に出会わないものなのか、ほとんど使わないまま、新品同然の状態でどこかに失くしてしまいました
(−−;;

10徳ナイフという言葉が古いのですが、 Accessとどう関係あるのかと言えば、DoCmdオブジェクトです。これは10徳ナイフっぽい感じの便利さです。(10徳ナイフが便利だったかは、使ってないのでわからないですけど・・・)

よく使うところで
フォームを開く DoCmd.OpenForm
レポートを印刷 DoCmd.OpenReport
カーソルの移動 DoCmd.GotoControl

他にも、画面を最小化・最大化、メール送信、マウスポインタを砂時計に変更など、色々な事ができます。

ヘルプで調べてみると「へぇー こんな事もできるんだ」と関心します。ぜひ、DoCmdの機能を使ってみてください、メール送信とかなかなか面白いことができますよ。

確か10徳ナイフブームの終わりかけのころ、 11徳とか12徳とか、数で勝負するようになってきました。 で、クラスメートが14徳ナイフとか自慢げに持ってきたんですよ。かなり引きました・・・
「分厚すぎて使えねぇーだろ(−−;;」
無駄な機能ばっかりですよ、耳かきとか(^ー^;; なんでナイフに耳かき

何にしてもブームの終わりってのは、人を冷静にさせます。 300体集めたキン消し・・・ 処分に困りました。

DoCmdの後に . を入力すると入力候補がドロップダウンしますが、その様子が10徳ナイフっぽかったので、今日のネタにしてみました。
ただそれだけです(^ー^;;


2005/07/08 クエリーって何?と聞かれた時は

昨日はドラマ電車男が放送されてましたね。私は1日の活動時間の大半をパソコンの前で過ごしているのですが、電車男は2ch内で完結後に、まとめサイトで知りました、かなり電車に乗り遅れてしまいました(^ー^;;

さてさて、Accessネタですが、返事に困る質問って物は人それぞれあるもので、私の場合「クエリーって何?」と聞かれると、なんとも答えにつまります
(−−;;
同業者には「SQLを視覚化した物なんすよ」と言えば、何となくわかってもらえるのですが、 Access初心者にはハードルが高すぎです。「SQLって何?」から「リレーションって何」・・と具体的な説明だと、どこまでも説明が終わらなくなります。

少し話が変わりますが、うちには小さい子供がいます。ビデオデッキにバナナを詰め込んで再起不能にした、なかなか手ごわい相手です。次の対戦相手DVDレコーダーは、ローマ法王並みに厳重警備されているので、今のところは安全ですが油断禁物、緊張感あふれる戦いが日夜繰り返されています。 子供とつみきで遊んでて気付いたのですが、これがクエリーの答えにピッタリなんですよ。

例えば、一緒につみきで遊んでいると、それぞれパーツを半分づつにしますよね。
すると子供の手が伸びてきて、三角のつみきを横取りされます。また、手が伸びてきて、棒のつみきを横取りされます。そうすると、子供の方は最初は家を作ってたはずが、立派なお城ができあがるんですよ
また、全部できたと思ったら「あちょー」っていきなり壊します
(−−:: 自分のを壊せよ・・・

子供は気分屋ですから、四角つみきばっかり集めて、余った丸つみきは、こっちに寄せたりもします。
丸だけで何を作れと・・・ (TーT

こんな感じで、1人、または2人でつみき遊びしてて、それぞれ横取りしたり、必要なものだけ集めたりして、思った通りに組立てるのがクエリーです。 もちろん壊すのもクエリーです(^ー^;;

子供とつみき遊びすると、想像力が鍛えられるって実感しました。棒1つと、丸1つだけ残って、あとは横取りされましたから、足りない部分は想像力でカバーですよ(^ー^;;

幼稚園に通いだしてからは、しつけの意味で、「取るんじゃねー」と言って、日夜、子供と互角のつみき勝負をしています。


2005/07/09 見せない工夫

昨日、まだ梅雨なのですが、クーラー病にかかってダウンしました。 8月になるのが怖いんですけど・・・(−−;;

Accessネタですが、今日はちょっとした見せ方のコツです。 自分で作ったAccessのソフトって、少しでもカッコよく見せたいですよね。

カッコよく見せるにはコツがあって、使わないものは見せないようにするってことがポイントです。

例えば、カード型のフォームにはレコードセレクタや、スクロールバーはいらないですよね。最大化ボタン、最小化ボタンもあまり使わないと思います。
Accessのメニューバーもフォームを作って実行している時は、使わない項目ばかりなので、消した方がすっきりします。

個人的には、データが多いものは一覧画面と検索機能を作るので、入力画面、一覧画面共に移動ボタンは消してます。

これだけで画面はすっきりします。
使わないものがなくなると、部屋がすっきりするのと同じですね。

こう書いていますが、私は部屋のかたづけが苦手なんですよ・・・ 今も、あちゃー って感じで散らかった部屋の中でブログを書いています。見せないようにするために、とりあえず押入れに入れることにします
(−−;; 見なかったことにしてしまえ


2005/07/10 マジックで手に「給食ぶくろ」

子供の頃ですけど、クラスに忘れ物が多い子ってのは、何人かいますよね。私もその中の1人なんですけど、月曜日に洗濯した給食袋を持って行かなきゃならないのに、毎回忘れてました。
さすがに忘れ物が多すぎるので、マジックで手に「給食ぶくろ」と書かれました
(−−;; まじすか・・・

まぁ さすがに手にデカデカ書かれりゃ、忘れる訳もなく、きちんと持っていけたんですけどね。その後も「習字どうぐ」「連絡ちょう」とか色々書かれてました。

ここまで書かれる前に、どうにかしろって事ですけど、かなりだらしない子だったんですよ
(^ー^;; たぶん

まあ、忘れちゃいけないって事つながりですけど・・・、 Accessで言うところの、未入力をチェックさせたい項目(必ず入力させたい項目)ですね。こういう項目はVBAでチェックするのが面倒なんですよ。
テーブル項目にプロパティで設定できますけど、エラー発生のタイミングが制御面倒なんで、使わないです。

で、私はどうしているかといえば、忘れないように入力する前から値を入れてます、その項目を消されても自動的に値を再度セットするようにします。

コンボボックスで男性・女性を選ぶ項目だったら、初めから男性を選んでおいて、[DEL]キーで消されたら、男性に再セットします。

これなら、必ず値は入っているので、未入力でのエラーは無くなりますし、
未チェック用にVBAを書くよりも、ずっと簡単ですね(^ー^


2005/07/11 規定値プロパティの便利な使い方

昨日「未入力をチェックさせたい項目には、あらかじめ規定値として値を入れておく」と書いたので、今日は規定値プロパティの便利な使い方を紹介します。

主な使い方としては
・日付を入力する項目には、あらかじめ今日の日付をセットする
・男性、女性など選択項目が限られているものの、どちらかをセットする

これ以外にも便利な使い方として、
「キーを自動的に最大値+1でセットする」ということができます。これは入力画面全てに使えるので、かなり使う機会が多いです。

具体的には、規定値プロパティに Dsum でレコードの最大値を取得し +1 しています。
[SAMPLE1]では、こんな感じです
=NullToValue(DMax("tm01_KokyakuCode","tm01_Kokyaku"),0)+1

同じ様な動作はVBAコード(レコード挿入前・後イベント)で書けるのですが、規定値プロパティに書いた方がVBAコードを書かずに済むので、気楽に設定でき使い勝手がいいです
(^ー^


2005/07/12 気配りのススメ

ここしばらく、九州は雨続きです。
今日も天気がわるいですけど、今日外出する予定があります(−−;;

Accessネタです
画面は「見栄えも大事」と前に書いたことがありますが、見栄えだけではダメなんですよね(^ー^;; 当たり前ですが・・・

住所を入力するところで、IMEが自動で「オン」にならないとか、 TAB順がバラバラとか
見栄えが良くても、こんな所が出来ていないと、「見た目だけかぁ (−−;;」と思っちゃいます。

どちらかといえば、見栄えよりも先に、IMEとかTAB順をきちんとすべきだと思います。

こういった気配りは、見た感じだけではわかりにくく、使っていても気付かない目立たない存在ですが、そういうものです。
逆に、こういった気配りがされていないと「なんとなく使いにくい」と感じますから。

自分からガンガンアピールする気配りってのは、なんか嫌な感じですよね(^ー^;;
相手に気付かせない「さりげなさ」が重要です。

何かのランキングでしたけど、女性が男性に惹かれるポイントランキングで、ルックスはかなり下の方で、1位は、さりげない優しさ・気配りでした。

俺はそんなテレビ向けなコメントにだまされねぇぞ!!
(▼ー▼ 


2005/07/13 わたしゃ神様だよ

昨日、雨ですなぁ・・・と書いたのですが、傘も持たずに外出し、思いっきり濡れました。
出るときは晴れてたんですが「うっかり」という言葉では表せないほど、ずぶ濡れになってしまいました。

唐突ですけど、人は誰しも超能力に憧れますよね(^ー^
空を飛びたいとか、雷ドーンって落としたりとか、超サイヤ人になってみたりとか・・ まぁ、夢はふくらみます。
子供っぽいと思われるかもしれませんが、確実に超能力を身につけたい場面は、みなさんもあるんですよ。しかも、その能力は決まっています。

「データベースの形式 XXXXXXX を認識できません」

誰しも経験があると思います。 AccessMDBファイルの破損です(−−;;

とりあえず「時間よ戻れ(TーT 」です。
今日も日本のどこかで MDB破損 → 時間よ戻れ → 戻らない → 現実逃避
この流れが起こっていることでしょう。

残念ながら、あと少し神がかり的な力が足りないので、時間を戻せたことが無いのですが、とりあえずどうにか復旧する手段を考えます(−−;;

@とりあえず今の状態でバックアップ
Aデータベースの修復・最適化
これで治ってくれれば簡単です。
復旧後、すぐにバックアップですね。
→軽い障害
Bデータベースのインポート
修復・最適化で直らない場合は、新規データベースを作成し、復旧したいデータベースから全てのオブジェクトをインポートします大抵、どこかでエラーになるのですが、エラーで止まったオブジェクトが破損の原因です。

それ以外のオブジェクトを全てインポートした後、どうするか考えます。

開くこともできない場合
 → 諦めが肝心です(TーT

開けるが何かの操作でエラーが出る場合
 → 開けるうちに、全てコピーして別のフォームやモジュールに貼り付け

とりあえず、簡単にできそうな復旧はこれくらいですね さらに深い部分を操作すれば、どうにかなる事もありますが、ほとんど復旧できる可能性は少ないので、さっさと諦めて涙を流しながら、記憶を頼りに作り直した方がいいでしょう(TーT 「あー バックアップしてれば・・・」という声も多いでしょう。壊れることがわかっていればバックアップも確実です。ただ、それができれば苦労しないっす(−−;;
「あと5分後に壊れるから、今バックアップしよー」って、それこそ神がかりな力です。

ということで、神がかり的な力が微妙に足りない私たちは、壊れた時は涙を流して復旧しないためにも、こまめにバックアップを習慣づけるしかないみたいです。
神社にお参りに行った時は、「わたしゃ神様だよ」「俺も神様だよ」って感じの神様に、色々お願いしてみます(^ー^


2005/07/16 かっこいい爺さんの見る新聞

昨日書いた、「わたしゃ神様だよ」からつながって・・・
「わたしゃ神様だよ」→「ドリフ」→「いかりや長介」→・・・→「モーガン・フリーマン」ってなことで、モーガン・フリーマンの映画見ました(^ー^;;
いかりや長介とモーガン・フリーマンって感じ似てません?

「ドライビング・ミスデイジー」という映画を見たのですが、モーガン・フリーマンが演じる老人は、かっこいいです。私も、あんな感じに年をとりたいですね(^ー^

その映画の中でモーガン・フリーマンが新聞を見てるんですよ。「読む」ではなく・・・「見る」
「字が読めないので、見た感じで内容を想像してます」って、ミス・デイジーに説明した時は、ちょっと悲しくなしました。

で、ここでの「見る」と「読む」の違いは、Accessでも関係があると思います。「読む」というのは、長い文章ですよね。内容を読んで理解するって感じです。では、見るのは・・・ パッと見るって感じですね(^ー^;;

どうAccessと関係があるかと言えば、フォントに関係があります。

名前や住所といった項目を並べて表示する時、フォントは等幅フォントの方が見やすいです。メモ・備考のような長い文章を各項目は、プロポーショナルフォントの方が読みやすいです。

ウィザードで作ると、全てプロポーショナルフォント(MSPゴシック)になってしまいますが、入力項目などは等幅フォント(MSゴシック)の方が見やすいです。

見やすさと読みやすさの違いって、英語にはないんですかね?(^ー^;;
ウィザードが作る画面を見て、ふと思いました


2005/07/17 現在出張中(^ー^::

昨日から新潟に出張しています。昨日は朝早くから夜遅くまでの作業だったので、blogも更新できませんでした。

新潟って、涼しいですね(^ー^
熊本とは明らかに体感温度が違います。

昔、沖縄にも仕事で行ったことがあるのですが、「沖縄って、カラッとしてて温度の割りに涼しいなぁ」と沖縄を体感した後、熊本空港に戻って空港を出た途端・・・ 滝のような汗がでました(−−;; あちーーっ

よそに移動すると、自分の地域の特徴ってのがよくわかります。

新潟で移動して気付いたんですけど、坂道ないんですよ、山もないです、ずーっと平坦な道ばかり自転車に優しい土地なんですかね(^ー^;;

熊本(天気悪い) → 傘持って行く → 新潟(雲ひとつ無い青空) → 傘じゃま
移動が多いから、傘じゃまになってます(−−;;

明日から、またAccessネタでコラム書きます。


2005/07/18 マクロを唯一使う場面

出張から帰ってきましたが、出張疲れで頭が働きません(−−;;

今日のAccessネタは、頭が働いていない状態で書いているので、 ちょっとした小技の紹介です(^ー^;;

最初のコラムでも書きましたけど「俺、マクロ使わねぇ宣言」をしているので、ほとんどマクロを使いません。 その方が作りやすいし修正も楽です。

マクロ嫌いな私ですが、メニューバーを消したい時はマクロの方が簡単なので、 そこだけは唯一マクロを使ってます。
フォームで入力画面を作っても、Accessのメニューバーが出てると、色々操作されて、ちょっとまずいって事ありますよね。

そんな時は、
@新規にマクロを作成
Aマクロに何も書かずに保存 名前は適当でOK
B「起動時の設定」のメニューバーにAのマクロ名を設定する

これで起動するとメニューバーが消えます。(バーの領域は残りますけど)

Applicationオブジェクトを操作して、バー領域ごと消す方法もありますが、 Accessの設定が変わってしまうので、他のAccessファイル開く時にも消えたままになります。 ちょっと使い勝手が悪いので、こればかりはマクロでやってます。

「俺、マクロ使わねぇ宣言」してますが、これくらいはOKってことで(^ー^;

新潟は熊本よりも涼しかったです、笹もち買って帰りました。


2005/07/19 そいつに手を出しちゃいけねぇ

出張疲れがまだとれません・・・
こんな状態でスターウォーズ3を見たので、速攻で寝ちゃいました(−−;;
ライトサーベルは、ハイテクなのか原始的なのか、よーわからんですけどカッコいいっすね。

えー Accessネタですね
オートナンバー型ってありますよね、勝手に連番ふってくれるやつです。 ウィザードで作ると、オートナンバーでテーブル作るので、使ってる人も多いと思います。

でも、オートナンバーは、あんまり使わない方がいいですよ(^ー^;;
・最適化すると消したはずの番号が使えるようになる
・コピペでオートナンバー型に貼り付けても、貼り付けた値にならない
 (これはやり方ありますけど、気付かない人も多いです)
・オートナンバーを主キーにすると、そのレコードに関連する明細レコードをVBAで作りにくい

次の番号がわかりにくいってのと、勝手に番号をふれないってのが、使い勝手の悪さにでてきます。 また、最適化やコピペの問題で、後々のメンテナンスにも影響があります。

作るときは便利でも、後々面倒なことが多いので、できる限り使わない方がいいと思います。

オートナンバーも最初はハイテクな感じがして、便利だなぁーって思ってたんですけどね
「自動で連番をふって、なおかつ値の更新もできる」これがベストです(^ー^
SQL-Serverにはあるんですけどね
(^ー^;; identityプロパティがAccessにもあればいいのに


2005/07/20 ダヴィンチコード

ダヴィンチコードって本が売れてますけど、誰か要約して説明してもらえないっすかね(^ー^;;
自分で読むってところまで、興味がまだわかないので・・・

ダヴィンチコードとは違いますが、
「これ、なんの暗号だよ(▼ー▼ 」って思うことは、 Accessのヘルプを読むと、誰しも感じるところです。

ヘルプを読んでも意味がわからない・・・

ちんぷんかんぷんの文章が長々と書き綴られている点では、ダヴィンチコードよりも、エジプトとかで発掘された古文書に近い感じですかね

今はヘルプ読めるようになったんで、特に困ってはいませんけど、当時は、ヘルプのヘルプとか欲しかったですよ(−−;;

Accessのヘルプは解読できたのですが、今はDelphiのヘルプで悪戦苦闘しています。
ヘルプのヘルプをお願いします・・・


2005/07/21 21世紀ですよ SFの世界ですよ

みなさん忘れてるかもしれませんけど、21世紀です。
2001年宇宙の旅などSFの世界です。
21世紀になると「空飛ぶ車が便利だねぇ」って会話をしてると
小さい頃は思ってました・・・・ (−−;;まだ飛んでません

そんな21世紀の2005年ですが、 Access2003が最新バージョンですね。
で、私が一番使っているのはAccess97です。

ここから未来の予想なのですが、
2015年
・「ちょっと宇宙行かない?」って軽い感じで宇宙に行ける
・Access2015登場
・私が一番使っているのはAccess97

2065年
・宇宙人が「正直、隠れてるの飽きた」と言って姿を見せる
・Access2065登場
・私が一番使っているのはAccess97

2105年
・ギャル文字が古文として学校の授業科目となる
・Access2105登場
・私が一番使っているのはAccess97


ええ、はっきり言いますよ・・・
「Accessのバージョン上がるたびに、どんどん不安定になるのはやめてくれ(▼ー▼ 」


2005/07/22 書式プロパティは使える

07/21(木)
今日はサーバメンテナンスの為、早朝出動です
(−−;; 眠いっす

Access以外の言語を使うと「げっ、このプロパティないのかよ・・・(▼ー▼ 」って思うことが多々あり、Accessって便利なんだなぁーと改めて感じます。

その中でも「書式」プロパティは抜群です。
日付データを和暦で表示させたり、西暦で表示させたり、年月だけ表示させたりと、元データを加工・VBAで編集することなく、思った書式で表示できます。

これですね、Accessで普通に書式を使えることに慣れてると、他の言語で作るときに泣きますよ・・・
VBだったら、すべてVBAで一生懸命書くしかないです(−−;;

書式プロパティを使うと、色を変えることもできます。
数値でプラスの時は[黒]色、マイナスの時は[赤]色表示

書式はこんな感じです
0;-0[赤]

書式プロパティを使うとVBAで書かずに済むことも多いので、できるだけ書式を使うようにしています。


2005/07/24 今日はダメダメっす・・・

えー 昨日の早朝出動で寝不足な状態で、朝まで飲んでました。
ええ、かなり危険な状態です(−−;; 気持ち悪ぅ
頭まったく働かないっす

つーことで、ネタに困ったときのためにとっておいた、とっておきを紹介します。

RecordsetClone
(レコードセットクローン)

RecordsetなどはVBでもありますが、これはAccessにしかないもので、かなり使えます

(−−;;ううぅ 気持ち悪ぅ・・・
続きは明日。。。 すんません

昨日は何故かアクセスが倍増してましたけど、こんな感じで(−−;;うぷってなってて、それどころではないっす


2005/07/25 レコードセットクローン エピソード1

二日酔いと、たまってた仕事で昨日は更新できませんでした(−−;;

Accessネタです
えー RecordsetCloneですね
これはAccessを制御してるって気分になれるんで、ちょっと面白い機能です。

レコードの操作は、大きく分けて2通りあります。1つめはForm画面での操作、2つめはVBAによるメモリ上での操作(こっちは画面に見えません)

それぞれ操作の方法や使い方が違いますが、簡単に書くとこんな感じです
<新規レコード作成>
・From画面では「移動ボタンの新規」をクリックする
・VBAでは、RecordsetオブジェクトにAddnewする

ここまでは、それぞれ使い方が違うんだなぁーって感じなんですけど、 VBAの操作にあって、画面に無い操作ってのがあるんですよ。例えばレコードの検索 FindFirst は便利なんですけど、 Form画面では使えません。

で、使えないFindFirstを使えるようにするのが、RecordSetCloneです(^ー^

From画面も実際はメモリ上にRecordsetを持っています。それに対して「新規レコード作成」などの操作を行うと、 Form画面も連動して新規レコードに移動します。

使い所がピンとこないと思いますけど、私はこんな時に使ってます。
DoCmdの全レコード表示した後に、全レコード表示前の位置にレコードを移動させる

@VBAまたはクエリーで今表示しているForm画面にレコードを追加
 (この状態では画面に反映されない)
ADmCmdの全レコード表示を実行
 (カーソルが先頭に移動される)
B移動前のレコードにRecordsetClone.FindFirstを使って移動
CBookmarkプロパティで画面とRecordsetCloneの位置を揃える

SAMPLEで使うとしたら、こんな感じですね。
一覧画面→入力画面で新規入力→一覧画面の再表示(入力を反映)→FindFirstで元の位置に移動

具体的な書き方、構文は明日書きます。

今日のタイトルは、RecordSetCloneを何回にわけて書くか、まだ決めてなかったので、とりあえず流行り物っぽいタイトルにしてみました。

そういえば、スターウォーズVのラストで、アナキンがエピソードVの主人公に変更されてましたね。あまりストーリーについていけない私は「これ昔はオッサンじゃなかったか? ん?? なんだ?」と、そこだけ何度も巻き戻して確認したため、ストーリーを完全に忘れてしまいました(−−;;

次はヨーダがETとすりかえされるかもです


2005/07/26 レコードセットクローン エピソード2

暑いっす・・・ 熊本の暑さはハンパネェっす(−−;;
クーラーいれっぱなしだと、体だるくなるんですけど、入れとかないと、暑さでぐったりします・・・
体力が落ちてるんでしょうね
子供の頃は暑さで弱ったセミとか、いっぱい取って遊んでましたけど(^ー^;;

えー RecordSetCloneですね。

今日は書き方を書く予定でしたけど、 RecordSetCloneで使うBookMarkプロパティの説明をしないといけないので、 BookMarkの使い方を今日のAccessネタにします。

ブックマークってブラウザとかにある「お気に入り」もブックマークっていいますよね。お気に入りを選ぶと、そのホームページが表示されますけど、そんな感じの使い方です。

レコードにはそれぞれブックマークが自動的に設定されていて、
例えば・・
じゃがいも (ABCD) ←これがブックマーク
キャベツ  (EFGH) ←これがブックマーク

@キャベツのレコードに移動
Aブックマークを取得(EFGH)
Bじゃがいものレコードに移動
Cブックマークに(EFGH)を設定→キャベツのレコードに移動する

このBookMarkプロパティをRecordSetCloneでどう使うかといえば、
画面上で2件目のレコードを表示していても、 RecordSetCloneは先頭のレコードになっています。

なので、画面と同じレコード位置になるように
RecordSetCloneのBookMark = 画面のBookMark
とします。


SAMPLE1だと
Forms![fm_Kokyaku].RecordSetClone.Bookmark = Bookmark Forms![fm_Kokyaku].Bookmark
これでForms![fm_Kokyaku].RecordSetCloneが画面と同じレコード位置になります。

ちょっと面倒ですけど慣れですね。

補足:BookMarkプロパティは文字列型です


2005/07/27 レコードセットクローン エピソード3

さすがに同じAccessネタを3日続けると、書くほうも飽きまてきます(−−;;うー
つーことで、急に打ち切りが決まった週間漫画のごとく、一気に終了させます。

画面に対して行えないFindFirstなどの操作を、 RecordSetCloneを使うことで実現するってところがポイントです。

ここでのFindFirstの書き方は SAMPLE1で顧客コード100を検索する場合

  Me.RecordsetClone.FindFirst "tm01_KokyakuCode=100"
  If Me.RecordsetClone.NoMatch <> True Then
    Me.Bookmark = Me.RecordsetClone.Bookmark
  Else
    Beep
    MsgBox "そんなデータないっす(−−;;"
  End If

こんな感じですね。

FindFirst以外にも、Addnewだったり、MoveだったりとRecordsetで使えるものは一通り使えるので、
いろんな場面で使えると思います。


2005/07/28 連打! 連打!

昨日までのレコードセットクローンが難易度高めだったので、今日は簡単なAccessネタです。

トリビアの泉での「へぇー」ボタンらしきものを作ってみましょう。
ピッピッって音が出るだけですけどね(^ー^;;

フォームを作って、適当な大きさにボタンを貼り付けます。
で、ボタンのクリック時イベントのイベントプロシージャに

Beep

と書きます。
これだけで完成です。

後は連打してください。単純なんですけど、とりあえず連打したくなります(^ー^

VBA入門として、 "Hello"とメッセージ表示するよりは、少し楽しめると思います。


2005/07/29 あえて不便な方がいいことも

えー 夏ばて大会の真っ最中で、かなり白熱した夏ばてを日々送っています。最近は夏休みなのに小学生が外であそんでいるのを見ないですね、コンビニに置いてあるムシキングに群がって・・・
「お前ら樹液に群がる虫か(▼ー▼ 」
コピーとかFAX送るのに邪魔なんすよ、外で遊べってことです。
小さい頃は、ミヤマクワガタとか、アカガンとか取ってたんですけどねぇ
いまじゃヘラクレスとかスーパーで売ってあるし
(−−;; 外国人枠は規制してほしいっすよ

あー Accessネタですけど、まったく関係ありませんけど、テーブルの項目名について書きます。

Accessは日本語もOKなんで、[顧客コード]だったり、[得意先住所]といった名前を付けることができます。
でも、個人的には日本語名はあんまりお勧めしないっす

一つは、文字化けする可能性があります。
AccessのデータをWebだったりLinuxだったりと、まったく想定していない拡張をすることがあった場合、どこかで項目名が化ける可能性があります。
私も「そんな使い方しないからいいや・・・」と日本語名使ってましたが、案の定、ODBCドライバ部分で項目名が化けました・・・ 必死に作り直しですよ(−−;;

もう一つは、日本語の難しさですね。
例えば、[顧客売上高]という項目があるかと思えば[売上高顧客]という項目もある(^ー^;;
かなり混乱します、英数だけで項目名をつけると、かなり制限されるので、名前の付け方にも自然とルールができると思います。

今では日本語名対応のDBが多いですけど、あえて英数だけの方が不便な分だけ、作る時にはスッキリすると思います。

ずいぶん前の話ですけど、 [顧客売上高][売上高顧客]だけでなく[得意先売上]という項目名が1つのテーブルにありました
(−−;; すんません


2005/07/30 クワガタの方が強い

昨日に引き続きムシキングネタなんですが、 CMで「カブトムシVSクワガタ」みたいな感じで対決してますよね、どっちが強いのかって
ムシキングに夢中になってる子供たちも「ヘラクレス強えー」など言ってますが、大人の私からはっきり言わせてもらうと「クワガタの方が強い」これは実際に虫取りしたことがある人の中では常識です。

ゲームのように、K1っぽい戦い方ならカブトムシも1回くらいは押し出しできるかもしれませんが、カゴの中にカブトムシ、クワガタを一緒に入れて一晩過ごさせるとわかります。
中は時間無制限のデスマッチですよ
小さい頃はカブトムシの方が強いと思っていたので、一緒に入れてても安心かと思っていました。で、翌朝、その状況に呆然とした子供は全国に何千人以上いたと思われます。

冷静に考えれば、カブトムシの武器は「つつく、押し倒す」ですよ、かなり平和的です。対するクワガタは「切り裂く、噛み付く」危険な香りが漂いすぎです(^ー^;;

小学校低学年の頃、度胸試しに「ヒラタクワガタに噛まれてみる」というのが流行りましたが、洒落にならない痛さです・・・ あれは危ないっす(^ー^;;

ということで、ゲームに夢中になってる子供たちの夢をぶち壊す大人の意見として、「クワガタの方が強い」と言わせてもわいます。


忘れない程度のAccessネタになったのですが・・・(^ー^;;
えー ちょっとした小ネタです。

テキストボックスを貼り付けるとき、入力文字数ピッタリに幅を調整したいと思います。その時は、テキストボックスのサイズ変更中にステータスバーの左側に今の幅で表示可能な文字数が表示されます。
(プロポーショナルフォントでは、この文字数は参考になりません)

画面作るときに、サイズ広げる→Form開いて確認→サイズ小さくする・・・を繰り返す手間が少し減ると思います。

今日はAccessネタの方がボリューム小さかったです(^ー^;;


2005/07/31 アメフラシに見えねー?

「なんじゃこりゃーーーーーー (▼ー▼ 」

いきなりですが、なんじゃこりゃーな訳です。
何がなんじゃこりゃーなのかと言えば、 Access2003ですよ(−−;;

何でこんなに強制終了ばかり何度もさせられるんだって事ですよ。
「大変ご迷惑を・・・・[送信する]」という画面を何度見た事か、もうね、開発者から言わせてもらうと、5分に1回強制終了させられたら、仕事にはならんのですよ

[送信する]に怒りのエネルギーを込めて何度も送信したのですが、もちろん送りっぱなしで、反応なんてありません。

でも、実際問題、Access2003が安定して動いているところって、見たことないんですよ、大丈夫なんすかね??

で、意味がわらかんのが、
「Accessは前々からOffice製品と相性が悪い」
これは業界内では定説なんですが、 AccessもOffice製品なんじゃねーのってことですよ


わかりやすい例えだと・・・
ナメクジ君「俺さ、こうやって海に入ってるとアメフラシに見えねー? マジすごくね?」
くらげ君「お前、溶けてるぞ」


場所を考えろってことです
(−−;; 体を張ったネタは笑えるけど Access2003はネタじゃないから・・・

Office製品から切り離すことは無理っぽいんで、だったらOffice製品との相性はどうにかして欲しいっす。


今使っている「会社」「個人」のメールを、そのまま携帯に転送!!
外出先でも会社のメールが読めて、そのまま会社のアドレスで返信できます。
  詳しくはこちら → FlyMailもっと詳しく
  FlyMailサイトはこちら → 携帯メール転送 FlyMail




Contents of This site

過去のコラム

ダウンロード

月平均3000ダウンロード!! SAMPLE1
・顧客管理サンプルソース
・作成手順書付き
・スクリーンショット
 入力画面
 一覧画面

SAMPLE2
・一覧検索サンプルソース
・作成手順書付き
・スクリーンショット
 リストボックスでの検索
 サブフォームでの検索

Accessで100マス計算
・スクリーンショット
 画面
 印刷プレビュー

質問は掲示板メールまで


Copyright© 2005-2006
あぷる All Rights Reserved.
Since 2005/05/27

Powered by sozai.wdcro




Access関連サイト


アクセスアップ関連