hatena
hatena
2021/11/06 (土) 03:19:03
上限ありの連番フィールドをつ...
テーブル レポート
IDを元に直前のレコードを参照して元レコードの連番フィールドに+1(連番に上限をつけて上限になると1に戻す仕組みにする)するというような仕組みやDLookUpを使うと
全レコードを対象に検索がされるのでどんどん重くなっていきますか?
レコードを作成したときに自動で作成したいです
必ずしもレコードに保存しなくても、計算で同じ指示事項が表示されるのでしょうけど
いちおうレコードに保持する方向で考えています(印刷や再発行したときにずれていると信憑性を疑われそうなので)
新規レコードを入力したときという意味なら、フォームの挿入前処理のイベントプロシージャで連番フィールドに入力すればいいでしょう。
IDフィールド順で連番をふるのなら、IDが最大のレコードの連番を取得して、それに+1したものでいいですね。44だったら1にする。
Private Sub Form_BeforeInsert(Cancel As Integer)
Dim num As Long
num = DLookup("連番","テーブル","ID=" & DMax("ID","テーブル"))+1
If num >= 44 Then num = 1
Me.連番 = Num
End Sub
IDフィールドにインデックスを設定しておけば、レコード件数が多くて遅いということはないはずです。
通報 ...
これに関しては、最初の質問と矛盾しています。上の回答は最初の質問に沿った回答です。
上の回答ではまずいのなら、現状の関連するテーブル構成を提示して、そのテーブル名を使って、具体的にどのような処理をしたいのか説明してください。
少なくとも、社員マスター、指示事項マスター、連番のあるテーブルの3つのテーブルが関連するはずです。