- ベストアンサー
3レコード毎に認識したい方法は?
- あるテーブルのデータでレポートを作成しました。3レコード印字したら、改ページせず、フッダーを表示したい。または、3レコード目の横にレコード内容以外のものを表示したい方法がわかりません。
- レポート内で3レコード目と認識させる方法がわかりません。お知恵を貸してください。
- レポート作成時に3レコード毎にフッダーを表示したい方法がわかりません。どなたかお知恵をお貸しください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
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レコード目なので、マーカーが付きます。 フッターを使う場合はもう少し複雑で、ちょっと工夫が要ります。
その他の回答 (3)
- CHRONOS_0
- ベストアンサー率54% (457/838)
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 イメージの高さは適当に調整してくださいね
お礼
ありがとうございました!
SELECT (DBCount("ID","Tab1","ID<=" & ID)+2)\3 AS GNumber, ID, fld_1 FROM tab1 ORDER BY ID; ORDER BY 句がないと誤カウントするケースもあります。
お礼
ありがとうございました!
テーブル_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
お礼
ありがとうございました!
お礼
ありがとうございました! 無事に出来ました!!