MS-Accessで作るDBシステム

2011年5月19日 (木)

「共有型メモ」

共有型のメモを作成しました。

「Memo.zip」をダウンロード

2010年3月30日 (火)

かなり昔に作った「納音占」のプログラム

10年位昔にお遊びで作ったモノです。

占う人の生年月日を入力するだけで結果が表示されます。

1917年から2079年まで占う事ができます。

MS-Accessを持っていないと使えません(ヴァージョン2000-2007で動作確認済み)。

興味のある方はダウンロードして使ってください。

「Nachinsen.zip」をダウンロード

2010年3月 6日 (土)

ドロップシッピングのサイト管理DB

先月よりドロップシッピングを始めたが未だ売り上げに貢献するサイトが出来ていない。

ネット販売での売り上げに貢献する三要素が有るそうだ。

1、商品力

2、ページの説得力

3、サイトの集客力

以上の一つの要素が駄目だと売り上げに貢献しないらしい。

さて、私は既に200サイト以上の商品サイトをアップしたが、SEO対策は別として、キーワード広告を頻繁に打っていないのでターゲット層を決めかねている状況なのだ。

しかし、サイト数が数百ともなると管理が大変なので管理用のDBをMS-Accessで作成して運用している。

キー項目はサイトのURLにして重複のチェックをしている。

サイト名、URL、HTML文、サイトアップ日付、サイトの更新日付、商品IDを管理している。

個々のサイトの更新履歴も保存しておきたいので、管理項目総てのログファイルを別途テーブルに追加保存する機能も付けた。

今は必要でないので付けていないが、ログデータの検索、参照機能も追加しても良いと考えている。

現在はサイトの追加、更新、削除の情報を管理する目的で使っている。

次回、このテーマでブログを書く時にはサンプルツールをアップしようと思う。

興味のある方はその時にダウンロードして使ってみて欲しい。

教は予告編と言う事で。

2010年2月11日 (木)

結構面倒!!管理対象物件の「名称」の付け方!

このブログも大分脱線した内容ばかりなので、久しぶりに「IT資産管理システム」いついての話題を掲載します。

資産管理に大きく貢献するのはデータベースですが、データベースの項目の設定によって仕事の効率が大幅に変わる事があります。

具体的には「管理する物件の名称」です。

意外かもしれませんが、「管理する物件」の「名称」の付け方が結構難しいのです。

物件の名称として使われるモノに「型式」や「型式番号」、「モデル名」等があり、企業によっては独自の名称を付けている事も珍しくありません。

しかも同じ企業内であっても部署によって名称が違うという事もよく有ります。

一番厄介なのは、過去の情報が総て独自の名称で登録してあり、規則性が無かったりする場合です。

新たにシステムを統合しようとしても、この名称の統一が出来ない為に挫折するケースが意外とあるのです。

現場サイドからすれば、慣れ親しんだ管理物件の「名称」がいきなり変わってしまうと混乱が生じてしまいます。

その為に「サブシステム」として従来の「名称」を新たな「名称」に紐付ける仕組みを作る担当者さえ出てくる事があります。

管理対象物件の「名称」の問題は製造メーカー側にも責任が有る場合もあります。

例えば「型式番号」や「モデル名」が同じでも性能が全く違う製品が納品されるケースが過去にありました

具体的にはパソコン等でHDDの容量が違う場合でも同じ「型式番号」や「モデル名」の機器が実際に納品された事がありました。

物理メモリの容量(1GB搭載か4GB搭載か等の違い)の違う場合は基本的に「型式番号」や「モデル名」の変更が無いケースが多い様です。

更に機器に個別に付与されている「製造番号」や「シリアルナンバー」は基本的に同じ製造会社内で重複しない形で管理されていると思いますが、

NECのパソコンでは同じ「型式番号」や「モデル名」でない場合は「製造番号」が重複している事例が有りました。

「IT資産管理システム」ではこうした「管理対象物件」の「名称」や「個体管理番号」を統一する必要があります。

データーベースの構造の設計よりもこういった現場での作業に混乱を起こさせない為の部門間、或いは担当者間の「調整」と「説得」が「システム構築の要」になります。
 

2010年NHK大河ドラマ「竜馬伝」の主人公になろう!
「坂元くん」

2010年1月28日 (木)

MS-Accessの小技・オブジェクト名で隠す

MS-Accessの小技(オブジェクト名で隠す)

個人で使うだけのシステムならば気にする事も無い事ですが、複数の方達が利用するシステムでは、テーブルやクエリ等のオブジェクトを勝手に触られると大変な傷害を引き起こす場合があります。

人間というモノは不思議なモノで目に見えると触ってみたくなるようです。

こういった好奇心は悪いことでは有りませんが、傷害の「種」になるモノは見せない事が良いようです。

MS-Accessでは各オブジェクトの先頭に「Usys」という文字を設定する事で標準のオブジェクト表示設定では表示されなくなります。

また、各オブジェクトのプロパティの設定で「隠しオブジェクト」の設定にチェックをするとやはり標準のオブジェクト表示設定では表示されなくなります。

また、利用者にMS-Accessの操作に詳しい方がいて、総てのオブジェクトを表示してしまう人もいるかも知れません。

そうした場合、隠す事はできませんがMS-Accessのファイル事態をmde化してしまう事でフォームの設定を変更出来なくする事が可能です。

mde化するのが難しい場合には「Shift」キーを無効にしてしまうコードを記述する方法もありますが、この方法を知りたい方は「Access Hacks」で紹介されていますので、確認をしてください。

クエリについてもSQL化してフォームに埋め込んでしまえば変更出来ません。

テーブルについては外部参照をするテーブルにはパスワード設定をして個別に開けなくする対応を取ると有る程度傷害を防げます(ADOやDAOでの参照であれば問題なし)。

こうした配慮でエンドユーザによる傷害や問題の多くを防ぐ事が可能になりますが、基本的にエンドユーザーにはよけいな操作はしないように事前に周知を徹底すれば良いのかも知れません。

何事も使う側との合意の上でモノ作りは進めなければトラブルは絶えません。

2010年1月27日 (水)

MS-Accessの小技

MS-Accessの小技(アクセスキー)

久しぶりにMS-Access関連の小技を紹介したいと思います。

「アクセスキー」という言葉を知っているでしょうか?

VBで開発をしている人には当たり前の言葉ですが、MS-Accessから開発を始めた人には聞きなれない言葉ではないでしょうか?

アクセスキーとは「altキー」と一緒に押したキーの設定をしたラベルやコマンドボタン等のオブジェクトにフォーカスさせる機能を言います。

ウィンドウのメニューバーの「ファイル(F):」という感じのモノです。

MS-Accessでのオブジェクトのフォーカスには普通、タブストップの設定を行います。

設定の仕方は簡単で、例えば「検索」という名前のコマンドボタンに「altキー」+Fキーを押す事でフォーカスさせたい場合、コマンドボタンの標題に「検索(&F):」と入力して設定すればOKです。

ここではフォーカスすると書きましたが、コマンドボタンに設定するとクリックされてしまいます。

VBでは関連するラベルにアクセスキーを設定して、タブストップの設定でアクセスキーを設定したラベルの次にコマンドボタンを指定してフォーカスさせるという手法を使います。

業務システム等、何度も同じ作業をしたりする場合、こういったキー操作が重宝される場面があります。

2010年1月 7日 (木)

「ハイブリットインバンド管理簿」

NTTコミュニケーションズのビジネス事業部で使っていたMS-Accessツール

当時(2003年~2004年)、「ハイブリットインバンド管理簿.mdb」という名前のMS-Accessツールを利用していたと思います。
このツールは名前の通り、電話で受け付けたデータの入力、変更、削除等、フォームやクエリでのデータ制御機能部分とデータ自体の蓄積機能を「ハイブリットインバンド管理簿.mdb」に総て詰め込んでいたものでした。
それをサーバーに配置してLANで各クライアントのユーザーが「ハイブリットインバンド管理簿.mdb」を呼び出して利用する運用をしていました。
この運用方法ではデータの追加には問題は無いのですが、同じレコードを参照したり、更新したり、削除をする操作をすると「共有違反」の表示が出て処理が停止してしまいます。
この「共有違反」はMS-Accessの機能とは別のサーバーのOS機能でのファイル共有でのエラーです。
Excelのファイルを複数のユーザーが利用する時に最初にアクセスしたユーザーは問題なく作業が出来ますが、2番目以降にアクセスしたユーザーには「読み取り専用」という制限がつくのと同じ仕組みです。
データベースの利点は複数のユーザーが同時に共通のデータにアクセス出来、参照、更新、削除が正しく行われる事にあります。
もし、データ共有での問題が発生してもデータベースの機能で制御しなければなりません。
では、「ハイブリットインバンド管理簿.mdb」には何が足りなかったのでしょうか?
当時から判っていた問題ですが、複数のユーザーでデータベースを利用する場合、データベースの構造的に制御機能と蓄積機能を分離するのが常識です。
また、データにアクセスするユーザーを識別するIDを設定し、データアクセス制御機能を追加しなければデータの正確性を保てない事も常識です。
「ハイブリットインバンド管理簿.mdb」の問題点は、Excelの共有ファイルを作るのと同様の考えでシステムを構築したことにあります。
私なりの「ハイブリットインバンド管理簿.mdb」の改善案は以下の通りです。
1.データ制御機能とデータ蓄積機能を分離する。
2.ユーザーIDを作成し、データアクセス制御機能を追加する。
です。
「ハイブリットインバンド管理簿.mdb」もクライアントPCの中で単独で利用するのならば何の問題も無く動作しますが、LAN経由で共有する場合は少し手を加える必要があります。
「visio.pdf」をダウンロード

2009年10月15日 (木)

MS-Accessで作る仕事で使えるデータベースシステム 9

今回は実際の仕事で使うシステムを作る上でのポイントを考えてみたいと思います。

「仕事で使うシステム」というと何か大変な事の様に思う人が多く居ると思います。しかし実際に「仕事で使うシステム」は各担当者が無意識に作り込んでいるものです。
自分の担当した仕事をより効率的、能率的に行う為の工夫、その工夫がPC上で具現化したものが「仕事で使うシステム」なのです。
但し、その「仕事で使うシステム」はそれを作った人のみが使える汎用性の無いものが多いはずです。
「仕事で使うシステム」とは、そういった各担当者の作った個人の工夫の積み上げが「汎用的に改良されたもの」であると私は考えます。

私が「仕事で使うシステム」を構築する場合、先ずチェックするポイントはその「仕事の範囲」です。
「この仕事のはじまりは何か?」、そして「どこまでを仕事としているのか?」をきっちり線引きします。
次に仕事の導線を引きます。
担当者間の作業の「漏れ」や「ダブり」の有無や仕事の順番に不合理は無いか等を確認して整理をします。
そして各担当者の仕事の内容を分析し、作業のどの部分を「システム化」するべきかを考えます。

「システム化」する内容が決まったらMS-Accessで出来る事をを考えます。
MS-Accessが出来る事はデータを決められた形で蓄積し、蓄積されたデータを参照、更新、削除出来るだけです。
「情報管理」しかMS-Accessには出来ません。しかし、現場の工夫によってはその「情報管理」が大変な効果や成果を上げる事があります。
例えば倉庫の入出庫管理では、データ入力をバーコードで行うだけで人が手書きで行う作業に比べて格段にスピードアップ出来た事例がありました。
在庫データ表示の方法を工夫することで、在庫管理が以前の状態より簡単になった事例もありました。
こうした効果は実際に作業をしている担当者の「声」を聞かなければ実現できません。「仕事で使うシステム」は実務担当者の要望の積み上げでなくてはならないのです。

「仕事で使うシステム」は現場の仕事を十二分に理解する事が必要だと私は考えています。
同じ業種でも企業によって仕事の進め方は違います。仕事の進め方が違うという事は、企業ごとに「仕事で使うシステム」は全く違うものであるはずです。
「仕事で使うシステム」には汎用的なパッケージ商品はなかなか馴染まない理由はそういったところににあると思います。

2009年10月14日 (水)

MS-Accessで作る仕事で使えるデータベースシステム 8

「1014.pdf」をダウンロード 今回はツールとしてMS-Accessを使用する場合の注意事項と対処を説明します。

MS-Accessは何度も追加・更新削除を繰り返すとファイル自体が肥大化する事があります。
ツールとしてツールとしてMS-Accessを使用する場合、ツール内での処理でツールファイル自体が肥大化してしまいます。
それを元に戻すには添付ファイルに示したやり方で対応します。
操作は、メニューバーから「ツール」⇒「起動時の設定」をクリックし、「起動時の設定」ダイアログを表示します。
添付ファイルの2ページ目の様にMS-Accessを起動した時に自動で開くフォームを師弟します。表示の詳細設定はツールの用途によりチェックを残します。

添付ファイルの3ページ目の設定をすると、タイトルバーの名前(Windows-ID)を指定できます。
この名前を指定することで、MS-Accessを複数起動してもUWSC(自動化マクロツール)等で制御する事が可能になります。

ファイルの肥大化の対処の一つとして、MS-Accessを終了する時に「最適化」を行います。
添付ファイルの4、5ページ目の操作をすることで、MS-Accessを終了する時に「最適化」を自動的に行います。

ファイルの肥大化の対処のもう一つは「ワーク」で使用したテーブルのデータを削除することです。
添付ファイルの5ページ目は取得した利用者情報を「終了」ボタンを押した時に消去するコードを追加したものです。

こうした設定を施したMS-Accessを修正する場合、Shiftボタンを押しながらツールのアイコンをダブルクリックします。

こういった細かい事も結構大切なので、覚えておくと良いでしょう。

2009年10月13日 (火)

MS-Accessで作る仕事で使えるデータベースシステム 7

「1013N_ID.zip」をダウンロード 前回作成したマクロをVBAに変換します。

変換するマクロをクリックして、メニューバーから「ツール」→「マクロ」→「マクロをVisual Basic に変換」を選択します。

前回作成した2つのマクロをVBAに変換したらオブジェクトからモジュールを選択し、作成されているモジュールの「認証ID」をダブルクリックして開きます。
VBE(VBエディター)が開くので、添付ファイルの3ページに示された部分のみをコピーします。
フォーム「ユーザー認証」をデザインモードで開き、「認証」のコマンドボタンをクリックし、「ビルド」ボタンをクリックします。「コードビルダ」を選択して「OK」を押すとVBEが開きますので、crt+vで先ほどモジュールでコピーした文字列を貼り付けます。

同様に「終了」を開いてコマンドボタン「終了」にコピーします(添付ファイルの6ページ参照)。

もう一つ認証用のフォームを作成します。
オブジェクトでフォームを選択し、「新規作成」をクリックします。
「オートフォーム:単票式」をクリックし、「認証ID」テーブルを選択して「OK」をクリックします。
フォーム名は「認証F」とします。

最後に「ユーザー認証」のコマンドボタンをクリックし、「ビルド」ボタンをクリックします。
VBEが開くと先ほど作成したソースコードが表示されます。「END Sub」の一つ上の行に以下の文字列を入力します。

    DoCmd.OpenForm "認証F", acNormal, "", "", , acHidden
    Dim ID_Check As Variant
    Dim PA_Check As Variant
    Dim ID_Input As Variant
    Dim PA_Input As Variant
   
    ID_Chec = [Forms]![認証F]![利用者ID]
    PA_Check = [Forms]![認証F]![パスワード]
    ID_Input = Me.テキスト利用者ID
    PA_Input = Me.テキストパスワード
   
    If IsNull(ID_Input) Then
        MsgBox "「利用者ID」が空白です!"
        Exit Sub
    End If
    If IsNull(PA_Input) Then
        MsgBox "「パスワード」が空白です!"
        Exit Sub
    End If
   
    If ID_Chec <> ID_Input Then
        MsgBox "認証できませんでした!"
        Exit Sub
        Else
        If PA_Check <> PA_Input Then
            MsgBox "認証できませんでした!"
            Exit Sub
        End If

        MsgBox "認証できました!"
        '認証後の処理を記述します!
    End If

※ソースコードの内容は、フォームへの「利用者ID」と「パスワード」の未入力チェックと入力された内容が登録データと同一かのチェックです。

これで認証システムの出来上がりです。「0113.pdf」をダウンロード