フロントエンドとしてのAccess。
フロントエンドとしてAccessを使う時、一般の教本とは違うことがある。Accessの教本では連結フォームが基本として説明されている場合が多いのではないかと思うが、別途サーバーを立てて、ODBC経由でテーブルの操作をする場合、非連結ファームにすべきだ。同時に他のユーザーがそのテーブルを操作するから。
連結フォームにしてしまうと、そのテーブルをロックしてしまう。どうかすると、自分自身でそのテーブルをロックを掛けてしまう。連結フォームを開いたままVBAから連結したテーブルを操作すると、「誰かそのテーブルを開いているから、データの変更はできませんよ!」と言ってくる。なので、ODBC経由でテーブルを操作する場合、基本は非連結フォームだ。
ただ、連結フォームにした方が良いこともある。その場合でも連結するのはフロントエンドのAccessの中で使用するテンポラリーテーブルだ。他の人が絶対に操作することがない。
例えば、明細行数がまちまちの入金データの入力フォームでは連結フォームの方が楽だ。伝票を印刷する売上伝票の入力フォームでは、例えば入力行が5行に限られるなら、フォームに5行分のテキストボックスを用意しておけば良いのだが、何行入力するかわからないようなフォームでは予め決められた行数のテキストボックスを用意しておくわけにはいかない。そういった場合には連結フォームにしておき、テンポラリーテーブルに入力されたデータをフォームを閉じる際に一度にデータベーステーブルに書き込んでしまえば簡単だ。
自分だけのaccdbファイルを操作する場合は、こんなことを考える必要はないので、連結フォームにしておいても良いのだが、他の人が同時に操作する可能性があるサーバー上のテーブルを操作する場合は、非連結フォームでデータを作成しておいて、フォームを閉じる(あるいはクリアー)する際にVBAで一度にデータを追加、更新するようにしなければならない。
フロントエンドとしてAccessを使う時、一般の教本とは違うことがある。Accessの教本では連結フォームが基本として説明されている場合が多いのではないかと思うが、別途サーバーを立てて、ODBC経由でテーブルの操作をする場合、非連結ファームにすべきだ。同時に他のユーザーがそのテーブルを操作するから。
連結フォームにしてしまうと、そのテーブルをロックしてしまう。どうかすると、自分自身でそのテーブルをロックを掛けてしまう。連結フォームを開いたままVBAから連結したテーブルを操作すると、「誰かそのテーブルを開いているから、データの変更はできませんよ!」と言ってくる。なので、ODBC経由でテーブルを操作する場合、基本は非連結フォームだ。
ただ、連結フォームにした方が良いこともある。その場合でも連結するのはフロントエンドのAccessの中で使用するテンポラリーテーブルだ。他の人が絶対に操作することがない。
例えば、明細行数がまちまちの入金データの入力フォームでは連結フォームの方が楽だ。伝票を印刷する売上伝票の入力フォームでは、例えば入力行が5行に限られるなら、フォームに5行分のテキストボックスを用意しておけば良いのだが、何行入力するかわからないようなフォームでは予め決められた行数のテキストボックスを用意しておくわけにはいかない。そういった場合には連結フォームにしておき、テンポラリーテーブルに入力されたデータをフォームを閉じる際に一度にデータベーステーブルに書き込んでしまえば簡単だ。
自分だけのaccdbファイルを操作する場合は、こんなことを考える必要はないので、連結フォームにしておいても良いのだが、他の人が同時に操作する可能性があるサーバー上のテーブルを操作する場合は、非連結フォームでデータを作成しておいて、フォームを閉じる(あるいはクリアー)する際にVBAで一度にデータを追加、更新するようにしなければならない。