上表において、1~4が[オプション1]をクリックして選択したときのイベント、5~8が[オプション2]をクリックして選択したときのイベント、9~11が↓キーによって[オプション3]を選択したときのイベントです。 ご覧のように、各オプションボタンをクリックすることによって"マウスボタンクリック"イベントが発生しています。↓キーを使った場合には、キーボード操作ですので、このイベントは発生していません。しかし、いずれの場合も、コンテナであるオプショングループコントロールでは、"更新前処理"・"更新後処理"・"クリック時"の各イベントが連鎖的に発生していることが分かります。 ※ちなみに、オプショングループの"マウスボタンクリック時"イベントは、上記のような一般的な選択操作では発生しません。グループの外枠の線上をクリックしたときに発生します。したがって、一般的にはそのようなイベントを利用して何からの処
本題材の従来のAccessデータベースファイル(.accdb)におけるVBAのプログラムでは、Access固有のデータベースエンジンであるJetデータベースエンジンを介してテーブル等にアクセスしています。accdbでは、Jetデータベースエンジン用のライブラリである「DAO」も、また「ADO」も利用することができます。 しかしADP(.adp)では、外部のSQL Serverがデータベースエンジンとなりますので、「DAO」は使えません。もし元のデータベースファイルのVBAのプログラムにおいて、DAOを使ったコードを書いている場合にはすべてそれをADOのコードに書き換える必要があります。 そこでここでは、モジュールのVBAのプログラムにおいて、DAOからADOへの変更を行います。 まずその最初のステップとして、VBAの「参照設定」を変更します。 アップサイジングウィザードを利用してADPを作
データシート形式で表示されているフォームでは、列全体(列名部分)を右クリックして表示されるショートカットメニューから[列の幅]を選択すると、「列の幅」ダイアログが表示されます。 このダイアログでその列幅を変更することができますが、次の4種類の設定方法が可能です。 数値を指定するとその幅に変わる 「0」を指定すると非表示になる [標準の幅]にチェックを付けると既定の幅になる [自動調整]ボタンをクリックすると最適幅(データ内容がすべて表示される幅)になる ここで、VBAを使って上記のような操作を行ういくつかの例を紹介します。 次のようなフォームを作って、[実行]ボタンのクリック時イベントプロシージャにいくつかのパターンでプログラムを記述します。なお、「frm売上明細_sub」はデータシート形式であるサブフォームコントロールの名前、「cmd実行」がボタンの名前です。 例1:「商品名」の列幅を1
Accessでは、CSVファイルなどのテキストファイルをAccessのテーブルとしてインポートする際、CSVファイル上の各列をテーブル上のどのような形式のフィールドとして取り込むかを定義しその定義を保存しておくことができます。 通常のマニュアルによるインポート操作では、テキストインポートウィザードの画面左下の[設定]ボタンをクリックすることによって「インポート定義」ダイアログが表示されますので、そこでフィールド情報を定義したり、[保存]ボタンでそれを保存したり、あるいは[定義]ボタンによって保存済みの定義を呼び出してそのインポート処理に適用させたりすることができます。 このインポート定義を使うことによって、次回同様のインポート操作を行う際にわざわざ再度フィールド定義をする必要がなくなります。またVBAでインポートを自動化する際にも、インポート定義名を引数に指定してインポートさせることもでき
アプリケーション開発中のテストでは、ある処理によって出力されたレコードと、そのコードをアレンジしただけの、本来同じ結果が出されるべき処理によって出力されたレコードとが同じかどうか確認したい場合があります。そのテスト方法としては、まず変更前の処理結果であるテーブルを別名でコピーしておき、続いて変更後の処理を実行、両者のテーブルを比較するといった方法があると思います。そのような比較処理を手助けするのがT'sKitの「テーブル/クエリー比較」ツールです。ここではこのツールの内容について説明したいと思います。 まず、2つのテーブルが同じであると判断する基準を整理しておきましょう。 フィールド数が同じである。 フィールドの順序が同じである。 個々のフィールド定義が同じである。 レコード数が同じである。 すべてのレコードのデータ内容が同じである。 T'sKitではこのうち3番目の比較は行っていません。
追加クエリ・更新クエリ・削除クエリといったアクションクエリをVBAから実行するには、主に次のようなケースによって処理方法を使い分けます。 アクションクエリが”クエリ”としてデータベースに保存されている場合 SQL文をVBAで動的に組み立てて処理する場合 ■DoCmdオブジェクトのOpenQueryメソッドを使った方法 ※この方法は、アクションクエリが”クエリ”としてデータベースに保存されている場合に使います。 ※SetWarningsをFalseとすることで、アクションクエリ実行前の確認メッセージを表示させずに、そのまま即実行させることができます。 ■SQL文で指定する場合(Databaseオブジェクトの「Execute」メソッドを使用) Dim dbs As Database Dim strRate As String Dim strSQL As String Beep strRate
ExcelのワークシートをAccessのテーブルとしてインポートする際は、ワークシートの先頭から8行分に保存されているデータが事前にチェックされ、各列のAccessテーブル上でのフィールドのデータ型が決定されます。 そのため、数値や文字の両方を含んでいる列(Access上では「テキスト型」にすべきフィールド)であっても、ワークシートの前の方に数値データしか格納されていないと、Access上では「数値型」フィールドと定義され、文字データを含む行をインポートする際にデータ型変換のエラーが発生してしまいテーブルには取り込まれません。 CSVファイルのインポートでは各例をどのようなデータ型として取り込むかをユーザーが設定できますが、Excelのファイル(.xls等)の場合はそのような設定ができないため、何らかの工夫をする必要があります。 たとえば、Excel側で事前に先頭8行にあえてデータ型が混在
Open/開く時 Load/読み込み時 Resize/サイズ変更時 Activate/アクティブ時 Current/レコード移動時 Unload/読み込み解除時 Deactivate /非アクティブ時 Close/閉じる時 それではまず、Accessの数あるイベントの中から、フォームのオープン・クローズに関わるイベントについて調べていきましょう。 まず、どのようにしてイベントの発生を調べるか、その方法を決めておかなければなりません。このシリーズで特に重点をおいているのは、各イベントがどのような順序で発生し、そのイベントをどのように利用したらよいか検討することです。例えばフォームならフォームが、どのようなイベントを持っているか、それぞれのイベントがどのようなときに発生するかなどは、ヘルプを参照すれば調べることができます。しかし、実際にどのようなタイミングで発生するかなどは、フォームを開いたり
テーブルに保存されているすべてのレコードではなく、一部のレコードだけを抽出して読み込みたい場合、クエリを作ってそれをレコードセットとして開くか、SQL文を指定してレコードセットを開くのが一般的ですが、RecordsetオブジェクトのFilterプロパティを操作する方法もあります。 この方法は、まず全レコードの含まれるレコードセットを開いたあと、そのレコードセットに対してフィルタを掛けます。そしてその結果の、抽出されたレコードセットを別のRecordsetオブジェクトとして生成します。以降はそのRecordsetオブジェクトを操作することによって、VBA上で抽出されたレコードだけを扱うことができます。 次のプログラム例では、まず「得意先」テーブルを開き、そこから「都道府県が東京都であるレコード」だけを抽出したレコードセットを生成してイミディエイトウィンドウに出力、続いて「都道府県が千葉県であ
Accessの本体である「MSACCESS.EXE」を起動する際、コマンドラインに”スイッチ”と呼ばれるオプションを追記して実行すると、Accessをある特定の状態で起動させることができます。 それらのスイッチのうち、「/runtime」というオプションを使うと、Accessをラインタイムモードで起動させることができます。 たとえば、「ファイル名を指定して実行」ダイアログ、あるいは特定のAccessデータベースファイルを起動するようなショートカットキーのリンク先において、次のような指定を行います。 この場合、Accessが起動するとともに、データベースファイル”Database1.accdb”がランタイムモードの状態で開かれます。 もしそのデータベースに起動時の設定が行われていなければ、次のような画面となります。 起動時の設定として、最初に自動的に開くフォームやアプリケーションタイトルなど
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く