アクセス2000で社内のデータ-ベースを作っています。
ようやくデータ-ベースが完成したので、データーベース分割ツールを使ってデーターベースをテーブルデータと、フォーム等に分割し、テーブルデータを社内のランのサーバーに置き、クエリ、フォーム及びレポートを各パソコンにコピーして皆で使えるようにしました。
とりあえず、動くのですが、動きが非常に重いんです。これは、どうすれば軽くなるのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

他の皆さんのおっしゃっている通り、AccessでC/S(厳密には違いますが)を構築しようとするとパフォーマンスは悪くなります。

2000では97と比べるとマシにはなっているような気がしますが、それでも2台以上になると若干落ちてきますよね。

何台くらいで同時使用されているのでしょう?
自分の場合は5台がMaxですね。それ以上の場合はSQL-Serverにしています。特に2000からはAccessとSQL Serverの親和性がいいので(多少は癖がありますが)プロジェクトを使用しています。

 分割ツールを使ったっていうことはひょっとして全てのフォームやレポートがサーバー側のテーブルに連結しているのでしょうか?だとしたら危険ですので、データ入力用のフォームくらいは、クライアント側に同じ構造のワークテーブルを置いてそれを編集して、サーバー側に書き込む処理にした方が安全です。ロックのチェックも利きますし。

 ARCさんがおっしゃっているようにLANに流れるデータ量を工夫すればかなりいいです。Accessとは関係ないですが、Windows2000 Serverをお使いなら、ターミナルサービスを利用するのも手かもしれません。
    • good
    • 0

要はLANの中に大量のデータが流れるからイカンのです。



例えば、フォームのレコードソースにテーブル名や、複数のレコードを返すクエリを指定していませんか?
フォームのレコードソースに、レコードを1件だけ返すSQLを書き、「次」ボタンで次のレコードを返すSQLをレコードソースに設定する、などとすると、ずいぶんと改善できます。

とにかく余計なデータをLANに流さない! ってことを念頭において開発するとそれなりに速度を稼げます。(それでも、データが溜まってくると遅くはなりますが・・・)

他には、内容が変化しないテーブルは積極的にクライアント側(フォーム等が格納されているDB)に置くようにします。

他にも色々と高速化のテクニックはあるのですが、こっから先は企業ヒミツ(^^;
    • good
    • 0

★DBのデータがサーバ(ネットワーク回線の向う側)になるので、通信回線レベルまで速度が落ちます。

10BASEだと、かなりストレスが来ます。これは仕方が無い事だと思います。LANの構成を見直してください(ダムHUBをS-HUBにする、1000BASEへ移行等、物理的対策になります)

★アクセスは、排他制御がイイカゲンなので、良く30~50分待たされたりします。(笑)
サーバがあるのでしたら、SQLServerや、ORACLEの方が良いのは事実ですが、難易度は跳ね上がります。

★ちょくちょく更新すると、トランザクションが溜まって、遅くなります
気休めかもしれませんが、アクセスのDBの最適化を行ってはどうでしょうか?

●DBの最適化
サーバで、Accessを起動。DBを呼び出す。
 (このとき、クライアントからアクセスしないほうが良い。)
ツール - データベースユーティリティー - 最適化/修復
から、できます。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QACCESS2003のデータアクセスページの使い方について

イントラ内でACCESS2003のデータアクセスページを使いたい。

1.ACCESS2003のデータアクセスページを作成しました。
2.そのMDBファイルと、データアクセスページ(htmファイル)を、WINDOWS2000ServerのInetpub内のwwwrootフォルダの中へ入れました。
3.ここにはイントラ内のHPなどを置いています。(普通に見れています。)
4.クライアントから、データアクセスページのhtmファイルを見に行くと「データソースログオン」が立ち上がります。(パスワードを設定しています。)
5.パスワードを入れるとデータアクセスページ(htm)から、通常のアクセスのフォームのごとくデータ入力が出来る予定なのですが(泣)できません。(泣)

で、悩んでおります。

ACCESS2003のMDBファイルとデータアクセスページ(HTMファイル)をサーバーのwwwrootへ置いただけでは、データアクセスページを通してmdbファイルへの入出力は不可能なのでしょうか?

Aベストアンサー

MDBに接続されたAccessプロジェクトを開いている場合データアクセスページは自動的にそのデータベースに接続されてそのパスがデータアクセスページのConnectionString プロパティに設定されます。
ページを作成した後でデータベースを移動またはコピーした場合はConnectionString プロパティに設定されているパスを更新して新しい保管場所を設定する必要がありますがどうなっていますか?
そこを確認してみてください。

Qデーターベース分割ツールで作成するリンクテーブルの名前「be」とは?

データーベース分割ツールでリンクテーブルを作成すると
自動的に「現在のファイル名_be.mdb」と言う名のファイル名が作成されるのですが
「be」はどういう意味でしょうか?
バックアップのbackupの「ba」なら理解できるのですが、「be」は何なのでしょう?

Aベストアンサー

多分ですが
Back End

Qホームページ移転に伴う.htaccessの使い方ですがアップロードして

ホームページ移転に伴う.htaccessの使い方ですがアップロードして削除できなくなる事ないですか??また、さくらサーバーは.htaccess使えますか??

Aベストアンサー

.htaccessだけではなく、
ファイルはパーミッションによっては一旦削除できなくなると思いますよ・・・
使えないのにアップすると削除出来ないとか。

>さくらサーバーは.htaccess使えますか??
使えます。
.htaccessを使えない有料サーバってあるのでしょうか?・・・

Qアクセス2003で完成されたフォームに新たに別のテーブルのフィールドを追加したい

アクセス2003を使っています。全く始めたばかりです。今までに2つのテーブル(テーブルAとテーブルB)からフィールドリストを出して,それなりに満足したフォームが出来上がりました。試行錯誤していくうちに,新しいテーブル(テーブルC)を作ってフィールドを増やそうと思いました。各テーブルの関連付けも行ったので,フィールドリストに反映されるのだろうと思ったのですが,テーブルAとBのリストしかでてきません。テーブルAにテーブルCのフィールドをコピーしようかとも思ったのですが,また,フォームのデザインを整えるのもたいへんかなと思っています。過去質問も見ましたが,近いものがありそうでなさそうで・・・

Aベストアンサー

現状のフォームのソースはてーぶるA,Bから作ったクエリですか
>各テーブルの関連付けも行ったので,
これはリレーションシップウィンドウで行ったのですか
リレーションシップとクエリの結合は別物です
リレーションシップを設定したからといって
クエリのほうに勝手にテーブルが追加されたりはしません

現状のクエリをデザインビューで開き、新しいテーブルCを取り込んで
結合をした上で必要なフィールドをクエリに追加してください

これでフォームのフィールドリストに新しいフィールドが追加されます

QAccessで作成したテーブルのOLEオブジェクトの使い方

Accessで作成したテーブルにデータ型(OLEオブジェクト型)で画像を取り込みできるようにしました。
取り込みした画像を開くためのフォームを作成して画像を開けるようにしました。
下記の内容です。

Private Sub Form_Open(Cancel As Integer)
Form.Caption = ProgName
End Sub

しかし「ビットマップ形式」ですと問題なく開くのですが、「JPG形式」ですと開けないのです。取り込みしたAccessテーブルのフィールドから直接だとひらけます。
Accessで作成したフォームから、「JPG形式」の画像を開くにはどうすればよろしいですか?
また、画像を1000件ほど取り込みすると大きいデータベースになってしまいます。Accessのデータベースのサイズは制限があるのかしら?
アドバイスいただけれは幸いです。

Aベストアンサー

Access のバージョンは?
んで Web で検索する努力はしましょうよ。
丸 1日ぐらい検索しっぱなしで悩まないと。

Google「access ole jpeg」で検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=access+ole+jpeg&num=50

Access 2003 では以下のような制限があるようです。
■ Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

■ OLE オブジェクト型のフィールドに格納されているイメージが正しく表示されません
http://support.microsoft.com/kb/832508/ja

解決策としては JPEG を開ける OLE コンテナになるアプリケーションをインストールしておく。

Google「Access データベース サイズ 制限」で検索
http://www.google.com/search?hl=ja&num=50&q=Access+%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9+%E3%82%B5%E3%82%A4%E3%82%BA+%E5%88%B6%E9%99%90&lr=lang_ja

Access のバージョンは?
んで Web で検索する努力はしましょうよ。
丸 1日ぐらい検索しっぱなしで悩まないと。

Google「access ole jpeg」で検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=access+ole+jpeg&num=50

Access 2003 では以下のような制限があるようです。
■ Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

■ OLE オブジェクト型のフィールドに格納されているイメージが正...続きを読む

Qアクセス フォーム テーブルを引用し、フォームを作成しました。 投入した結果がテーブルに上書きされま

アクセス フォーム

テーブルを引用し、フォームを作成しました。
投入した結果がテーブルに上書きされません。
設定方法を教えて下さい。
また、投入時は1か0を選択するプルダウンを作りたいのですが、どのように作るのでしょうか?

Aベストアンサー

テーブルの引用とのことですが、それはレコードソースに設定してあるということですか?
各テキストボックス等のコントロールソースも設定してありますか?
プロパティで確認してください。

レコードソース、コントロールソースが分からない場合は、ウィザードを使ってフォームを作りましょう。

QAccess2000でFTPの使い方について。

Access2000のフォームから、実行のボタンをクリックするとFTPサーバに接続→ファイル取得→Accessテーブルに取込→FTPサーバのファイル削除→FTPサーバの接続切断という処理をしたいのですがどのようにしたらよいかわかりません。説明不足だとは思いますが、アドバイスを宜しくお願い致します。

Aベストアンサー

ちなみに先ほどのFTPサンプルは、BASP21をインストール後、サンプルのコードを新規モジュールに貼り付けて(たとえば以下をまるごと)実行すればAccessでもそのまま動きます。

sub file_download()

Dim ftp As Object, rc As Long, v As Variant, v2 As Variant
Dim ctr As Long

Set ftp = CreateObject("basp21.FTP")
ftp.OpenLog "c:\temp\log.txt"
rc = ftp.Connect("ftp.microsoft.com", "anonymous", "")
If rc = 0 Then
v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一覧(詳細)
If IsArray(v) Then
For Each v2 In v
Debug.Print v2
Next
End If
v = ftp.GetDir("bussys/winnt/winnt-public") ' ディレクトリ一覧(ファイル名のみ)
If IsArray(v) Then
For Each v2 In v
Debug.Print v2
Next
End If
rc = ftp.GetFile("bussys/winnt/winnt-public/*", "c:\temp") 'ファイル受信

end sub

実行には20秒ほどかかります。
実行前にはCドライブにtempというフォルダを作っておいてください。

ちなみに先ほどのFTPサンプルは、BASP21をインストール後、サンプルのコードを新規モジュールに貼り付けて(たとえば以下をまるごと)実行すればAccessでもそのまま動きます。

sub file_download()

Dim ftp As Object, rc As Long, v As Variant, v2 As Variant
Dim ctr As Long

Set ftp = CreateObject("basp21.FTP")
ftp.OpenLog "c:\temp\log.txt"
rc = ftp.Connect("ftp.microsoft.com", "anonymous", "")
If rc = 0 Then
v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一...続きを読む

QACCESSでフォームを使って、テーブルを参照、データ入力、データ更新をしたいのです

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入力画面
       ↓
レコード番号を入れると、そのレコードのデーターが画面に表示され、
その画面で修正可能
       ↓
 保存 ボタンで保存

という流れです。

レコードナンバーはIDを使おうと思っています。

データの量が莫大な為、コンポボックスなどは使えません。

できるだけ、VBAなどは使わずに作りたいです。

よろしくお願い致します。

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入...続きを読む

Aベストアンサー

まずそのテーブルを基にしてフォームを作成します。
そのフォームのヘッダー部分にテキストボックスを配置後、一旦
上書き保存。
フォームのレコードソースを
SELECT *
FROM テーブル名 WHERE ID=[Forms]![フォーム名]![テキストボックス名]
とします。
次にテキストボックスの更新後処理に
Me.Requery
とすれば完成です。
フォームを開いてテキストボックスにID入力後エンターしてください。

保存に関しては、コマンドボタン作成後クリック時イベントに
DoCmd.RunCommand acCmdSaveRecord
とすれば良いでしょう。

この手のモノは検索すれば相当数ヒットするので、そちらを参考にされるのもよろしいかと。

QRuby on Rails 「attr_accessor」 の使い方に

Ruby on Rails 「attr_accessor」 の使い方について

こんにちは。

現在、Ruby on Railsで登録画面を作成しているのですが、attr_accessorで定義した項目に対して、validationのチェックを行うと、問題が起きてしまいました。

attr_accessorで定義した項目は、DB登録の対象ではないのですが、lengthのチェック等を行う必要があり、validates_length_of等を使って入力チェックを行っています。

問題になったのは、入力があったときだけチェックをかけたいのに、入力がなくてもチェックがかかってしまうという状態になってしまうことです。
「:if => 項目?」を書いてみると、「undefined method」のエラーがでてしまいます。

どなたか対応策の分かる方がおられましたらご教授いただけないでしょうか?

下記に実際の問題箇所のモデルクラスのソースを書いておきます。

 class User < ActiveRecord::Base

   attr_accessor :NEW_USER_PW ← 追加したアクセサ

   # 追加したアクセサに対するチェック
   validates_length_of :NEW_USER_PW, :minimum=>4, :message=>"は%d桁以上を設定してくださ            
    い。", :on => :update, :if => :NEW_USER_PW?

 end

上記のチェック内の「:if => :NEW_USER_PW?」で落ちてしまいます。
入力がないのにチェックに引っかかるとまずいので、入力がないときだけ上記チェックを行えれば良いのですが・・・。

どうぞ宜しくお願い致します。

Ruby on Rails 「attr_accessor」 の使い方について

こんにちは。

現在、Ruby on Railsで登録画面を作成しているのですが、attr_accessorで定義した項目に対して、validationのチェックを行うと、問題が起きてしまいました。

attr_accessorで定義した項目は、DB登録の対象ではないのですが、lengthのチェック等を行う必要があり、validates_length_of等を使って入力チェックを行っています。

問題になったのは、入力があったときだけチェックをかけたいのに、入力がなくてもチェックがかかってしまうという状...続きを読む

Aベストアンサー

attr_accessor :NEW_USER_PWを定義したからといって、
NEW_USER_PW?メソッドが定義されるわけではりません。
attr_accessorはゲッターとセッターメソッドを作るだけです。
それ以外の論理値を返すようなメソッドは自作しなければなりません。

NEW_USER_PW?メソッドを作成されていないのなら、「undefined method」が
出てしまうのは当然です。

質問にあるように、「入力があった場合のみ」とありますので、
NEW_USER_PW?メソッドを下記のように実装すればチェック可能です。

def NEW_USER_PW?
@NEW_USER_PW.size > 0
end

また、ifにはprocオブジェクトを渡すこともできますので、
:if => Proc.new{|u| u.NEW_USER_PW.size > 0}
と書いてもいいでしょう。


NEW_USER_PWというインスタンス変数はすべて大文字を使用されていますが、
見る人によっては定数と勘違いします。
変数であれば小文字表記を利用するほうが良いかもしれません。

attr_accessor :NEW_USER_PWを定義したからといって、
NEW_USER_PW?メソッドが定義されるわけではりません。
attr_accessorはゲッターとセッターメソッドを作るだけです。
それ以外の論理値を返すようなメソッドは自作しなければなりません。

NEW_USER_PW?メソッドを作成されていないのなら、「undefined method」が
出てしまうのは当然です。

質問にあるように、「入力があった場合のみ」とありますので、
NEW_USER_PW?メソッドを下記のように実装すればチェック可能です。

def NEW_USER_PW?
@NEW_USER_PW.s...続きを読む

Q「リレーショナルデータベース」と「データベース」

「リレーショナルデータベース」と「データベース」は何が違うのでしょうか?
accessはリレーショナルデータベースとの事ですが,普通のデータベースと何が違うのでしょうか?

[データベースはこうだけど、リレーショナルデータベースはこうだよ!]
って教えて頂ければ助かります。

Aベストアンサー

データベースというのはデータの集まりのことで、ソフトウエアのことではありません。データベースという用語は法律でも定義されています。
著作権法第2条第1項十の三
 データベース 論文、数値、図形その他の情報の集合物であつて、それらの情報を電子計算機を用いて検索することができるように体系的に構成したものをいう。

リレーショナルデータベースとは複数のデータベースを組み合わせて(関連付けて)一体として管理するデータベース構造(スキーム)のことであり、組み合わされる個々のデータベースのことはテーブルと呼びます。もちろんリレーショナルデータベースもデータベースの一種です。上記の法律の条文に照らしてみれば明らかでしょう。
EXCELのような表計算ソフトでもデータベース(テーブル)を構築することはできますが、リレーショナルデータベースを構築するには専用の管理機構が必要で、表計算ソフトでは構築不能です。

Accessのようなソフトはこのデータベースを管理・操作するためのソフトウエアであり、分類上「データベースソフト」あるいは「DBMS(データベース・マネジメントシステム)」と呼ばれます。素人向けはデータベースソフト、業務用はDBMSと呼ぶのが普通です。なお、マイクロソフトではAccessのことを、一般向けにはデータベースソフトウエアと呼び、技術者向けにはDBMSと呼んでいるようです。これらのソフトウエアで管理・操作する対象がデータベースでありリレーショナルデータベースなのであって、Accessなどのソフトウエアがデータベースなのではありません。

パソコンが仕事で使われることの少なかった初期(主にホビー・家庭用途)は、パソコン上で動作するデータベースソフトは「カード型」などのリレーショナル機能のないものが主流でした。住所録管理程度であればこれで十分でしたし、当時の表計算ソフトは現在のような大量データは扱えませんでしたから(最大500行とか)、Windows普及以前はデータベースソフトと言えばリレーショナル機能のないカード型ソフトが家庭や零細企業では普通に使われていました。
リレーショナルデータベースがあっても高価で(ビジネス用で一番普及していたdBASEは定価268,000円だったはず)、システム構築も簡単ではないので、システム化の進んだ大手企業やその関連会社でもなければ導入していないのが普通だったと思います。

データベースというのはデータの集まりのことで、ソフトウエアのことではありません。データベースという用語は法律でも定義されています。
著作権法第2条第1項十の三
 データベース 論文、数値、図形その他の情報の集合物であつて、それらの情報を電子計算機を用いて検索することができるように体系的に構成したものをいう。

リレーショナルデータベースとは複数のデータベースを組み合わせて(関連付けて)一体として管理するデータベース構造(スキーム)のことであり、組み合わされる個々のデータベー...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報