月間スケジュールテーブルを新規生成するルーチンです
月初~月末まで各日にちの曜日を[曜日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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
つい集めてしまうものはなんですか?
人間誰もは1つ「やたらこればかり集めてしまう」というものがあるもの。 あなたにとって、つい集めてしまうものはなんですか?
-
秘密基地、どこに作った?
小さい頃、1度は誰もが作ったであろう秘密基地。 大人の今だからこそ言える、あなたの秘密基地の場所を教えてください!
-
【お題】引っかけ問題(締め切り10月27日(日)23時)
【大喜利】 「日本で一番高い山は富士山……ですが!」から始まった、それは当てられるわけ無いだろ!と思ったクイズの問題
-
あなたは何にトキメキますか?
「きゅんとした〜♪」 と思う瞬間ってありますよね。 それは恋愛だったり、推し活だったり、映画のワンシーンだったり……。
-
架空の映画のネタバレレビュー
映画のCMを見ていると、やたら感動している人が興奮で感想を話していますよね。 思わずストーリーが気になってしまう架空の感動レビューを教えて下さい!
-
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
-
4
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
5
Accessの条件付き書式設定で、複数の条件が一致した時の書式を設定したい
その他(Microsoft Office)
-
6
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
7
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
8
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
9
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
10
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
11
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
12
フィルタ後のフォームの件数の取得の仕方
Access(アクセス)
-
13
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
-
14
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
15
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
16
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
17
Access2000 サブフォームのRecordSet取得法
Access(アクセス)
-
18
ACCESS DCOUNTの抽出条件について
Access(アクセス)
-
19
ACCESSのサブフォームからメインフォームへの移動
Access(アクセス)
-
20
Access VBAでタブコントロールで選択するタブをしていするには。
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS 複数のフォームから同一...
-
カレントレコードの取得について
-
DoCmd.SearchForRecord が動か...
-
ACCESSのカレントレコードを、w...
-
アクセスで複数レコードを1レ...
-
Accessのレコード数をテキスト...
-
ACCESSフォーム入力後の確定
-
Accessフォームで詳細内の任意...
-
アクセエスのレコードの更新をV...
-
AccessのRefresh・Requery・Rep...
-
Accessで経過日付に応じて色を...
-
Accessでレコードの複製
-
エクセルで、抽出したデータだ...
-
Access サブフォームでの選択行...
-
ExcelのComboboxでマウスのスク...
-
クエリ実行結果0件の場合のフ...
-
ソフトの製品コードを知りたい
-
インデックスまたは主キーにはn...
-
ACCESSでフラグによる文字表示
-
ACCESSでフォームのチェックボ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS 複数のフォームから同一...
-
ACCESSフォーム入力後の確定
-
Accessでレコードの複製
-
AccessのRefresh・Requery・Rep...
-
accessでオートナンバーを使わ...
-
アクセエスのレコードの更新をV...
-
access の 最終レコードの判定...
-
Accessフォームで詳細内の任意...
-
Accessで経過日付に応じて色を...
-
DoCmd.SearchForRecord が動か...
-
Accessの「Form_AfterUpd...
-
Access 指定したレコードへ移動
-
MS.Access でサブフォーム付の...
-
ACCESS最終データだけ印刷でき...
-
アクセスで複数レコードを1レ...
-
Accessのレコード数をテキスト...
-
ファイルメーカーProでレコード...
-
ACCESS 単票形式フォームの新...
-
禁止文字をエクセルかアクセス...
-
access2010 特定文字を含むレコ...
おすすめ情報