• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESS 3レコード毎に認識したい)

3レコード毎に認識したい方法は?

このQ&Aのポイント
  • あるテーブルのデータでレポートを作成しました。3レコード印字したら、改ページせず、フッダーを表示したい。または、3レコード目の横にレコード内容以外のものを表示したい方法がわかりません。
  • レポート内で3レコード目と認識させる方法がわかりません。お知恵を貸してください。
  • レポート作成時に3レコード毎にフッダーを表示したい方法がわかりません。どなたかお知恵をお貸しください。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.3

1.レポートの「詳細」の一番右端に「マーカー」と言う名前のラベルを貼り、表題に「□」と入れます。 2.レポートのプロパティを見て、イベントの「開く時」を「イベントプローシジャ」にして、以下のコードを埋め込みます。 Private Sub Report_Open(Cancel As Integer)   LineCount = 0 End Sub 3.コードページの Option Compare Database Option Explicit の下に Public LineCount As Integer の1行を足して Option Compare Database Option Explicit Public LineCount As Integer にします。 4.レポートの「詳細」のプロパティを見て、イベントの「フォーマット時」を「イベントプローシジャ」にして、以下のコードを埋め込みます。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)   LineCount = LineCount + 1   マーカー.Visible = (LineCount Mod 3) = 0 End Sub コードページが、全体で Option Compare Database Option Explicit Public LineCount As Integer Private Sub Report_Open(Cancel As Integer)   LineCount = 0 End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)   LineCount = LineCount + 1   マーカー.Visible = (LineCount Mod 3) = 0 End Sub となっていればOKです。 これで --------- みかん りんご バナナ    □ カキ ナシ もも     □ 白挑 (改ページ) 黄桃 いちご     □ ぶどう 巨峰 マンゴー    □ --------- と言うレポートが出来ます。 2ページ目の「いちご」は2行目、「マンゴー」は5行目ですが、それぞれ9、12レコード目なので、マーカーが付きます。 フッターを使う場合はもう少し複雑で、ちょっと工夫が要ります。

naopyong
質問者

お礼

ありがとうございました! 無事に出来ました!!

その他の回答 (3)

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

3レコード目にイメージを表示させればいいのですね 詳細に非連結テキストボックスを置き =1 集計実行を全体 詳細に表示させたいイメージを置きます 詳細フォーマット時イベントに Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If Me.テキスト12 Mod 3 = 0 Then Me.イメージ11.Height = 300 Else Me.イメージ11.Height = 0 End If Me.詳細.Height = 200 End Sub イメージの高さは適当に調整してくださいね

naopyong
質問者

お礼

ありがとうございました!

noname#140971
noname#140971
回答No.2

SELECT (DBCount("ID","Tab1","ID<=" & ID)+2)\3 AS GNumber, ID, fld_1 FROM tab1 ORDER BY ID; ORDER BY 句がないと誤カウントするケースもあります。

naopyong
質問者

お礼

ありがとうございました!

noname#140971
noname#140971
回答No.1

テーブル_tab1: ID_fld_1 1__A 2__B 3__C 4__D 5__E 6__F 7__G レポート_クエリ1: 1 ___1__A ___2__B ___3__C 2 ___4__D ___5__E ___6__F 3 ___7__G このレポートの[並び替え/グループ化]は次のようです。 GNumber___昇順 ID________昇順 クエリ_クエリ1: GNumber__ID__fld_1 ______1___1__A ______1___2__B ______1___3__C ______2___4__D ______2___5__E ______2___6__F ______3___7__G SELECT (DBCount("ID","Tab1","ID<=" & ID)+2)\3 AS GNumber, ID, fld_1 FROM tab1; Access では標準モジュールで作成した関数をSQL文に組み込むことも可能。 そこで、DBCount() を使って3レコード毎にグループ番号を付与しています。 このようなグループ化をしておけばレポートの[並び替え/グループ化]機能が利用できます。 Public Function DBCount(ByVal strField As String, _             ByVal strTable As String, _             Optional ByVal strWhere As String = "", _             Optional ByVal ReturnValue = 0) As Variant On Error GoTo Err_DBCount    Dim N    Dim strQuerySQL As String    Dim rst     As ADODB.Recordset    Set rst = New ADODB.Recordset    strQuerySQL = "SELECT COUNT(" & strField & ") FROM " & strTable    If Len(strWhere) > 0 Then      strQuerySQL = strQuerySQL & " WHERE " & strWhere    End If    With rst      .Open strQuerySQL, _         CurrentProject.Connection, _         adOpenStatic, _         adLockReadOnly      If Not .BOF Then        .MoveFirst        N = .Fields(0)      End If    End With Exit_DBCount: On Error Resume Next    rst.Close    Set rst = Nothing    DBCount = IIf(N <> 0, N, ReturnValue)    Exit Function Err_DBCount:    MsgBox "SELECT 文の実行時にエラーが発生しました。(DBCount)" & Chr$(13) & Chr$(13) & _       "・Err.Description=" & Err.Description & Chr$(13) & _       "・SQL Text=" & strQuerySQL, _       vbExclamation, " 関数エラーメッセージ"    Resume Exit_DBCount End Function

naopyong
質問者

お礼

ありがとうございました!

関連するQ&A