親子におすすめの新型プラネタリウムとは?

Accessでテーブルのみのmdbをサーバに置き、それ以外(フォームとか、レポートとか)のmdbを各クライアントに置いて運用をしています。

かなり頻繁に追加修正があるため、誰も利用していない
昼休みに作業を行っているのですが、誰かがmdbを開きっぱなしに
していると、ロック状態になり修正ができません。

仕方なく利用中のパソコンを調べてAccessを終了させています。
そこで、ある一定の時間に何も操作がなければ自動的に終了する
といった処理は可能でしょうか。

今は20台ぐらいなのですが
将来的にもっと台数は増えていきそうなので、管理が大変に
なってきそうです。

宜しくお願いします。

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

A 回答 (3件)

参考になりますか?


[ACC2003] Access 2002 または Access 2003 で、データベースにログオンしているユーザーを Microsoft Jet UserRoster で調べる方法
http://support.microsoft.com/default.aspx?scid=k …


プロセスの動作状況を監視する方法はありますか
http://www.microsoft.com/japan/technet/scriptcen …

スクリーンセーバーの開始時刻と終了時刻を記録する方法はありますか
http://www.microsoft.com/japan/technet/scriptcen …

Accessを終了させるのは判断が難しいですね
更新中のレコードの扱いをどうするか・・・
ユーザーは更新したつもりが更新されてない!と言ってきたり
更新するつもりは無かったのに更新された、何処を更新したか分からない・・・といってくる可能性がありそう。

一般的には各ユーザーのMDBのワークテーブルにに一旦貯めておいて
一気に書き込みなどの方法が有効かもしれません。

一概には言えませんが、20ユーザーだと運用に黄信号のように思います。
    • good
    • 0
この回答へのお礼

どうもありがとうございます。

そうなんです、更新中の扱いをどうすればいいかな
と悩んでいます

これについては、これからもまだまだ
調べていく必要があると思います

ワークテーブル作戦も現在検討中です(^^)

お礼日時:2007/03/03 17:52

こんにちわ


ANo.1です^^

>あとは、経営者サイドを納得させるプレゼンが
>どこまでうまくできるかにかかってます(^^;)

確かに重要ですね^^;
そのシステムが今後その会社では長い目で見ても使っていきたいと思われてるようでしたら、サーバー移行の際に、システム再構築し、新しいプログラムを組んだ方がよさそうですね^^
私も過去にいくつかAccessでプログラムを作成しましたが、決定的にきつくなるのは処理の遅さ、排他制御の便の悪さですね><
AccessをDBにしてExcelで作ったりもしましたが、DBとしてもやはり弱いですし、バックアップや保障といった面でみても、SQLサーバーやOracleに移行が会社で使うのであるなら必要になってくるでしょうね^^
まずは、そこまで費用をかけてまで効果を得られるシステムなのかにかかってきますけど、費用対効果より上の人たちは費用を重視しやすい傾向がありますし、効果が利益と直結しないプログラムにたいしての決断は上司の方々も渋ると思いますが、色々と試してみてください^^
がんばってください★
    • good
    • 0
この回答へのお礼

ありがとうございます。

SQLサーバへの移行も一度案を作りましたが、
そのときはまだまだ必要かどうか曖昧であったため
保留になってしまいました

しかし、現状はシステムも広がり
大事なデータを扱うようになったので
再度提案してみようと思います

お礼日時:2007/03/03 17:50

こんにちわ!


Accessの自動終了ですね。
まず自動終了事態はできます。(Access 自動終了とかでググってくださいね。)
ただですね、一定時間というものをどの用に取得するかは少々考える必要があると思います。
あとは、修正中のmdbだった場合それは保存するのか破棄するのか、など問題はたくさんあると思います。
違う観点からのアドバイスですが、会社で使っているのであるのなら、利用者が20人を超えてる時点でもうAccessは不向きかと・・・。
いくらテーブルをDBとして使っているだけでも、利用者が多勢で尚且つ頻度が高いとなるとかなり不向きです。
この際SQLサーバーやOracleなどのDBを検討打診されるのはいかがかと^^;
将来的にも利用者人数が増えるのであれば尚更だと思います。
参考までに。。。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

早速検索してみたいと思います。
又、現状のAccessの環境ですが、たしかに
重たいとか、異常終了するケースが増えてきました。

SQLサーバにいきなり移行できるかどうかは
会社の予算面でも検討中ですが、とりあえずMSDEへの移行は
現在内々に進めています。

でも、マルチユーザ環境には不向きなAccessですから
SQLサーバへの移行は必須だと考えています

あとは、経営者サイドを納得させるプレゼンが
どこまでうまくできるかにかかってます(^^;)

お礼日時:2007/03/02 14:12

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

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

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

関連するカテゴリからQ&Aを探す

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

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

Q一定時間操作されないと自動で終了させる方法

プログラムが一定時間操作されない状態(マウス操作やキー操作)が続くと
自動的にプログラムを終了させたいのですが
どうすれば実現できるのでしょうか?

Aベストアンサー

タイマーコントロールを使用してみてはいかがでしょうか。
例えば、1分おきにタイマーイベントを発生させて内部でカウントをとる。
そのカウンターが一定以上になるとプログラム終了。
キー操作など他のイベントが発生したときは、そのカウンターをリセットする。
これでできると思いますが、いかがでしょう。

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QACCESSでテーブルにあるチェックボックスを一括でYesにする方法を教えてください

アクセスのテーブルにあるYes/No型のチェックボックスを、コマンドボタンを押すことによって、全てのレコードをYes(チェックが入っている状態)又はNo(チェックが入っていない状態)にする
方法を教えてください。自分で、参考書をみながら試みたのですが、NoをYesに変えられたのですが、全部Yesにならなくて困っています。
(NoはYesになりますが、元々YesだったところがNoになってしまう)

まだ、VBA初心者ですので、小学生(実際は中年?)にも解るように教えていただければ幸いです。よろしくお願いします。

Aベストアンサー

>・・・VBA初心者ですので・・・
との事ですのでVBAがよろしいのですよね(^ ^)

テーブル名「Test」、フィールド名「Check」とします。

「Yes」にする場合。

Dim strSQL As String

strSQL = "update Test set Check = true"
DoCmd.RunSQL strSQL

で全てのレコードが更新されます。
「No」にする場合は「true」→「false」へ変更してください。

QAccessからExcelのファイルを起動する

Accessのフォーム上にボタンを作成して
クリックすると特定のExcelのファイルが起動する
ようにしたいのですが、簡単な手はありませんか?

Aベストアンサー

こんにちは。maruru01です。

Shell関数を使って、

Shell "C:\Program Files\Microsoft Office\Office\EXCEL.EXE ファイル名"

とします。
ちなみに、Excelの実行ファイルのパスは環境によって違ってきます。

あと、Excelの実行ファイルのパスがわからなくても、ファイルに関連付けられたアプリケーションで開くには、API関数のShellExecute関数を使用します。
API関数については、WEB上で検索して下さい。
このサイトの過去の質問でもヒットするかも知れません。

QAccessでテーブルの値をテキストボックスに代入するには?

[ID][文字列]の2つのフィールドからなる単純なテーブルがあり、削除クエリを併用して常に最新のデータしか格納されていない状態に工夫できました。(データは常に1つ)
そこでフォーム上にあるテキストボックスにこのテーブルの[文字列]フィールドのデータを表示させたいのですが、
どうしたらよいでしょうか?

また、このテーブルの[文字列]フィールドのデータを直接変数として使いたい場合はVBAでどのように記述すればよいのでしょうか?

Aベストアンサー

テーブルに"データは常に1つ"ならコントロールソースに
「=DLOOKUP("文字列のフィールド名","テーブル名")」
IDごとに"データは常に1つ"ならコントロールソースに
「=DLOOKUP("文字列のフィールド名","テーブル名","[ID]='" & Me.ID & "'")」

Dlookup関数のヘルプ
http://office.microsoft.com/ja-jp/assistance/HP010496551041.aspx

Q2つのテーブルに共通するレコードを削除したい

2つのテーブルがあり、両方にID番号フィールドが存在しています。
Aテーブルは元のデータ
Bテーブルは削除したいレコードのID番号
という構成になっているとき、
AテーブルとBテーブルの共通するレコードを削除するにはどうすればよいでしょうか。

ものすごく単純な質問で申し訳ないのですが...宜しくお願いします

Aベストアンサー

1、テーブル内容
 Aテーブル フィールド:ID番号、・・
 Bテーブル フィールド:削除番号、・・

2、まず、選択クエリで削除したいIDのサブクエリを作る。
  ・AテーブルとBテーブルのIDを結合。
  ・表示のSQLでサブクエリをゲット
   内容は
     SELECT Aテーブル.ID番号
     FROM Aテーブル INNER JOIN Bテーブル
ON Aテーブル.ID番号 = Bテーブル.削除ID;   

3、次に削除クエリを作成
  ・新規クエリで削除クエリを作成
  ・Aテーブルのみ選択
  ・ID番号を下にドラッグ
  ・その抽出条件に2で作成したサブクエリを「;」を外して
   IN (  )をつけて入力
   内容は
     IN (SELECT Aテーブル.ID番号
     FROM Aテーブル INNER JOIN Bテーブル
     ON Aテーブル.ID番号 = Bテーブル.削除ID)

 これで、クエリを実行することにより、Aテーブルの内容が、
 Bテーブルの削除番号と同じID番号のレコードを削除できます。

1、テーブル内容
 Aテーブル フィールド:ID番号、・・
 Bテーブル フィールド:削除番号、・・

2、まず、選択クエリで削除したいIDのサブクエリを作る。
  ・AテーブルとBテーブルのIDを結合。
  ・表示のSQLでサブクエリをゲット
   内容は
     SELECT Aテーブル.ID番号
     FROM Aテーブル INNER JOIN Bテーブル
ON Aテーブル.ID番号 = Bテーブル.削除ID;   

3、次に削除クエリを作成
  ・新規クエリで削除クエリを作成
  ・Aテーブルのみ選択
...続きを読む

QACCESS VBA ウィンドウを閉じる

ACCESS VBA の初心者です。
前に進まず困っておりまして申し訳ありませんが教えてください。
フォーム1にボタンをつけそのボタンを押すとフォーム2に画面遷移するように、作っています。
フォーム2に画面遷移した場合、フォーム1は不要になるので、画面遷移と同時にフォーム1を閉じたいのですが、うまく行きません。
docmd.close
と言う命令を使うとフォーム1のボタンを押すと画面遷移先のフォーム2の方が一瞬表示されてすぐに閉じてしまいます。
どうしたら、フォーム2が表示されてフォーム1が同時に閉じる事ができるでしょうか?

Aベストアンサー

下記で、問題なくフォーム1から、フォーム2を開き、
フォーム1を閉じます。(Access2000で確認しました)

取り合えず、下記の最小限のフォームで、動作確認してみて下さい。


フォーム1、コマンドボタン1個

----フォーム1の全コード----
Option Compare Database
Option Explicit

Private Sub コマンド0_Click()
 DoCmd.OpenForm "フォーム2"
 DoCmd.Close acForm, "フォーム1"
End Sub
---------------------------

フォーム2は空のフォーム

---------------------------------------------------------
>何がいけないのでしょうか・・・。

推測ですが、フォーム1の「読み込み解除時」のイベントが怪しいかも。
このイベントで、閉じる事をキャンセル出来ます。

その他の原因については、現時点では思いつきません。(^^;
もう少し詳しい情報を頂けたら、何か分かるかも・・・

---------------------------------------------------------
原因を特定するためのアドバイス(その1)

・On Error Resume Next は使わない(もし使っていれば)
・ブレークポイントを設定する(F9)
・ステップ実行で1行ずつ実行する(F8)

---------------------------------------------------------
原因を特定するためのアドバイス(その2)

まず、フォームのバックアップを取る。(コピーして貼り付け)

関係無いと思われる部分から、ソースを少しずつ削除する。

問題のボタンと、そのイベントプロシージャは残しますが、
その他のコントロールや、イベントプロシージャは削除していきます。

少し削除して、動作確認。少し削除して、動作確認。・・・
これを不具合がなくなるまで、繰り返します。

フォーム2に関しても、不要な部分を削除していきます。

不具合がなくなれば、その直前に削除した部分が怪しい。

下記で、問題なくフォーム1から、フォーム2を開き、
フォーム1を閉じます。(Access2000で確認しました)

取り合えず、下記の最小限のフォームで、動作確認してみて下さい。


フォーム1、コマンドボタン1個

----フォーム1の全コード----
Option Compare Database
Option Explicit

Private Sub コマンド0_Click()
 DoCmd.OpenForm "フォーム2"
 DoCmd.Close acForm, "フォーム1"
End Sub
---------------------------

フォーム2は空のフォーム

--------------------------------------...続きを読む

QAccessのレポート機能でソート&抽出条件を指定したい

accessでレポート機能について、質問です。
エクセルでいうフィルタ機能みたいなものはあるのでしょうか。

例えば、以下の場合、職位="B"だけレポートで表示したい場合、
どうすればよいのでしょう?
CD 職位 所属
01  A  東京
02  B  東京 → このデータだけを表示
03  A  大阪

1)クエリを作って、レポートで表示するしかないのでしょうか?
2)レポートのデザインで条件指定ができるのでしょうか?

ソートの条件も変えたいのですが、どの項目をソートするかは、
どこで指定できるのでしょうか?

要はレポートの形式は1つで、様々な抽出条件とソート条件で
レポート表示したいのです。

Aベストアンサー

>1)クエリを作って、レポートで表示するしかないのでしょうか?
>2)レポートのデザインで条件指定ができるのでしょうか?
レポートのデザインで、レポートのフィルタプロパティで、職位="B"として、フィルタ適用を"はい"にすると言う方法もあります。

>ソートの条件も変えたいのですが、どの項目をソートするかは、
>どこで指定できるのでしょうか?
レポートのデザインの「並べ替え/グループ化の設定」で行います。

>要はレポートの形式は1つで、様々な抽出条件とソート条件で
>レポート表示したいのです。
1つレポートの雛形を作って、フィルタと並べ替えのプロパティと並べ替え/グループ化の設定を変えて保存し、複数のレポートを用意する。
入力した値によって変えたい場合は、フォーム上のテキストボックスの値や特定テーブルのレコードの値にを参照するクエリを作り、レポートのレコードソースにする。
またはVBAで処理する。

p.s.
レポートの表示をボタンで起動する場合、VBAやマクロを呼び出します。
VBAやマクロでレポートを開く時に、フィルタやWhere条件式を設定できます。

>1)クエリを作って、レポートで表示するしかないのでしょうか?
>2)レポートのデザインで条件指定ができるのでしょうか?
レポートのデザインで、レポートのフィルタプロパティで、職位="B"として、フィルタ適用を"はい"にすると言う方法もあります。

>ソートの条件も変えたいのですが、どの項目をソートするかは、
>どこで指定できるのでしょうか?
レポートのデザインの「並べ替え/グループ化の設定」で行います。

>要はレポートの形式は1つで、様々な抽出条件とソート条件で
>レポート表示した...続きを読む

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む


人気Q&Aランキング