No.1
- 回答日時:
回答ではないのですが、
(例えば1ページに18行のデータを表示するとして、データが5件の場合、合計(GroupFooter)で18行に満たない分、空白を表示させる)
とは、5件のデータを印字して残りの13行分の空白行を印字して合計(GroupFooter)を印字したいということですか?もしそうでしたらLayoutActionプロパティを使ってDetailで空白行数を出力してはどうでしょうか。
あまりイメージがつかめなくてすいません。
間違っていたらごめんなさい。
この回答への補足
その通りです。
今日ヘルプをみていて、LayoutActionをみつけたのですが、
使い方がよくわかりません。
ただ、わたしがここでやりたい「空白」というのは、
データの空白なので枠は表示させたいのです。
LayoutActionは、空白というだけあって何も表示されませんよね?
ちょっとその辺がまだよくわからないんです・・・。
No.2
- 回答日時:
お疲れ様です。
>LayoutActionは、空白というだけあって何も表示されませんよね?
Detailに枠線がかかれていれば印字されると思いますけど。
次のデータでグループ条件が変わり、合計(GroupFooter)が印字されるとわかるのでしたら、
Detail_Formatで
Me.LayoutAction = 1 + 2
と設定して、必要な行数を空印字(Detail_Formatを必要な回数回る)してから
Me.LayoutAction = 1 + 2 + 4
に戻すといいのではないでしょうか。現在何行目まで印字しているかをカウントしていないとだめですけど。
LayoutActionプロパティで指定している値は
1 = セクションを出力する
2 = レイアウトを移動する
4 = 次のレコードへ移動する
です。
間違っていたらごめんなさい。
この回答への補足
たびたびすみません。
いままで、改ページの設定をNewpageというのでやってたのですが(他にわからなかったので)、
このLayoutActionを使用する場合、この改ページの仕方では駄目ですか?
何か他に改ページの仕方をご存知でしたら教えて下さい。
教えていただいたLayoutActionについては、まだ上手くできていませんが、
もうすこし頑張ってみます。
どうしても上手くいかなかった場合は、またお伺いするかもしれませんが・・・
No.3
- 回答日時:
お疲れ様です。
ちょっと作ってみました。
Option Explicit
Private IntROW As Integer '// 現在の行数
Private BoolEMPTY As Boolean '// 空行判断
Private Sub ActiveReport_ReportStart()
'// 接続処理 略
'// GroupHeader
GroupHeader1.DataSource = "DAODataControl1"
GroupHeader1.DataField = グループ条件
GroupHeader1.NewPage = ddNPAfter
End Sub
Private Sub GroupHeader1_Format()
'// 行数初期化
IntROW = 1
BoolEMPTY = False
End Sub
Private Sub Detail_Format()
Dim RS As DAO.Recordset
Set RS = DAODataControl1.Recordset
'// データ出力の判断
If BoolEMPTY Then
'// 空行
Field1.Text = ""
Else
'// データ行
Field1.Text = RS!グループ条件
End If
'// 次のデータへ移動
RS.MoveNext
If Not RS.EOF Then
'// 次のデータとグループ条件を比較
If Field1.Text <> RS!グループ条件 Then
'// 次のデータでグループ条件が変わる
If IntROW >= 最大データ行数 Then
'// 空の行数を満たした
Me.LayoutAction = 1 + 2 + 4
BoolEMPTY = False
Else
'// まだ空行を印字する
Me.LayoutAction = 1 + 2
BoolEMPTY = True
End If
Else
'// 次のデータもグループ条件が等しい
Me.LayoutAction = 1 + 2 + 4
BoolEMPTY = False
End If
Else
'// これ以上データがない
If IntROW >= 最大データ行数 Then
'// 空の行数を満たした
Me.LayoutAction = 1 + 2 + 4
BoolEMPTY = False
Else
'// まだ空行を印字する
Me.LayoutAction = 1 + 2
BoolEMPTY = True
End If
End If
'// データ位置を戻す
RS.MovePrevious
'// 行数カウントアップ
IntROW = IntROW + 1
End Sub
Detailに枠が書かれていることが前提です。
>このLayoutActionを使用する場合、この改ページの仕方では駄目ですか?
LayoutActionを使用していてもNewPageには関係ないと思いますが。
>何か他に改ページの仕方をご存知でしたら教えて下さい。
自分もNewPageプロパティしか改ページとして使えるものは知りません。NewPageプロパティをどのセクションに設定するかによっても動きが違うと思います。
間違っていたらごめんなさい。
この回答への補足
RS.MovePrevious が使えませんでした。
エラーになってしまいました。
RS.MovePreviousが使えない場合、他には方法はないのでしょうか?
本当に何度もすみません・・・
No.4
- 回答日時:
お疲れ様です。
どのようなエラーでしょうか?
MoveNextはエラーにならなかったのでしょうか?
前方カーソル??
また、DataControl1はどのタイプを使用していますか?ADO,RDO,DAO??
ちなみに例であげたのはDAOです。
接続のところでは、
DAODataControl1.DefaultType = ddDAOUseJet
と、指定してあります。なにか関係あるかな?
例は、あくまでも例なのでこだわらずに、とりあえず次のデータとグループ条件が比較できればよいと思います。
間違っていたらごめんなさい。
No.5
- 回答日時:
お疲れ様です。
たびたびすいません。
もしADOでしたら ActiveReport_ReportStart で
With DataControl1
.Source = SQL '// SQL文
'// ↓↓↓↓↓↓↓↓↓
.Recordset.Close
.Recordset.CursorType = adOpenStatic
.Recordset.Open
'// ↑↑↑↑↑↑↑↑↑
End With
と指定してみてはどうでしょうか。
間違っていたらごめんなさい。
この回答への補足
やはり、上のようにしても駄目でした。(ちなみにADOでした)
グループ条件が変わったかどうかという情報は、このようにしないととれないでしょうかね?
昨日も終電ちかくまで頑張ったのですが、やはり上手く情報が取れませんでした。
あと、詳細情報の件数で改ページするというのはできますか?
No.6ベストアンサー
- 回答日時:
お疲れ様です。
あまりお役に立てず申し訳ありません。自分にも勉強になります。
>あと、詳細情報の件数で改ページするというのはできますか?
Detail_Formatで現在の行数を判断して
If 現在の行数 = 最大行数 Then
Me.Detail.NewPage = ddNPAfter'// このあと改ページ
Else
Me.Detail.NewPage = ddNPNone '// 改ページしない
End If
で良いと思います。
>グループ条件が変わったかどうかという情報は、このようにしないととれないでしょうかね?
自分はまだまだ勉強不足なのでこのような取得方法しか思いつきませんでした。
お役に立てずすいません。
Detail_Formatを少し変えてみました。
RS.MovePreviousを使わない方法です。お試しください。
Private Sub Detail_Format()
Dim RS As New ADODB.Recordset
Set RS = DataControl1.Recordset.Clone
'// データ出力の判断
If BoolEMPTY Then
'// 空行
Field1.Text = ""
Else
'// データ行
Field1.Text = RS!グループ条件
End If
'// 次のデータへ移動
RS.MoveNext
If Not RS.EOF Then
'// 次のデータとグループ条件を比較
If DataControl1.Recordset!グループ条件 <> RS!グループ条件 Then
'// 次のデータでグループ条件が変わる
If IntROW >= 最大データ行数 Then
'// 空の行数を満たした
Me.LayoutAction = 1 + 2 + 4
BoolEMPTY = False
Else
'// まだ空行を印字する
Me.LayoutAction = 1 + 2
BoolEMPTY = True
End If
Else
'// 次のデータもグループ条件が等しい
Me.LayoutAction = 1 + 2 + 4
BoolEMPTY = False
End If
Else
'// これ以上データがない
If IntROW >= 最大データ行数 Then
'// 空の行数を満たした
Me.LayoutAction = 1 + 2 + 4
BoolEMPTY = False
Else
'// まだ空行を印字する
Me.LayoutAction = 1 + 2
BoolEMPTY = True
End If
End If
'// 行数カウントアップ
IntROW = IntROW + 1
RS.Close
End Function
間違っていたらごめんなさい。
何度もご親切にありがとうございました。
やはり、RS.MovePreviousを使わない方法でもできませんでした。
というより、上司がADOと言っていたのですが、どうも私が思うに違うようなきがします。
OLE(?)とか書いてあるんですよ。だから違うんじゃないかと・・・。
(ActiveReportに詳しい人がうちの会社にはいないもので・・・)
結局、夜中までやってもわからなかったので、課長が来た時に相談したところ、
別の方法でやり方はあるらしいのですが、ちょっと面倒なやり方らしいです。
リリースも23日に迫っていて忙しいので、ブレイクのみで空白行はとりあえずは保留になりました。
でも、josyo_mさんが教えてくださったことが、他の帳票作成にかなり役立ちました。
何度も教えていただいたのに、このような結果になってしまってすみませんでした。
また何かあったときはよろしくお願いします。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ActiveReportのサブレポート機能を利用したときに1ページ目の1サブレポート目が表示されない 1 2023/08/19 06:10
- IT・エンジニアリング ★お手上げ状態です。助けてください。ActiveReportについて 1 2023/08/20 04:29
- Visual Basic(VBA) ★お手上げ状態です。助けてください。ActiveReportについて 1 2023/08/20 04:27
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- Visual Basic(VBA) ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:16
- IT・エンジニアリング ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:17
- Excel(エクセル) エクセルで対象日に該当するデータがある場合に別表へ全対象者を表示させたい。 3 2023/07/12 09:48
- Excel(エクセル) 非表示にしたい行をグループ化して折り畳み 4 2022/09/17 20:17
- Excel(エクセル) excel 表計算 加算するセルが空白の時累計を表示しない又は塗りつぶして表示しないようにしたい 4 2023/07/02 11:50
- Excel(エクセル) データ入力規則リスト 空白を無視 3 2022/07/13 15:11
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
ActiveReportのDataSourceについて
Visual Basic(VBA)
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
-
4
ActiveReportのサブレポート機能を利用したときに1ページ目の1サブレポート目が表示されない
Visual Basic(VBA)
-
5
ActiveReportsを使って[印刷ダイアログ]を表示させずに印刷する方法
Visual Basic(VBA)
-
6
ActiveReportの改ページ不具合について
Visual Basic(VBA)
-
7
VB6でActiveReport1.5Jを使って2列印字を実現するには
Visual Basic(VBA)
-
8
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
9
ActiveReportバウンドコントロールの値はどうやて参照すればいいの?
Visual Basic(VBA)
-
10
CloseとDisposeの違い
Visual Basic(VBA)
-
11
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
12
アクティブレポートで複数のレポートを表示したい
Visual Basic(VBA)
-
13
SQLのVARCHARとVARCHAR2の違い
その他(データベース)
-
14
VBの画面サイズについて
Visual Basic(VBA)
-
15
ActiveReport中のフォントサイズ変更
Visual Basic(VBA)
-
16
vb.netで画面のコントロールId名を変数で動的に制御し処理する方法
Visual Basic(VBA)
-
17
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
18
SQLでSUMなどの関数でデータが無い時に0を返したい。
Oracle
-
19
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
20
DataTableに対するLINQについて
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
Accessで該当データにフラグを...
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
MSCommを用いたRS-232-Cデータ転送
-
S9タイプからXタイプにデータ...
-
EXCELVBAでSQLserverからデータ...
-
[C言語] コメント文字列を無視...
-
PLSQLで文字列置換
-
VBAを使ってOutlookメール本文...
-
fortranでフーリエ変換→パワー...
-
VBA 毎日取得するデータを順番...
-
カンマからスラッシュに
-
C# ソケット通信でデータ受信時...
-
HTMLでテキストボックスで...
-
PDOオブジェクトは使い回し可能?
-
Excelのマクロでワードのテキス...
-
Excelの関数で表示されているデ...
-
GETはできるがPOSTができない、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
VBA 空白セルを削除ではない方...
-
多量のSUMIF式を軽くしたい
-
Excelのマクロでワードのテキス...
-
エクセルで2つの時系列のデー...
-
この行は既に別のテーブルに属...
-
VBAを使ってOutlookメール本文...
-
シーケンサにパソコンからアク...
-
EXCELVBAでSQLserverからデータ...
-
ブレーカー落ちで壊れたりしな...
-
[C言語] コメント文字列を無視...
-
オープンチヤットでデータ削除...
-
モジュラス103の算出方法について
-
javaでDBからデータを取ってき...
-
カンマからスラッシュに
-
VBA 毎日取得するデータを順番...
-
Android携帯をUSBメモリ代わりに
おすすめ情報