約 4,584,864 件
https://w.atwiki.jp/memo77/pages/24.html
PageLastUpdate 2012-07-30/today - /yesterday - OpenCurrentdbで指定するパスにスラッシュが含まれると、Accessデータベースが読み取り専用になる アクセスアドインをユーザー権限で使用する Accessの最大の問題点とは アプリケーションDB/データDB/ワークDBをセットで使う分散型データベース テンポラリDBの複写テクニック 分散型データベース構築のためのオリジナル関数の例 更新行数を分割してパフォーマンスを向上させる SQLServerへのリンクテーブルで「データの競合」エラー Access複数のフォームの連動メインフォームとサブフォームの関係でやるとうまくいかないことがある。 並べ替えると連動が外れる 親フォームと子フォームで発生するイベントの順番 ユーザーから受けたQ A不一致クエリウィザードに使いたいフィールドが表示されない 2007/04/23 よく使うサイト アドインとかおたすけあくせす P/QueryEditor comment このページの記述はMicrosoft Access 2002に基づいています。 OpenCurrentdbで指定するパスにスラッシュが含まれると、Accessデータベースが読み取り専用になる 2012/07/30 環境 Windows 7,Office 2010 このデータベースは読み取り専用で開いています。変更できるのは、リンク テーブル内のデータのみです。デザインを変更するには、データベースのコピーを保存して下さい。 とメッセージバーが表示されてしまう。 物凄い悩んだ末に、パスの区切り文字をバックスラッシュ(円マーク)ではなくスラッシュで記載していたことが判明。 スラッシュで記述すると、URLとして認識されて、ネット上から起動した扱いになるのね。 XP+Office2002の環境では発生しない。 参考URL https //bugs.ruby-lang.org/issues/2947 アクセスアドインをユーザー権限で使用する 2009/11/04 環境:Windows XP,Access XP(2002) ユーザー権限でアドインをインストールしようとすると下記エラーメッセージが出る。 レジストリへの追加中にエラーが発生しました。 レジストリ[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\10.0\Access]に使わせたいユーザーが書き込めるような権限を設定すればよい 変更点を追いかけるだけだと[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\10.0\Access\Menu Add-Ins]に権限を与えればよさそうに見えますが、Accessキーも書き込み可能でOpenしていると思われます。 もちろんセキュリティリスクがありますので自己責任で。 Accessの最大の問題点とは 2009/07/01 Accessは信じられないほどよくできたツールだと思ってます。私のデータベース技術もプログラミング技術も、これがなければ職業にできるレベルにならなかった、たぶん。 .netもクリスタルレポートいらないから、Accessのレポート機能そのまま移植してくれ、という感じで。 そんなAccessの最大の問題点は何かという話。 いつのまにかネットワーク管理者、データベース管理者になってしまった私から見た場合、 「Accessで作ったアプリケーションはユーザーに変更権限があり、悪意のあるプログラムが組み込まれる可能性を否定できない」 というところ。 自分自身がユーザーである間は関係ないんですけどね。 仕込みをしておいて管理者権限で動作されるのをじっと待つようなこともできるし。 もちろん書き換えられないように作ることも大分苦労すればできますけど、割には合わないかな。 だからAccessはツールとして使って、アプリケーションとして使わない。人には渡さない。 人から渡されたAccessを管理者権限で開くことはしない、とか、そんな今日この頃。 アプリケーションDB/データDB/ワークDBをセットで使う 下記の情報は2001年ごろに書いたもので、Access2003までには当てはまりますが、Access2007でどうなのかは不明です。 古い文書なので今見るとおかしなところもありますねが、めんどくさいのでそのまま公開。 ネットワークでのAccessデータベースの使用とパフォーマンスの向上 分散型データベース Accessデータベースはデータ部分(テーブル)とアプリケーション部分(クエリー/フォーム/レポート/マクロ/モジュール)が同じファイルに保存されています。これは、データを更新するたびにファイルを保存する動作を繰り返しているということで、同じファイル上にあるアプリケーション部分も常に書き換えの危険性にさらされていることになります。Accessデータベースはサイズが大きくなるに従って、ファイルの壊れる確立が飛躍的に上がってしまいます。 一定以上の安定性を必要とするデータベースを構築するときは、SQLサーバーなどにテーブルを持つのが望ましいのですが、そうすると開発・運用が個人レベルでは行えなくなります。そのため、Accessで数万件の頻繁に変更を繰り返すデータベースを組む際に、アプリケーション部分とデータ部分を分割して、テーブルはすべてリンクによって処理します。これをアプリケーションDB、データDBと呼ぶことにします。 また、Accessはいったん追加したレコードを削除しても、最適化を行うまではデータベースサイズが小さくならないという欠点も持っています。このため、一時的にテーブルを作成する場合などは、アプリケーションDBやデータDBでは作業を行わず、作業用のデータベースを作っておきます。これをテンポラリDBと呼ぶことにします。 アプリケーションDB、データDB、デンポラリDBの3つを使ってデータベースを構築することで、数十万件程度であれば安定して稼動するデータベースを構築することができます。これが分散型データベースのテクニックです。 ローカルディスクの特性を生かした高速化 基本的な知識として、サーバーへの書き込みはローカルへの書き込みよりかなり遅くなります(読み取りもほぼ同じです)。理由は「回線速度」と「サーバーの応答」です。 「回線速度」のイメージは、ローカルへの書き込みというのは「バケツを逆さにして他のバケツに水を移す」ことで、サーバーへの書き込みというのは「バケツからバケツにホースにで水を移す」ことです。 「サーバーの応答」のイメージとしては、ローカルへの書き込みというのは「自分で文章を書く」ことで、サーバーへの書き込みというのは、「自分が読み上げる文章を電話先の相手にメモさせる」ことだと思ってください。相手がなんと言ったのか、聞き返しながら書くことになります。おまけにサーバーにはいろいろな人からひっきりなしに電話がかかってきます。当然、話中のこともあります(たとえ話ですよ)。 ですから、Accessを使う大前提は、「ローカルで使ったほうが速い」ということです。 また、数人で共用するデータベースはサーバー上において使いますが、Accessはユーザーが認識していなくてもアプリケーション部分も書き換えています。たとえばレポートの印刷設定を変更したり、データシートの列の順番を変更した結果はアプリケーションDBに書き込まれます。このため、複数人でアプリケーションDBを共有すると、破損確立が極端に上がります。 ここから、分散型データベースの最適な形は、 全員で共有するべきデータと設定はサーバー上のデータDBにテーブルとして持つ。 個人的な設定を保存するテーブルはアプリケーションDBに持ち、アプリケーションDBはローカルに置く。 テンポラリDBはローカルに置く。 ことだというのがわかると思います。 ただし、デメリットとしてアプリケーションのバージョンアップが行いにくいということがあげられます。ローカルのアプリケーションDBをバージョンアップしなくてはならないので、なんらかの形で自動バージョンアップの機能を用意するのが望ましいでしょう。 テンポラリDBの複写テクニック 一時的に使用したデータをクリアするのに削除クエリーを使うのは、あまり得策ではありません。数百件であればそう時間もかかりませんが、処理を繰り返すことによってテンポラリDBが大きくなっていきます。テンポラリDBの破損は処理の中断に繋がりますから、なんとか避けなければいけません。 ここで発想の転換をします。どうせすべてのテーブルをクリアしてよいのであれば、最初からすべてのテーブルにデータのないきれいなファイルを上書きしてやれば、クリアするより早く、確実です。テーブルのリンクは上書きしたテンポラリDBに対してきちんと有効になります。 具体的にはTEMP.MDBとTEMP.NEWのように同じテンポラリDBを名前を変えてふたつ用意して、通常の処理にはTEMP.MDBを使います。テンポラリの中身をすべて破棄してよいタイミングで、TEMP.NEWをTEMP.MDBに上書きしてやります。 分散型データベース構築のためのオリジナル関数の例 LINKfromDB(データベースPath) 指定したデータベースのテーブルをすべてリンクします。このとき、同じリンクテーブル名がある場合はいったん削除してからリンクを張り直します。また、リンクテーブルではない同じテーブル名がある場合は、そのテーブルはリンクをしません。 DB_Copy(コピー元ファイル,コピー先ファイル) テンポラリDBの複写を実現するための関数です。アプリケーションDBと同じフォルダにテンポラリDBを置けば、パス指定なしでコピーできます。また、コピーに失敗した場合には数回リトライし、最終的に失敗であれば、関数としてFalseを返します。 更新行数を分割してパフォーマンスを向上させる 扱うデータが多量になるにつれ、データを書き換えるのが遅くなります。実際には遅くなるというよりは、処理が中断してしまい、データベースがフリーズするということになります。 Accessはクエリーでデータの書き換え/追加/削除をするときに、いったんメモリ上にそのクエリーの結果をすべて作ります。なぜなら、データの入力規則があっているか、キーの重複はないか、といったことは現状と結果の比較をしないとわからないからです。検証が終わってからはじめて、データベースに結果を書き込みます。 ざっくりと言えば、10MBのデータを書き換えるには20MB、20MBのデータを書き換えるには40MBのメモリを消費するということです。そのため多量のデータを一度で書き換えようとするとメモリが不足し、よくて失敗、悪ければフリーズするということになります。 結果の作成に成功したとしても、多量のデータを一気に書き込みにいきますので、書き込み中にエラーがおきる可能性も高くなります。 実際には追加や削除は数万件のデータでも扱えます。 フリーズするのは更新処理なので、私は数万行の処理を指定行数に分割して書き込んでやるような関数を組んでいます。 SQLServerへのリンクテーブルで「データの競合」エラー 実際にはデータが競合していないのにSQLServerへの更新で「データの競合」エラーが出るパターン 256文字以上のテキスト型のフィールドをリンクしていて、メモ型になっている。 bitフィールドでNULLが存在する。 公式情報があるわけではないので、実体験からの推測です。検索してもほとんどひっかからなかったけど、SQLServerに直接リンクテーブルで更新かけるような使い方が少ないからだろうか? 2007/05/30 部分的ですがKBもあるようです。YU-TANGさんより。 http //support.microsoft.com/kb/280730 Access複数のフォームの連動 http //fukkey.dyndns.org/pins/acc/040930/90175.html Set FormA.RecordSet=FormB.RecordSet メインフォームとサブフォームの関係でやるとうまくいかないことがある。 2007/04/24 ODBCリンクテーブルだからかも。会社でエラーが出たのでメッセージ載せられず・・・ × Set Me.SubForm.Form.RecordSet=Me.RecordSet メインのOpen/Load、サブのOpen/Loadでサブ→メイン/メイン→サブの8パターンやったがダメだった。 データに結合しない親フォームに複数のサブフォームとして置くと回避できた ○ Set Me.SubFormA.Form.RecordSet=Me.SubFormB.Form.RecordSet タイミングは親Formのロードで。 並べ替えると連動が外れる 2007/04/26 Access2002の環境で発生。Access97だときちんとできていた気もするが未検証。 あ、ODBCだからかも。MDBのテーブルでは大丈夫かも。未検証。 「並べ替え後」というイベントはAccess2002では取れないので、両方のサブフォームのCurrentで、主キーを比較して異なっていたら再設定というめんどくさいことをやらざるを得なくなった。これだとイマイチ。 親フォームと子フォームで発生するイベントの順番 2007/05/25 子のOPEN 子のLOAD 親のOPEN 親のLOAD ユーザーから受けたQ A 不一致クエリウィザードに使いたいフィールドが表示されない 2007/04/23 比較したいフィールドのデータ型が異なっているから。テーブルのデータ型を変更することで回避できる。 もちろんウィザードを使わずにSQLで書けば回避できるけど、それはここのネタではないか。 よく使うサイト pin s Laboratory http //www7.big.or.jp/~pinball/discus/access/index.html アドインとか おたすけあくせす 2007/05/12 とても便利。でもおかしい。ネット上のどこにもない。どこにいっちゃったの?なにがあったの? P/QueryEditor 2007/05/12 http //www.vector.co.jp/soft/winnt/business/se357128.html クエリのSQLをデータシートで編集/管理 comment このページの記述で聞きたいこととか間違ってることとかありましたらコメントを。 一部のデータ競合エラーについては、MSKBが出てます。>http //support.microsoft.com/kb/280730 -- (YU-TANG) 2007-05-29 23 35 09 情報ありがとうございます。掲示板などでYU-TANGさんの回答に、いろいろお世話になっていたりします(^-^)。 -- (memo77) 2007-05-30 08 59 22 コチラの「データ競合」で<bitがNULLの場合>の状況、まさにその通りでした。すごく悩んでいたので助かりました! -- (HY) 2009-08-12 10 29 32 よかった。お役に立てて何よりです。 -- (memo77) 2009-08-12 22 35 14 わたしも「データ競合」の問題、こちらを見て解決しました!感謝です。 -- (kechi5) 2010-05-14 14 30 23 コメント欄間違えてしまい、すみません。改めて、私もデータ競合問題、こちらで解決しました。 -- (mellowbeats) 2010-05-18 15 38 47 報告ありがとうございます。役に立ったならうれしいです^^ しかし自分ではほとんどAccessを使わなくなってしまったけど、世の中ではまだ使われているんだなあ。 -- (memo77) 2010-05-19 09 27 48 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/ac1226/pages/24.html
Option Compare Database Option Explicit 「Me.」と「Me!」の違い 「Me.」 Meのプロパティとして構成している 「Me!」 Meという名のFormの中にあるもの(一時的な代入) 閉じる時に最適化 SetOption "Auto Compact", True メニューバーが表示されない Sub SetMenuBar() Application.CommandBars(”Menu Bar”).Enabled = True End Sub [F5]実行 --------------------------------------------------------------------------- 1.Alt + F11 2.CommandBars("Menu Bar").Enabled = True CommandBars("Menu Bar").Reset 3.Enter 自mdb名、パスを取得する 自mdb名 CurrentProject.Name 自mdbのフルパス CurrentProject.FullName 自mdbのパス CurrentProject.Path 拡張子 MDB → ACCDB MDE → ACCDE
https://w.atwiki.jp/macmini/pages/26.html
■ OSXの64bit対応について OSXでは4GB以上のメモリを使用でき、内部も一部64bit化がされている。しかしながら、完全に64bit化するのはOSX 10.6 Snow Leopardからで、10.5まではカーネル及びデバイスドライバも32bitのままである。 参考資料 Road to Mac OS X 10.6 Snow Leopard 64-Bits Windows XPやVistaの例から32bit OSでは扱えるメモリは4GB(使用するチップセットによっては約3.3GB)までという認識が広まっているが、CPUがPAE(Physical Address Extension)、及びチップセット、OSが4GB以上のアクセスに対応していれば、32bit OSでも最大64GBまでのメモリを扱うことができる。 Windowsの例を挙げると32bit版Serverエディションの、Windows 2000 Advance Server以降、Windows 2003 Enterprise Server以降、Windows 2008 Enterprise Server以降が該当する。 OSXも同様の事を行っており、Mac mini Early 2006, Late 2006 に搭載された32bit CPUのCore Solo、Core Duoは、PAE機能によりメモリは36bitアクセス(64GB)が可能で、4GB以上のメモリを扱う事ができる。しかしながら、これらCPUと組み合わせられたチップセット945GMEの最大メモリ量は4GBまでの制限があり、更にMemory Recalim(Memory Remap)機能にも対応していない為、最大メモリ量は実質3.3GB止まりのままであった。 その後、Core 2 Duo以降の64bit CPUが採用された機種では、64bit CPU用に新たに用意された32bit互換モードでカーネル/デバイスドライバを動作させる一方で、I/OKitを64bit化させることにより、アプリケーションが扱えるメモリは64bit CPUで実装された48bit(256TB)アクセスを行い、4GB以上のメモリを扱えるようにした。 ただし、Core 2 Duoを採用したMid 2007モデルは、CPUは64bitに対応しているが、チップセットが更新されなかった為、メモリの上限は3.3GBのままである。 従って、OSX 10.4から10.5では、メモリを4GB以上搭載することもでき、周辺機器も64bit用ドライバを用意せずともそのまま使用できる。 しかしながら、Early 2009で採用したチップセットGeForce 9400Mは、最大メモリ量が8GB(DDR2使用時は16GB)になり、Memory Recalim機能にも対応している為、メモリ4GB搭載時に4GB全て使用できるようになった。 ただし、これには使用するOSに条件があり、OSの最大サポートメモリ量が物理メモリ(4GB)+メモリホール量(約700MB)の総計に対応している場合、つまり、0S自体が4GB越えに対応している必要があり、4GBまでしか扱えないWindows XP/Vista/7の32bitでは、4GB搭載しても3.3GBまでしか扱えない。 したがって、Mac mini (Early 2009)で4GB搭載時に全て使用できる (Appleがサポートしているのは太字のみ)のは以下である。 4GB以上扱えるOS Apple Microsoft その他 32bit Tiger 10.4, Leopard 10.5 Snow Leopard 10.6 Windows 2000 Advance Server以降, Windows 2003 Enterprise Server以降,Windows 2008 Enterprise Server以降 Linux (PAEカーネル/例 Ubuntu 9.10 linux-generic-paeパッケージ追加) 64bit Snow Leopard 10.6 Windows XP x64, Windows Vista 64bit, Windows 7 64bit,Windows 2003 Server x64以降, Windows 2008 Server x64以降, Windows 2008 Server R2 Linux 64 ■結論 OSX Tiger、Leopardの正体は32bitカーネルを採用し、一部のライブラリ、コマンドが64bitに対応しているだけで、4GB以上のメモリを扱うことができる32bit OSである。Snow Leopardではカーネルの他、ライブラリ、アプリケーションフレームワークのCocoaも64bit化され、完全な64bit化が図られる。 なお、従来の32bitのみのCPUもサポートするため、i386とPower PCのコードを混在させたユニバーサルバイナリと同様の仕組みで、カーネルもデバイスドライバも32bit (i386) / 64bit (x86_x64)両方のバイナリコードを含んだユニバーサルバイナリで対応する。 開発版のSnow Leopardの情報を見ると、CPUが64bitに対応していれば、起動時にデフォルトで64bitカーネルをロード、そうでなければ32bitカーネルをロードしている。デバイスドライバも同様である。 Snow Leopardのカーネル $ file /mach_kernel /mach_kernel Mach-O universal binary with 3 architectures /mach_kernel (for architecture x86_64) Mach-O 64-bit executable x86_64 /mach_kernel (for architecture i386) Mach-O executable i386 /mach_kernel (for architecture ppc) Mach-O executable ppc Leopardのカーネル $ file /mach_kernel /mach_kernel Mach-O universal binary with 2 architectures /mach_kernel (for architecture i386) Mach-O executable i386 /mach_kernel (for architecture ppc) Mach-O executable ppc ■追記. (2009/09/07) リリースされたSnow LeopardはXServeを除きデフォルトでは64bitカーネルはロードされない。64bitで起動させる為には、キーボードの「6」、「4」を同時に押して電源を入れるか、カーネルへの起動オプションとして、arch=x86_64を指定する必要がある。 しかしながら、カーネルブートローダ(boot.efi)内では機種を判別し、Mac mini、Mac Book、Mac Book Airなどの一部の機種では64bitカーネルをロードしないよう意図的に制限がかかっており、H/W(CPU、EFI)が64bit対応していても64bitカーネルは使用できない。 64bitカーネルのロード制限はブートローダによるソフトウエア制限なので、Appleの保証外になるがこちらの方法で解除可能である。 戻る
https://w.atwiki.jp/accessvba/pages/18.html
《Access関数一覧(よく使うもの)》 カテゴリ 関数名 使い方 数値 Int 数値の整数部分を返す。 Fix 数値の整数部分を返す。 Round 数値を四捨五入する。 Rnd 0以上1未満のランダム値を返す。 Randomize 乱数の初期化をする。 文字列操作 Format 引数の値を指定された書式に変換する StrConv 引数の文字列を指定された形式に変換する Left 指定した文字列の左から指定した文字数分だけ返す。 Right 指定した文字列の右から指定した文字数分だけ返す。 Mid 指定した文字列の指定した位置から指定した文字数分だけ返す。 Replace 文字列を置換する。 InStr 指定した文字列から、検索文字列の位置を返す。 LCase 大文字のアルファベットを小文字にする。 UCase 小文字のアルファベットを大文字にする。 Len 指定した文字列の文字数を返す。 LenB 指定した文字列のバイト数を返す Trim 指定した文字列の左右両側のスペースを削除する。 LTrim 指定した文字列の左側のスペースを削除する。 RTrim 指定した文字列宇能右側のスペースを削除する。 String 指定した文字を指定した回数分だけ表示する。 Space スペースを指定した回数分だけ表示する。 Split 文字列を指定した区切り文字で分割して、配列の要素とする。 Join 配列の各要素を指定した文字を区切り文字として結合する。 日付 Date 現在の日付を表示する。 Time 現在の時刻を表示する。 Now 現在の日付と時刻を表示する。 Year 日付から年を取り出す。 Month 日付から月を取り出す Day 日付から日を取り出す Hour 時刻から”時”を取り出す Minute 時刻から”分”を取り出す Second 時刻から”秒”を取り出す Weekday 日付の曜日を数値で返す WeekdayName Weekday関数で返された数値を曜日名に変換する DateAdd 日付・時刻に指定した数字を足して表示する DateDiff 指定した2つの日付・時刻間の期間を返す DatePart 指定した日時から経過した時間を、指定した時間単位で返す DateSerial 指定した年・月・日から日付を返す Timer その日の午前0時からの経過時間を返す 定義域集計 DSum 条件を満たすレコードに含まれるフィールドの合計値を返す DCount 条件を満たすレコードで、指定したフィールドがNull値でないレコードの数を返す DLookup 一意の条件に合致するフィールドの値を返す DMax 条件を満たすレコードに含まれるフィールドの最大値を返す DMin 条件を満たすレコードに含まれるフィールドの最小値を返す DFirst 条件を満たすレコードに含まれるフィールドの最初のデータを返す DLast 条件を満たすレコードに含まれるフィールドの最後のデータを返す CStr 引数で指定した値をテキスト型に変換する CInt 引数で指定した値を整数型に変換する CLng 引数で指定した値を長整数型に変換する CDate 引数で指定した値を日付/時刻型に変換する Nz 引数で指定した値がNull値のとき、指定した型に変換する 評価 IsNull 引数で指定した値がNull値かどうか調べる IsNumeric 引数で指定した値が数値かどうか調べる IsDate 引数で指定した値が日付かどうか調べる その他 MsgBox メッセージボックスを表示して、どのボタンが押されたかを数値で返す InputBox ダイアログボックスを表示して、入力された文字列を返す Array 配列を作成する UBound 配列のインデックス番号の最大値を返す LBound 配列のインデックス番号の最小値を返す IIf 条件が成立するかどうかで返す値を変える
https://w.atwiki.jp/accessvba/pages/14.html
このページではAccessとは何か?ということをエクセルとの比較を交えながら説明しています。 Accessについて(エクセルとの比較) マイクロソフトAccessはデータベースソフトです。エクセルよりも大きなデータを管理するときや、データの量は変わらなくても同じファイルをファイルサーバに置いて複数のユーザが同時に使用したい、などというときに使用されます。 エクセルと比較した長所は、 大きなデータを扱っても極端に重くならないこと ネットワークで共有することが可能 よりシステマチックなので別の人が作ったファイルでも、メンテナンスが比較的容易。 などです。 逆に短所としては、 エクセルほど直感的な操作ができないので、敷居が高い エクセルほど情報が豊富ではないので、分からないことがあったときに困ることがある といったところでしょうか。 Accessを構成する要素 エクセルにはワークシートがあり、そこに データを入力し そのデータが保存され オートフィルタや条件付き書式やVLookup関数などで抽出・加工し それらがシートにそのまま反映され シート自体が印刷対象 となっていました。 つまり、見た目・保存・データの加工・印刷画面がひとつの画面のみで行いました。 が、Accessでは違います。Accessは、オブジェクトと呼ばれるいくつかの要素で構成されており、それぞれ役割があります。 データが保存される → 「テーブル」 データを入力する → 「フォーム」 抽出・加工 → 「クエリ」 印刷 → 「レポート」 主なものでこのようになります。 面倒くさいようですが、最終的に帳票で印刷されるものを、帳票と同じデザインで入力するのは手間ですし、また、印刷物の形式が複数あったり、ユーザに勝手にデザインを変更させたくない場合もあります。 さらには、入力したデータの種類が”文字列”であったり、”通貨”、”日付”であったりなどさまざまあり得るわけですが、エクセルだと、そのセルの表示形式がなんなのかはひと目ではわかりません。セルを右クリック→プロパティ→表示形式タブを開いて、それでやっとわかります。 Accessでは、テーブルで、一個一個指定します(というか、そうしないといけません)。よって、簡単に一覧することができるのです。 これらに理由により、Accessは大量のデータを日々、追加・修正していくことに向いているのです。 主な用途 大中企業の部門内向けデータベースや、事務所、商店などに向いているとされています。同時にアクセスするユーザが10名以下であることが目安と考えてもらえれば良いでしょう。
https://w.atwiki.jp/hitkik/pages/29.html
Access2000でリンクテーブルが遅いBUGの回避方法 http //support.microsoft.com/kb/261000/ja 解決方法 バックエンド データベース内の各テーブルの "サブデータシート名" プロパティを [なし] に設定します。この設定の変更は、手動で行うか、コードを使用して行うことができます。 サブデータシート名を手動で設定する 1.バックエンド データベースのテーブルをデザイン ビューで開きます。 2.[表示] メニューの [プロパティ] をクリックします。 3."サブデータシート名" プロパティを [なし] に設定します。 4.テーブルを保存して、閉じます。 Null値を回避する関数 Nz(値 [,null時の値] ) ビューが「フォームビュー」「帳票」の時に並び替えするためのVBA Me.Form.OrderBy = "フィールド名" Me.Form.OrderByOn = True ↑↓キーでデータリストを上下できる表示方法 フォームとサブフォームを使う。 サブフォームは、クエリ/テーブルと連結し、規定のビューを「データシート」 ビューの設定を「データシート」にする。 なお、フォーム自体の設計は別途可能で、ビューを「フォームビュー」に変更するとそちらのフォームが表示される。 並び替えは・・・AccessRuntimeではできない。 FORMを、データシートビューで表示し、SQLを切り替える フォームは、「ビューの設定(Defaultview)」を「データシートビュー(2)」にすると、カーソルキーで上下左右に動かせるシンプルなワークシート形式の表示にすることができる。 このとき表示されるフィールドは、デザインビューに入れられたフィールド。ビューをフォームに変更すると、フォームの形で同じデータが表示される。 各フィールドの設定はそのままデータシートビューに引き継がれる。(コンボボックス、イベント処理など) このとき表示されるデータは、 RecordSource = SQL文 || クエリ名 フォームからサブフォームのデータリストを変更するときには、 Me!サブフォーム名.FORM.RecordSource = SQL文 フォームから自分のデータリストを変更するときには、 Me.FORM.RecordSource = SQL文
https://w.atwiki.jp/accessvbfa/pages/13.html
Accessとは Microsoft社製のDBMS(Database Management System データベースを管理するプログラム)のこと。 Accessファイルについて ある場所を消すとそこに「削除フラグ」が立ち、おしりに新しいメモリが追加されるだけで メモリ上には存在する。編集を繰り返すと膨大な重さになってしまうので 必ず人に提出する際は最適化する。(ツール⇒データベースユーティリティ⇒最適化) 基本概念 基本形 サーバサイドにDBとサーバサイドプログラムが置いてあり クライアントサイドにサーバサイドプログラムにアクセスするプログラムが置いてある クライアントサイドのプログラムがサーバサイドプログラムにアクセスし サーバサイドプログラムがサーバにおいてあるDBにアクセスし、更新をする。 それに対し、Accessは全てクライアント側で保持しているためものすごくシンプルである。
https://w.atwiki.jp/accessvbfa/pages/16.html
Jetデータベースエンジン(Jet database engine) Microsoft社が開発したリレーショナルデータベースエンジン。 Microsoft Access用に開発されたもので、現在ではWindowsに統合され様々な製品から利用されている。 また、ODBCへのアクセスも提供されるので、ODBCに対応したインターフェースを持つデータベースならすべて(ODBCの機能の範囲内で)アクセス可能である。 ODBC(Open DataBase Connectivity) Microsoft社によって提唱された、データベースにアクセスするためのソフトウェアの標準仕様。 ドライバみたいなもの。 DAO(データアクセスオブジェクト) Accessで使用されるMicrosoftJetデータベースエンジンを公開した最初のオブジェクト指向インターフェイス。 DAOは単一システムのアプリケーションや小規模でローカルなネットワークで使用するのに 最も適している。 DAOはJetデータベースエンジンを対象にして開発されているのでJetのもつセキュリティ機能・データ定義機能などを十分に操作することができる。 DAOはデータベースにAccessを使用するアプリケーションの場合、最大のパフォーマンスを得ることができる。しかしアプリケーションを運用していくうちに規模が大きくなってデータベースをSQLServerに移行することがあるかもしれない。 ADO(ActiveXDataObjects) オブジェクトの種類が簡素化されているためJetデータベースエンジンの細かな機能を制御することができないといった点が不足しているが 各オブジェクトモデルで使用できる機能を使えばADOで不足している機能をほとんど補うことができる。 SQLServerに対する処理で良いパフォーマンスを得ることができる。
https://w.atwiki.jp/setechdiv/pages/18.html
アクセスのこととかもろもろ書くページ。 概要 ファイル形式 (2007) ACCDB ACCDE "実行専用"ファイル。VBAソースコードは全て削除されている。 Access2000にて作成されたファイルをAccess2007で開こうとすると、 DBが古いため2007(Accdb)形式で再保存するようダイアログが表示される。 拡張子を変更すると何かと支障が出るため、 一度22007(Accdb)形式で保存し、改めて2003(mdb)形式で元ファイルを上書き保存する。 オブジェクト別 テーブル クエリ フォーム コントロール レポート マクロ ループのひけつ! DB操作 データベースの操作 外部DBMS接続 トラブル ASPからIISでDBアクセス 以下未整理の項目 <Access>デコンパイルの方法 1.「ファイル名を指定して実行」で「msaccess/decompile」を実行 2.その後開いたAccessの画面から目的のMDBを開く 3.VBA画面でコンパイル <Access>InputBoxの戻り値 InputBoxの戻り値は文字列だ。 未入力を許可した場合、キャンセルした時と区別がつかなくないか?? ⇒つかなくない。 イミディエイトでみると同じ""だが、 実はキャンセル時はvbNullStringを返している!! それをどう判断するのかというと、 Dim Answer As String Answer = InputBox("foo") If StrPtr(Answer) = 0 Then キャンセル Else OK End If というわけだ…StrPtrは引数がvbNullStringの時だけ0を返すらしい! あと、普通にコントロールボックスで閉じた際も、 入力があってもvbNullStringを返すというえらい子なんだInputBoxは… <Access>Date型の初期値 Date型の初期値は 0 00 00。 Date型を初期化しようと思ったらこれしかないっぽい。 Nullや""(空文字列)を格納しようとすると、エラーが起きる。 しかし、フィールドではNullインサートいけるようだ(謎だなあ) <Access>インポートされまくるグローバル変数??? AとB、二つのMDBにインポートされているC.MDB。 メニューMDBであるX.MDBからAに行き、Xに戻って(A.MDB閉じて) Bに行く(B.MDBを開く)と、C.MDBのグローバル変数って初期化されるんだろうか? ということを、明日確認! <Access>コンボボックスのvAlign コンボボックスは、左右の寄せに関するプロパティはあるが、 上下に関するものはない。めんどっちい。。 ボタンコントロールをウィザードで作成すると、 勝手にヒントテキスト(ってプロパティがある)がつくので注意。 <Access>カレンダーコントロール どうも Me.カレンダー1.Value = "2011/03/08" とかで選択日付を指定できないなあ…と思っていたら、先輩の指摘があった。 Me.カレンダー1.SetFocus しとかないとダメなんだって。 ふううううううううん… なんでだろ(・・;) <Access>参照設定について 資源配布の際に勝手に参照外されてたりたまにするので、 手動で参照先を追加した改修の時なんかは、 上書き(資源配布)時にこれが外されてないかチェックが必要! <Access>カレンダーコントロールについて ActiveXカレンダーコントロールのValueプロパティは "選択中の日付"を格納している。 YearもMonthも全部そのようだ。 これは他の日付をクリックしない限り変わらず、 従って年とか月のコンボの選択値を参照する、とかいうのは無理っぽいのだ! .
https://w.atwiki.jp/benridayo/pages/14.html
Access これ便利だよ リンク集: AccessTips 初心者講座 Access アクセス Tips 500 Access Tips ページ上部へ コメント: 名前 コメント