#46 Access2007データベース移行レポート(その3)

拙著「商売繁盛!アクセスで販売顧客管理」の最新版執筆に伴い、Access2000〜2003対応の販売顧客管理データベースを「Access2007+Vista」対応に移行する作業を行いました。その作業で行ったこと・気付いたことなどについてレポートします。


Vistaのフォント

Vistaでエクスプローラを立ち上げると、XPと比べてその外見がかなり様変わりしていることが分かります。見た目や操作性もさることながら、フォルダ名やファイル名のフォントが従来のOSとは異なっていることに気が付きます。タイトルバーやメニューバーにも同じようなフォントが使われています。フォント名は「メイリオ」です。言ってみればメイリオがVista標準のフォントです。

AccessやWord/Excelでは、Vistaとのリリース時期の違いのせいか分かりませんが、タイトルバーもリボンも従来のMS Pゴシックなのですが、古いソフトでも、OSに依存する部分の表示はすべてメイリオで表示されるのがVistaの特徴です。

今回の販売顧客管理の2007版では、基本的にVistaを前提としていますので、ラベルやテキストボックス、コマンドボタンなど、フォントのプロパティを持っているコントロールについてはすべてこのメイリオに変更することにしました。
コントロールの数は大量にあるので、当然プログラムを組んで、すべてのフォームさらにその中のすべてのコントロールを列挙、一気にフォント名を差し替えます。

Dim dbs As Database
Dim ctn As Container
Dim doc As Document
Dim strFormName As String
Dim ctl As Control

Set dbs = CurrentDb

On Error Resume Next  ’フォントプロパティのないコントロール用

'フォームの一覧
Set ctn = dbs.Containers!Forms
For Each doc In ctn.Documents
    strFormName = doc.Name
    DoCmd.OpenForm strFormName, acViewDesign
      With Forms(strFormName).Form
            For Each ctl In .Controls
                ctl.FontName = "メイリオ"
            Next ctl
        End With
    DoCmd.Save acForm, strFormName
    DoCmd.Close acForm, strFormName, acSaveNo
Next doc




ただし、フォントのサイズは同じでも、フォントの種類が変わることによってこれまでのコントロールサイズでは文字がすべて収まらない部分も出てきますので(メイリオはMS Pゴシックより若干幅と高さが大きくなります)、それはひとつずつ目視でチェックして修正を加えます。また、データシートビューのフォームについては、データシート全体に対して一括してフォントの変更を適用しなければいけません。これはプログラムを組むよりマニュアルでやってしまった方が早いので、フォームビューで逐一変更することにしました。




データシートの列幅の調整

Access2007のデータシートビューでは、見出し部分に並べ替えなどを行うためのドロップダウン用のボタンが勝手に追加表示されるようになっています。その分、見出しの文字の領域の幅が減りますので、Access2003で見出しの文字数にピッタリの列幅になっていたものは、見出し全部が見えなくなってしまいます。それについても2007環境で逐一列幅調整してやる必要があります。




コントロールのアンカー

フォームデザインにおいては、Visual Basicなどではかなり前からパネルコントロールなどを使うことによってコントロールにアンカーの設定ができました。アンカーとは、「コントロールの位置やサイズがフォームのウィンドウサイズに合わせて自動的に可変される機能」と考えればよいでしょう。「フォームの幅がユーザーによって広げられればそれに合わせてコントロールの幅も自動的に変わる」、「フォームの高さが広げられてもボタン類は常に一番下に来るように位置が調整される」など、サイズ可変可能なフォームに使うと大変便利な機能です。

この機能がついにAccessにも搭載されました。各コントロールの「水平アンカー」と「垂直アンカー」の2つのプロパティを設定することで、上記のようなことが簡単に実現できるようになりました。以前であれば、フォームのサイズ変更時イベントなどを使ってコントロールの位置やサイズをプログラムで制御しなければなりませんでしたが(逆にそのようなプログラムが組み込んであると、Access2007では思ったような動きをしてくれません)、まさにプロパティ2つだけでそれが簡単に実現できるようになりました。

この機能は、”ユーザーが”ウィンドウサイズを変えたときだけでなく、次のような2つのケースでも有効です。

  • 2003以前のフォームのウィンドウが重なって表示されるインターフェースから、2007のタブ付きドキュメントに変えた場合、画面の領域が変わります。それによって、コントロールを画面ギリギリに配置したフォームでも、多少左右上下に余白部分が出たりする場合があります。そのような場合、アンカーを設定しておけば、どちらでもうまくコントロールの位置やサイズが調整されます。

  • モニターの解像度が変わった場合、表示可能なフォームの大きさも変わります。そのような場合にも、アンカーを設定しておけば予想通りの配置にコントロールを調整してくれます。


今回はAccess2007用のデータベースに変換してかつAccess2007らしい画面にしたいので、タブ付きドキュメントに切り替えました(後述)。サブフォームをタブ領域の大きさに合わせて自動的にサイズ変更させたり、右下に配置したいボタンはウィンドウのサイズが変わろうと解像度が変わろうと右下に配置させたいので、そのような考え方に基づいて、いくつかのコントロールにその設定を行いました。

  • データシート形式のサブフォームコントロールは、水平・垂直ともに”両方”を設定

  • 表形式のサブフォームは横幅は固定なので、垂直のみに”両方”を設定

  • 画面下方の区切り線となる直線コントロールは”下・両方”を設定

  • 画面下方の左側にあるコマンドボタンコントロールは”下・左”を設定

  • 画面下方の右側にあるコマンドボタンコントロールは”下・右”を設定

  • 画面上にあるようなコントロール類は”上・左”となりますが、これは各プロパティのデフォルト値ですので、変更せずそのまま使います。





タブ付きドキュメント

これは言葉で言うより目で見たほうが分かりやすいでしょう。次のような画面のことです。

◎従来のフォーム
  

◎タブ付きドキュメントで表示
   

タブ付きドキュメントはAccess2007の新機能ですが、すべてがこれになるわけではなく、あくまでも新規データベースを作成したときのデフォルト設定。データベースファイルごとにAccessのオプション設定でどちらの表示方法を採るかを選択することができます。
  

なお、タブ付きドキュメントをオプション設定した場合でも、ダイアログやポップアップとして開いたフォームや、メッセージボックスなどの表示は従来通りです。



データシートビューをダイアログで開く

「DoCmd.OpenForm "frm売上在庫照会", acFormDS, , , , acDialog」という何の変哲もない、フォームをデータシートビューでかつダイアログとして開くコードですが、Access2007ではおかしな画面表示となります。はじめてこれを実行したときは思った通りの表示をしてくれたので、問題ないなと思ったのですが、続けてこの処理を実行すると、それ以降見たこともないウィンドウ?(下図)が表示され、閉じること以外の操作ができなくなってしまいます。


仕方がないので、「DoCmd.OpenForm "frm売上在庫照会", acFormDS」に書き換えて、今回は通常のタブ付きドキュメントとして開くことにしました。おそらく、タブ付きドキュメントのオプション設定とダイアログとの関係が、何かおかしくなっているのではないかと思います。

| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved