ACCESSを使用し、データシートビュー上でデータを削除編集作業しようとしているのですが、名前とメールアドレスで検索すると砂時計のマークのままとまってしばらくしてもなおりません。ただ、年齢や、出身で検索するとスムーズの検索できます。データ量の違いで時間がかかってしまうのがしかたがないのでしょうか?

何か良い解決方法ありましたら教えてください。
よろしくお願いします。

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

A 回答 (3件)

No.1、No.2のどちらの回答にも賛成です。


インデックスはかなり効きます。
日々(クエリ、フォーム、レポートも含めて)DBのメンテナンスを行なっていますと、あっという間に数倍のファイルサイズに膨れ上がってしまいますので私の場合はこまめに最適化を実行しています。

savignac37さんが扱っておられるのがどういう情報なのか良く分かりませんが、顧客データOR会員名簿でしょうか?

私が気になるのは、「削除作業が発生する原因が何なのか」です。
単に登録ミスで発生しているのか、状況の変化(外的要因)でおこるのか?
後者の場合なら、データそのものを削除するのではなく、削除マークのような物を使用された方が後々統計を取る時に利用価値が出てくると思います。
また、データシートビューで直接、削除編集作業を実行するよりもテーブルに削除専用(YES/NO型)フィールドを設けて、フォームを作成しクエリでターゲットとなるレコードを選択してYES/NO型のボックスにチェックを入れ、次回のフォームやレポートに反映できるようにすればスマートに作業を進められます。

どうしても削除しなければならないレコードならば、そのYES/NOをクエリで判断してまとめてDB上から削除すれば砂時計のイライラから解消されるのではないでしょうか?
    • good
    • 0

直接の回答ではないですが


アクセスで作業(データ入力、フォームの修正、クエリーの修正等)を
実行するとだんだんとサイズが増えて行き決して減ることは有りません。
したがって適度に最適化を行って下さい。

ツール→データベースユーティリティ→最適化
驚くほど小さくなることも珍しくありません。

小さくなれば検索も早いと思います。
    • good
    • 0

テーブルのデザインを変えないといけないのですが、


「名前」と「メールアドレス」のフィールドにインデックスをつけると早くなります
ただ、ファイルサイズが大きくなります
    • good
    • 0

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

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

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

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

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

QACCESSのデータシートビューの設定について

ACCESSのデータシートビューにした時、右クリックしても何も出てこなくなってしまいました。右クリックを禁止にするような設定等があって知らずにやってしまったのかもしれません。どなたかご存知の方、教えてください。よろしくお願いします。

Aベストアンサー

「起動時の設定」 で
「既定のショートカットメニュー」がオフになっているのでは?

Access2007 なら
「Accessのオプション」 の 「カレントデータベース」にあります。

QAccessのデータシートビューでのフィルタ

現在Access2010でシステムを作成しています。
データシートビューで,EXCELのフィルタと同じ様に操作したいのですが,チェックボックス付きの一覧が表示されるフィールドと,表示されないフィールドがあります。
どのようにすれば,全てのフィールドでチェックボックス付きの一覧を表示させることができますでしょうか?

フォームのRecordSourceは動的に変更おり,また内部結合したクエリをRecordSourceとしています。

Aベストアンサー

> チェックボックス付きの一覧が表示されるフィールドと,表示されないフィールド
定義されている内容と、登録されているデータはどんな状態?
「チェックボックス付きの一覧を表示させる」意味が無い状態とか。

性別フィールドが定義されていて、取りうる値が「男性/女性」の2値なら
「チェックボックス付きの一覧を表示させる」意味はあろうけど
チェックボックス付きの一覧が表示されないフィールドは
何万もレコードがあって、登録されているデータの種類も何万とあるなら、
「チェックボックス付きの一覧を表示させる」意味はなさそう。
(例:全国郵便番号簿テーブルの"郵便番号")

QACCESS データシートビューでの回転

こんにちは。
ACCESSに詳しい方のご意見をうかがいたくお尋ねします。
現在エクセルで処理を行っている業務があるのですが、これを効率化のためにACCESSに移植する事を検討中です。
その中に受注一覧表というのがあり、数か月分の受注状況をフォームに表示したいのですが、現在のエクセルでは日付を横方向にスクロールするように作っています。
ACCESSでもそれと同じ動きを実現するためには、レコードを一番上の行(もしくは下の行)に追加するのではなく、一番右の行に追加するという作る必要があります。
データシートビューでそのような表示は可能でしょうか?

Aベストアンサー

できますなら、ユーザーに日付を縦方向に取る表や画面になれてもらうのが一番コストがかからないと思いますけど

でないと無駄な作業ばかりが増える羽目になると思いますけど

データベースは一般的に時間軸は縦方向に取るように仕組み上なっていますからそれに逆らうとあとあと不便なことになってしまう気がします

今回限りにしておくことをお勧めます

Qホームページのデータ検索

ここへ質問して良いのか解りませんでしたが・・・
仕事でホームページのデザインをしている者です。
ホームページ上でデータベースで検索する機能を頻繁に見かけますが、これは一体どのようなソフト(?)
どのような仕組みで作られているのですか?
プログラミングの部分を専門の方にお願いしようと思い良い方を見つけたいのですが探し様もありませんので基礎の基礎知識として
教えて下さい。

Aベストアンサー

賃貸不動産会社の物件を検索するシステムを作りたいということで
よろしいでしょうか。

DBには何を使用してもかまわないと思いますが、NTかUnixのサーバを
立てて、Java ServletかEJBでプログラムを記述するシステムになる
かと思います。(またはJava対応のアプリケーションサーバを組み込むか)

これだけのシステムになると、素人が手を出すとかえって危険です。
きちんとしたシステムエンジニア(SE)を手配して、SE主体でシステム
を構築した方がよいでしょう。
そして、HPのデザイン部分のみaraaraさんが参画した方がよいかと
思います。

ご自分で適当なSEを探せない場合は、発注元の会社に依頼して、
発注元からきちんとしたシステム会社を探してもらったほうがよいでしょう。

Qデータ検索後の上書き

データシートに記載がある社員番号を入力フォームに入力し特定の社員データを検索するマクロを下記にて組みました。検索抽出された社員データを直接一部修正入力してもとの社員データヘ上書き処理をする(データによって修正しないこともあり)場合のマクロをご教示願います。

Sub ボタン1_Click()
Dim tmpInt As Integer, motoHani(), myRng As Range, i As Integer
tmpInt = Worksheets("入力フォーム").Range("C4").Value
motoHani = Array("C6", "C7", "C8", "F8", "C10", "C11")

Set myRng = Range("社員テーブル").Columns(1).Find(tmpInt, LookAt:=xlWhole)
If myRng Is Nothing Then
MsgBox "該当する事案はありません"
Exit Sub
End If
For i = 0 To UBound(motoHani)
Range(motoHani(i)).Value = myRng.Offset(0, i + 1)
Next
End Sub

データシートに記載がある社員番号を入力フォームに入力し特定の社員データを検索するマクロを下記にて組みました。検索抽出された社員データを直接一部修正入力してもとの社員データヘ上書き処理をする(データによって修正しないこともあり)場合のマクロをご教示願います。

Sub ボタン1_Click()
Dim tmpInt As Integer, motoHani(), myRng As Range, i As Integer
tmpInt = Worksheets("入力フォーム").Range("C4").Value
motoHani = Array("C6", "C7", "C8", "F8", "C10", "C11")

Set myRng = Range("...続きを読む

Aベストアンサー

まずあなたのコードを見ます。
Sub ボタン1_Click()
  Dim tmpInt As Integer, motoHani(), myRng As Range, i As Integer
  tmpInt = Worksheets("入力フォーム").Range("C4").Value
  ’入力フォームシートのC4の値をtmpintに代入(たぶん社員ID)
  motoHani = Array("C6", "C7", "C8", "F8", "C10", "C11")
  '入力フォーム上の対象セルをmotohanimにセット
  Set myRng = Range("社員テーブル").Columns(1).Find(tmpInt, LookAt:=xlWhole)
  '社員テーブル上のtmpint(社員ID)の一致するセルを取得
  If myRng Is Nothing Then
      MsgBox "該当する事案はありません"
      Exit Sub
  End If
  '以上見つからなかったときの処理
  For i = 0 To UBound(motoHani)
    Range(motoHani(i)).Value = myRng.Offset(0, i + 1)
  Next
  '見つかったら入力フォーム上の対象セルにその行の値を代入
End Sub

で目的の処理は
入力フォーム上のC4セルで社員テーブルを検索
見つかったら入力フォーム上の対象セルをその行に代入
つまりセルを見つけるまでは一緒で代入が反対になるだけでいいと思います。
    Range(motoHani(i)).Value = myRng.Offset(0, i + 1)

     myRng.Offset(0, i + 1)=Range(motoHani(i))
に変えたSubを作ればOKだと思います。

おまけ
新規追加のときは最後の列を見つけて同じ代入処理でできますがこのときは社員IDも代入することを忘れずに

テストしてませんがたぶんこれでいいと思います。
うまくいかなかったらまた書いてください。

まずあなたのコードを見ます。
Sub ボタン1_Click()
  Dim tmpInt As Integer, motoHani(), myRng As Range, i As Integer
  tmpInt = Worksheets("入力フォーム").Range("C4").Value
  ’入力フォームシートのC4の値をtmpintに代入(たぶん社員ID)
  motoHani = Array("C6", "C7", "C8", "F8", "C10", "C11")
  '入力フォーム上の対象セルをmotohanimにセット
  Set myRng = Range("社員テーブル").Columns(1).Find(tmpInt, LookAt:=xlWhole)
  '社員テーブル上のtmpint(社員ID)の一致す...続きを読む


人気Q&Aランキング

おすすめ情報