• 締切済み

Access2003はチューニングは可能ですか?

以下のように、レコード1件ずつ処理させるVBAをAccess2003で書いているのですが、処理が遅いです。(1件ずつなので当たり前ですが・・・) AccessやWindows2000をチューニングして、早くすることは可能でしょうか? 基本的にCPUやメモリの増設は金欠のため考えておりません。 あと、開始から終了までミリ単位で計測するVBAの書き方も知りたいです。   '開始 '先頭のレコードに移動する DoCmd.GoToRecord , , acFirst Do '処理 ' ... '次のレコード DoCmd.GoToRecord , , acNext Loop While Me.NewRecord = False   '終了

みんなの回答

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

> AccessやWindows2000をチューニングして、早くすることは可能でしょうか? OS やアプリをチューニングしても劇的に変化することはまずありません。 > 開始から終了までミリ単位で計測するVBAの書き方 Declare Function timeGetTime Lib "winmm.dll" () As Long Sub Sample()   Dim lTime As Long   lTime = timeGetTime()      ' // 処理   Debug.Print Format$((timeGetTime() - lTime) / 1000, "#,##0.000") & "秒"    End Sub

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

処理の中身が分かりませんが ただの一括処理で、どうしても1レコードずつ処理する必要が無いものであれば アクションクエリを使用するほうが早いのでは

関連するQ&A

  • Accessサブフォームのレコード移動

    Accessにおいて、サブフォームのレコードの移動方法をどなたか教えてもらえませんか。「Forms![メインフォーム名]![サブフォーム名].Form.SetFocus DoCmd.GoToRecord acDataForm, "サブフォーム名", acNext」とコーディングしたのですがダメでした。よろしくお願い致します。

  • access の 最終レコードの判定はどう記述しますか

    月間スケジュールテーブルを新規生成するルーチンです 月初~月末まで各日にちの曜日を[曜日TMP]に求めてこのルーチンに入ります ("マスタFORM"には週間計画のテーブルのフィールドを設定したフォームです。 (週間計画:月曜日の○○時~◎◎時に○○の作業) Private Sub 分析RTN() DoCmd.GoToRecord acForm, "マスタFORM", acFirst Do While Not EOF(1) ‘ここでエラーが発生します If 曜日No. = 曜日TMP Then 追加RTN ’レコードの追加ルーチンです End If DoCmd.GoToRecord acDataForm, "マスタFORM", acNext Loop End Sub 他にお気づきの点はご指導ください

  • ACCESSマクロ、Me![氏名] その他について

    ACCESSの勉強をしています。temp = Me![氏名] その他がわかっていません。 わかりやすく教えていただけますか? (1)下記のマクロにて、temp=Me![氏名]ではOK,    temp=DataTable![氏名]、temp=DataTable!氏名、temp=DataTable.氏名ではNG    この理由? (2)下記のマクロにて、DoCmd.GoToControl "氏名"のラインが無くても正常に動きます。    これの理由? 基本情報:  テーブル名:「データテーブル」--フィールド「氏名」,「通番」を持つ  フォーム名:「DataTable」--「データテーブル」をソースとし、フィールド「氏名」,「通番」を持つ。  フォーム上のボタン名:「実行」(on click)          Private Sub 実行_Click() DoCmd.GoToRecord acForm, "DataTable", acFirst Do While [NewRecord] = False DoCmd.GoToControl "氏名" '----このラインがなくても正常に動く temp = Me![氏名] ' temp = DataTable![氏名]----これではうまく行かない ' temp = DataTable!氏名 -----これでもうまく行かない ' temp = DataTable.氏名 -----これでもうまく行かない 'うまく行くとは、tempにきちんとデータが取りこまれる。うまく行かないとは、 Object Requiredとしかられます。 Me![通番] = 1 DoCmd.GoToControl "氏名" '----このラインがなくても正常に動く DoCmd.GoToRecord acForm, "DataTable", acNext Loop (マクロで何をやろうとしているかは意味がありませんので、無視してください) End Sub よろしくお願い致します。

  • アクセスのVBEの初歩的な質問

    アクセス(に限らないとは思うのですが)のVBEを今、一生懸命勉強しているのですが、初歩的なところで、つまずいています。 あああ いいい ううう えええ 1 1 あいうえお かきくけこ 1 2 あいうえお かきくけこ 1 3 あいうえお かきくけこ 2 1 あいうえお かきくけこ 2 2 あいうえお かきくけこ 2 3 あいうえお かきくけこ 3 1 あいうえお かきくけこ 3 2 あいうえお かきくけこ 3 3 あいうえお かきくけこ というような、データを自動で入力したいのです。多分、for next と、do until あたりを組み合わせるとできると思うのですが、どうしてもうまくいきません。 とりあえず、以下のような、めちゃめちゃ効率の悪いコードを書いたのですが、もっと効率よくするには、どうしたらいいでしょうか?  ………………………………………………… Private Sub コマンド6_Click() Dim Aaa As Integer Dim Bbb As Integer Dim Ccc As String Dim Ddd As String DoCmd.GoToRecord , , acFirst Aaa = 1 Bbb = 0 Ccc = "あいうえお" Ddd = "かきくけこ" For i = 1 To 3 Bbb = Bbb + 1 あああ = Aaa いいい = Bbb ううう = Ccc えええ = Ddd DoCmd.GoToRecord , , acNext Next i Aaa = 2 Bbb = 0 For i = 1 To 3 Bbb = Bbb + 1 あああ = Aaa いいい = Bbb ううう = Ccc えええ = Ddd DoCmd.GoToRecord , , acNext Next i Aaa = 3 Bbb = 0 For i = 1 To 3 Bbb = Bbb + 1 あああ = Aaa いいい = Bbb ううう = Ccc えええ = Ddd DoCmd.GoToRecord , , acNext Next i End Sub …………………………………… ほんとうに、おはずかしいのですが、どうかご指導くださいませ。m(__)mm(__)m

  • 実行時エラー 3020の対策

    アクセス2003で次のエラーが発生します。 実行時エラー 3020 Update または CancelUpdateメソッドには、対応するAddNewまたはEditメソッドが必要です。 以下のソースは、「テスト」フォームにtestフィールドがある簡単なデータベースですが、全レコードを最初から最後までtestフィールドの先頭に"abc "を付加するというものです。 Public Sub Test() Dim form_name as String Dim frmObj As Form Dim rstObj As Recordset Dim fld_dat As String form_name = "テスト" DoCmd.OpenForm form_name Set frmObj = Application.Forms(form_name) Set rstObj = frmObj.Recordset '先頭のレコードに移動する DoCmd.GoToRecord acDataForm, form_name, acFirst Do fld_dat = rstObj.Fields("test").Value fld_dat = "abc " & fld_dat rstObj.Fields("test").Value = fld_dat '<--- *** ここでエラー *** '次のレコード DoCmd.GoToRecord acDataForm, form_name, acNext DoEvents Loop While frmObj.NewRecord = False End Sub

  • Access メインフォーム サブフォームにて

    お世話になります。 Accessにて メインフォームにコマンドボタンを置いて、クリックするとサブフォームのレコードが 次に行くようにしたいのですが、 コマンドボタン クリック Forms![メインフォーム]![サブフォーム名].Form!フィールド名.SetFocus DoCmd.GoToRecord , , acNext メインフォームとサブフォームのレコードが次に行ってしまいます。 サブフォームだけ次のレコードに行くには、どのようにすれば良いのでしょうか。 分かる方教えて下さい。 宜しくお願いします。

  • レコード移動について

    単票フォームで何件かレコードがあります。 それを DoCmd.GoToRecord , , acNext で1つずつ移動させ、今何番目のデータなのか?をメッセージで出し、 最後のレコードになったら「最後のレーコード」というメッセージの後に Exit Sub させたいのですが... F8 で1つ1つコンパイルさせるとできるのですが、 データベース画面から直接フォームをDBCLして開こうとすると いきなり「最後のレコード」になってしまいます。 記述のが悪いのでしょうか?それともフォーム自体が悪いのでしょうか? 教えてください Private Sub Form_Current() If Me.CurrentRecord >= Me.RecordsetClone.RecordCount Then MsgBox "最後のレコード" Exit Sub Else MsgBox "途中のレコード" DoCmd.GoToRecord , , acNext   End If End Sub

  • ACCESSでオフセットを求める方法

    いつもありがとうございます。 ACCESS VBAで gototrecordを使用して特定のレコードに移動するというフォームを作成しています。 DoCmd.GoToRecord , , acGoTo, オフセット 教えて下さい。 別のフォームで移動したいレコードを選択・指定し、その時にオフセットを取得しておいて、別のフォームで上記のGoToRecordでそのレコードに移動するという事を実現させたいのですがオフセット値の取得方法がわかりません。 どなたか詳しい方お助け下さい。

  • ACCESSでのマクロ、ソート、縦方法の移動の仕方

    質問No.1575853をベースとする更なる質問です。 ボタンを押すことで、  -テーブルをフィールド「氏名」+「データ」でソートする  -下記のマクロの考え方を使ってフィールド「通番」に番号を入れる。 問題:1.マクロでのソートの仕方がわかりません    2.縦方向に移動する方法がわかりません。      レコードを次に移動するのは、レコード番号をインクリメントすることであって      ソートされたレコードを縦方向にで移動するではない様です(?) 基礎情報  テーブル名:「データテーブル」--フィールド「氏名」,「データ」,「通番」 フォーム名:「DataTable2」--フィールド「氏名」,「データ」,「通番」  ボタン名 :「実行」(On click) Private Sub 実行_Click() DoCmd.GoToRecord acForm, "DataTable2", acFirst MyCount = 0 temp = "" Do While [NewRecord] = False If temp <> Me![氏名] Then MyCount = 1 Else MyCount = MyCount + 1 End If Me![通番] = MyCount DoCmd.GoToRecord acForm, "DataTable2", acNext Loop End Sub 下記にテーブルの内容を示します。 実行前は、本当は、ID順に並んでいると思いますが・・ 実行前--- ID 氏名 データ 通番 1 あ 1111 3 あ 3333 6 あ 6666 7 あ 7777 2 い 2222 5 い 5555 4 う 4444 8 う 8888 実行後--- フィールド「通番」に番号が入っている ID 氏名 データ 通番 1 あ 1111 1 3 あ 3333 2 6 あ 6666 3 7 あ 7777 4 2 い 2222 1 5 い 5555 2 4 う 4444 1 8 う 8888 2 よろしくお願い致します。

  • アクセスのVBAについて、フォームの On Error Goto についておしえてください。

    Private Sub cmd次_Click() On Error GoTo Err DoCmd.GoToRecord , , acNext Exit_Click: Exit Sub Err: MsgBox "この先にレコードがなくなると、ここをつうかするのだろうか。" Resume Exit_Click End Sub 一連の流れについて,ご解説ください。よろしくお願いいたします。

専門家に質問してみよう