月間スケジュールテーブルを新規生成するルーチンです
月初~月末まで各日にちの曜日を[曜日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
他にお気づきの点はご指導ください
No.3ベストアンサー
- 回答日時:
こんにちは。
これかな~
DoCmd.GoToRecord acForm, "マスタFORM", acFirst
'Do While Not EOF(1) 'ここでエラーが発生します
Do While マスタFORM.NewRecord = False
If 曜日No. = 曜日TMP Then
'追加RTN 'レコードの追加ルーチンです
End If
DoCmd.GoToRecord acDataForm, "マスタFORM", acNext
Loop
ご回答ありがとうございます。
DoCmd.GoToRecord acdataForm, "マスタFORM", acFirst
Do While Forms!マスタFORM.NewRecord = False
で、解決しました。
No.6
- 回答日時:
> これはACCESS2000の機能でしょうか、環境の追加が必要でしょうか
> 調べれば分かるでしょうが、今一度助言頂けないでしょうか
DAO(Data Access Objects)は、Access97以前の標準で使用されていたデータベースへアクセスするための手続き命令です
ADO(ActiveX Data Objects)は、Access2000より採用されたデータベースへアクセスするための手続き命令です
ADOは、DAOの後継として開発発表されました、ローカルをベースに考慮されていたDAOをネット上で使用することを前提に開発されたものがADOと言うのが私の認識です(OLEからActiveXへ以降したのと同じようなもの)
基本的にAccess2000以降では、DAO、ADOともに使用可能です
(DAOは、参照設定をする必要が別にあったと思いましたが・・・)
DAO から ADO への移植 - MSDN (Microsoft)
http://www.microsoft.com/japan/msdn/data/techmat …
の様に、命令の比較はあります
クエリ等で行えない複雑な処理などを行う際には使用することがありますが、基本的にはクエリ等の標準機能で行えるものは、全般的にDAO、ADOより高速に稼動するので、クエリ等を使用したほうが宜しいかと思います
私の場合はAccess97の名残でDAOを使用していることが多いですが、ネット上ではADOの方をよく見かけるかな?
No.5
- 回答日時:
> 月間スケジュールテーブルを新規生成するルーチンです
よく判らないのですが、フォームのレコードを移動させてデータを書込みしているのでしょうか?
If Me.CurrentRecord = Me.Recordset.RecordCount Then
MsgBox ("最後のレコード")
ElseIf Me.NewRecord Then
MsgBox ("新規のレコード")
End If
で、最後のレコードは見つかります
Recordset等のEOFは、Bookmarkを使用して同じレコードに移動する必要があったと思います
しかし、データを更新などを行うには、効率的には、お勧めできない方法です
・更新クエリ
・ADO、DAOの使用
を使ったほうが宜しいかと^^;
ご回答感謝します。
・ADO、DAOの使用は未体験です。
これはACCESS2000の機能でしょうか、環境の追加が必要でしょうか
調べれば分かるでしょうが、今一度助言頂けないでしょうか
No.4
- 回答日時:
>Do While Not EOF(1) ‘ここでエラーが発生します
エラーが出て当たり前。「1番」のファイル番号はオープンされていません。
以下、EOF関数の例、その1
Open "FILE01" For Input As #1
Open "FILE03" For Input As #2
Open "MYFILE" For Input As #4
If EOF(1) Then Exit Sub ' "FILE01"が終端
If EOF(4) Then Exit Sub ' "MYFILE"が終端
If EOF(2) Then Exit Sub ' "FILE03"が終端
Close #1
Close #2
Close #4
以下、EOF関数の例、その2
Dim InputData
Open "MYFILE" For Input As #1 ' ファイル番号「1番」をシーケンシャル入力モードで開きます。
Do While Not EOF(1) ' ファイル番号1番のファイルが終端かどうかを確認します。
Line Input #1, InputData ' ファイル番号1番からデータ行を読み込みます。
Debug.Print InputData ' イミディエイト ウィンドウに表示します。
Loop
Close #1 ' ファイル番号1番を閉じます。
テーブルに関連付けされたフォームを最初から最後まで移動するのはデータの抜け落ちが発生したりして危険だし、フォームを使用する意味がありません。
もし、フォームの方にフィルタや並べ替えが設定してあり、特定のデータが出て来ないようになっていたり、データが1件も出て来ないようになっていたら「データがあるのにデータが無いと思って処理される」ので、何が起きるか判りません。
それに、フォームのレコード移動は、移動のたびに画面が再描画され、処理が重くなり過ぎます。
もし当方がチームリーダーで、チーム内にそういう書き方をするメンバーが居たら、すぐに作り直しさせます。
テーブルを1レコードづつ順に処理するなら、以下のようにテーブルを直接操作し、フォームを用いてはいけません。
Dim dbs As Database, rst As Recordset
' カレントデータベースへの参照を取得します。
Set dbs = CurrentDb
' 週間計画テーブルのレコードセットを開きます。
Set rst = dbs.OpenRecordset("週間計画テーブル")
' ファイルの最後まで実行します。
Do Until rst.EOF
If rst.Fields("曜日No.").Value = 曜日TMP Then
追加RTN 'マスタFROMを参照しないように変更したルーチンであること
End If
' 次のレコードに移動します。
rst.MoveNext
Loop
rst.Close 'rstを開放
Set dbs = Nothing 'dbsを開放
以下蛇足。
>DoCmd.GoToRecord acForm, "マスタFORM", acFirst
>DoCmd.GoToRecord acDataForm, "マスタFORM", acNext
次レコード移動では正しく「acDataForm」を指定しているのに、先頭への移動では間違って「acForm」を指定しています。
詳細なご指導ありがとうございます。
皆様のおかげで、自分では納得のいくシステムが完成しました。
処理スピードですが 4名の週間データ(56件)を月のスケジュールデータへ展開しました所(253件)、30秒程度です。
変化するテキス項目を表示しないとすると7秒と大幅に短縮されました。
このシステムを使用する事業所は利用者が50名程度です。
所要時間とデータ量は単純には比例しないと思いますが
7秒×50名÷4名=88秒 2分程度で1ヶ月のスケジュールが出来れば合格ですよね
ご指導の詳細は今後学習してVERSION2に反映させて戴きます。
PCはVALUESTAR VH300/7Aです
No.2
- 回答日時:
EOFの書き方だけなら
EOF(1)→ Forms.マスタFORM.Recordset.EOF
でコンパイルは通りますが、エラーが発生するでしょうね。
条件を記述しないでエラーで抜ける方法もあります。
Do'----------------------------<<無限ループ>>
On Error GoTo Exit_do
If 曜日No. = 曜日TMP Then
追加RTN ’レコードの追加ルーチンです
End If
DoCmd.GoToRecord acDataForm, "マスタFORM", acNext
Loop'----------------------------
Exit_do:'エラーの場合はここへ来ます
No.1
- 回答日時:
Accessは最近触ってないのでうそかもしれませんが
>>Do While Not EOF(1)
このEOF(1)って何に対してのEOFです?
書かれているフォームの動作内容としたらおそらく
・マスタFORMをオープン
・マスタFORMの最初のレコードに移動
↓
・マスタFORMの次のレコードに移動
ってなかんじだと思います
これだと間接的にDBをいじっているだけなので
(人間が画面を開いて帳票入力している操作をわざわざPGでやっている気がする)
登録されているレコード数と現在のレコード位置を把握しないといけない
気がします。マスタFORM.CurrentRecordとかマスタFORM.MaxRecord系かな?
ご回答有難うございます。
EOF(!) ()内 ファイルを開いた時に設定したファイルNo.ですね
まったく意味を取り違えてました
皆様のおかげでシステムは完成しました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA。複数のChangeイベントをまとめる方法 2 2022/03/31 12:03
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) VBAで教えて頂きたいのですが? 1 2022/04/29 02:36
このQ&Aを見た人はこんなQ&Aも見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
秘密基地、どこに作った?
小さい頃、1度は誰もが作ったであろう秘密基地。 大人の今だからこそ言える、あなたの秘密基地の場所を教えてください!
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
-
4
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
5
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
6
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
-
7
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
8
Accessの条件付き書式設定で、複数の条件が一致した時の書式を設定したい
その他(Microsoft Office)
-
9
ACCESSのサブフォームからメインフォームへの移動
Access(アクセス)
-
10
Accessのフォームにて、詳細行のボタンを行の内容により、表示/非表
その他(Microsoft Office)
-
11
フィルタ後のフォームの件数の取得の仕方
Access(アクセス)
-
12
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
13
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
14
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
15
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
16
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
17
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
18
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
19
ACCESS DCOUNTの抽出条件について
Access(アクセス)
-
20
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS 複数のフォームから同一...
-
accessでオートナンバーを使わ...
-
AccessのRefresh・Requery・Rep...
-
docmd.gotorecordを起動するには
-
access の 最終レコードの判定...
-
ACCESSフォーム入力後の確定
-
アクセスのフォームビューの帳...
-
access2021 レコードロックの使...
-
ACCESS最終データだけ印刷でき...
-
Accessの「Form_AfterUpd...
-
ファイルメーカーのレコード複...
-
ファイルメーカーProでレコード...
-
Access 指定したレコードへ移動
-
Accessフォームで詳細内の任意...
-
エクセルで、抽出したデータだ...
-
Access サブフォームでの選択行...
-
ExcelのComboboxでマウスのスク...
-
PDFファイル/抽出許可され...
-
AccessでIDを入力したら他の項...
-
未審査請求包袋抽出表作成とは...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS 複数のフォームから同一...
-
ACCESSフォーム入力後の確定
-
Accessでレコードの複製
-
AccessのRefresh・Requery・Rep...
-
accessでオートナンバーを使わ...
-
アクセエスのレコードの更新をV...
-
access の 最終レコードの判定...
-
Accessフォームで詳細内の任意...
-
DoCmd.SearchForRecord が動か...
-
Accessで経過日付に応じて色を...
-
Accessの「Form_AfterUpd...
-
Access 指定したレコードへ移動
-
MS.Access でサブフォーム付の...
-
ACCESS最終データだけ印刷でき...
-
Accessのレコード数をテキスト...
-
アクセスで複数レコードを1レ...
-
ファイルメーカーProでレコード...
-
ACCESS 単票形式フォームの新...
-
MSAccess ロック状態かどうかを...
-
禁止文字をエクセルかアクセス...
おすすめ情報