忙しい現代人の腰&肩のお悩み対策!

nekocyanです。
宜しくお願いします。

環境:
 Win Xp Pro Sp2
VisualStudio6 Sp6
Active Report 1.5

ご質問
 アクティブリポート1.5を使用して、帳票を
 作成しています。

2つのレポートを作って1つはサブフォームの
ベースとなります。
もうひとつに詳細を作成して、ベースのサブ
フォームエリアにロードして帳票を作成しようと
考えています

詳細はたてに8ブロック横に2ブロックです。
詳細は左側に、縦8ブロック作成し、その後
右側に縦8ブロック作成するように考えています。

ご質問
 この縦の8ブロックを
 作成するときに、自由にコントロールブレークして
 右の一番上から作成したい、また、右の縦を作成
 している状態から、次ページに改ページしたいと
 考えています。
 例:左側の4ブロック出力したところで
 右側の一番上から出力し、5ブロック出力したら
 改ページ

今の状態
 まず改列や改ページが制御できない事
 勝手に途中で改列や改ページをする事
 改列をした場合に右側の一番上から作成されない
 事がある事(一番上から出力される場合もある)
 以上のようなことが問題となっています。

設計状況
 ベースのフォームには明細が十分に入る
 サブフォーム用の「SubReport1」を設置している。
 DetailのCoulumnCountは1を設定

 明細のフォームは8行で1ブロックとなり
 ブロックの終了は GroupHeader1.GroupValue に
 値を設定することで行っている
 DetailのCoulumnCountは2を設定
 後のプロパティーはいろいろ変更してみました
 特にGroupHeader1.NewColumn の状態を
 ロジック内で変更させて改列の制御をしようと
 しましたが、うまくいきませんでした。

この状況を打開できる方法をご存知の方がおられ
ましたらなにとぞご教授下さい。

宜しくお願い申し上げます。

A 回答 (1件)

具体的には実際のソースと仕様を見ないと何とも言えませんが。

。。

・CanGrow、CanShrink=Falseにされていますか?
 どちらかが、デフォルトでTrueだったと思います(私は常にFalse:思わぬ所で改頁します)

・頁下部(印刷物全体)の余白は十分にありますか?
 こちらも、あまりギリギリだと改頁してしまいます

・印刷のないFotterはVisible=False

私も色々試してほぼ雛形の様な物を作っていますが、かなり難しい帳票もこれで作成した事があります
後はチェックするタイミングだけですので1度判ってしまうと変更も簡単なのですが。。。

・Detail Section 等で行カウンターを計算する
 改行は空白(項目のVisible=Falseなど)で可能です
 又、前行と比較する場合でも、非表示の項目を明細部に持ち、改行や改頁できます
 Heghtを計算し調整する事でも対応できるケースもあります

・GroupHeader 等でする場合、改頁用を別に持つ
 こちらの場合は、印刷するデータが無くてもVisible=Trueでないと制御出来なかったと思います。
 逆に、Heght=0でも、CanGrow=Trueの場合、いくらか印刷されてしまいます

うまく説明できなくて申し訳ないのですが、頁下部の余白がない場合以外は、ほぼ何とかなると思うのですが。。。
    • good
    • 0
この回答へのお礼

的確なご教授をいただきまして。誠にありがとう
ございます。
結局のところ、SUBレポートの方の NewColumn
を変更していたのでうまくいかないことに気がつき
ました。実際ベースの方の NewColumn にパラメタ
を与えたら、思い通りの動きになりました。
本当にありがとうございました。
このご教授が無かったらきっと気がつかずに
いたと思います。

お礼日時:2006/05/25 01:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QActiveReportについて

ActiveReportの詳細セクション(Detail)以外の、例えばGroupFooterなどで、1ページに表示するデータ(行)数が足りなかった場合に空白行を出力することなどできますか?
(例えば1ページに18行のデータを表示するとして、データが5件の場合、合計(GroupFooter)で18行に満たない分、空白を表示させる)
説明がうまくできなくて申し訳ないのですが、よろしくお願い致します。

Aベストアンサー

お疲れ様です。

あまりお役に立てず申し訳ありません。自分にも勉強になります。

>あと、詳細情報の件数で改ページするというのはできますか?

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

間違っていたらごめんなさい。

お疲れ様です。

あまりお役に立てず申し訳ありません。自分にも勉強になります。

>あと、詳細情報の件数で改ページするというのはできますか?

Detail_Formatで現在の行数を判断して

If 現在の行数 = 最大行数 Then
Me.Detail.NewPage = ddNPAfter'// このあと改ページ
Else
Me.Detail.NewPage = ddNPNone    '// 改ページしない
End If

で良いと思います。

>グループ条件が変わったかどうかという情報は、このようにしないととれないでしょうかね?

自分はまだまだ勉強不足なので...続きを読む

QActiveReports(アクティブレポート)について教えてください

 現在アクティブレポートを使って帳票を作っているのですが、
やりたい処理を、HELPや説明書やサンプルなどを見ても、
載っていない又は見つけられないことが多々あり困っています。
アクティブレポートの詳しい本やホームページがあれば見たいのですが、見つからないのでどなたか教えて下さい。

Aベストアンサー

ActiveReportは約5、6年前に、一ヶ月ほど苦悩した覚えがあります。
決して「ActiveReportには自身がある」とは言えないレベルですが。。。

私の使用していたバージョンと違うかも知れませんが、参考程度に発言します。

>出力したい物が60項目あるときは いつもTxtbox(Fild?)×60に一つづつ代入させているのですが、他に良い方法はないのでしょうか

補足内容からすると、帳票とデータベースとは、直接結び付けてないようですね?(Accessのレポートとは違うような仕組みという意味です。)
データベースから、データを配列変数にセットして、それを反映させているということとですね?

わたしも、その事には悩みました。

結果、言われている通り、力技で処理を行いました。
コントロール配列も使えなかったので(現バージョンはどうか知りませんが)、データ数を表示対象可能数で割って、こまめに張って行きました。

それがいやなら、(Access的な扱い)
1.各配列を1レコードととするワークテーブルを作成
2.それを直接帳票の各テキストボックスなどにリンクさせる
という方法があります。

ActiveReportは約5、6年前に、一ヶ月ほど苦悩した覚えがあります。
決して「ActiveReportには自身がある」とは言えないレベルですが。。。

私の使用していたバージョンと違うかも知れませんが、参考程度に発言します。

>出力したい物が60項目あるときは いつもTxtbox(Fild?)×60に一つづつ代入させているのですが、他に良い方法はないのでしょうか

補足内容からすると、帳票とデータベースとは、直接結び付けてないようですね?(Accessのレポートとは違うような仕組みという意味です。)
データベー...続きを読む

Qアクティブレポートで複数のレポートを表示したい

VisualBacis6.0で帳票はActiveReportsVer1.5Jを使用しています。

ActiveReportsでレポートを作成してプレビュー画面を出し印刷を行う
プログラムを作っています。
そこで複数(1頁もの)のレポートを1つのプレビュー画面で出したい
んですがやり方がわかりません。

プレビューで1頁となると1つ目のレポート、2頁目で2つめのレポート
と言うふうに出せるのでしょうか?今のところ、1つのプレビューに
対して1つしかレポートが出せないようなので、頁が変わるたびに
1つのレポートに対して編集するというやり方、プレビュー画面を複数
用意する方法など考えています。

説明がわかりにくくてすみません。
やり方はいろいろあると思いますが、どなたか教えていただけないでしょうか?
どうぞよろしくお願いします。

Aベストアンサー

お疲れ様です。

ActiveReportのコントロール「ARViewer」を使えば可能と思います。

例)画面にARViewerを大きめに貼り付けてActiveReportが2つあるとして、

Option Explicit

Private Sub Command1_Click()

  '// ARViewer初期化
  ARViewer1.Toolbar.Tools(12).Visible = False
  ARViewer1.Toolbar.Tools(13).Visible = False
  ARViewer1.TOCEnabled = False

  '// ActiveReport実行
  ActiveReport1.Run
  ActiveReport2.Run

  '// プレビュー表示
  ARViewer1.Pages.Insert 0, ActiveReport1.Canvas
  ARViewer1.Pages.Insert 1, ActiveReport2.Canvas
  ARViewer1.Pages.Commit

  '// レポート終了
  Unload ActiveReport1
  Unload ActiveReport2

End Sub

コマンドボタンをクリックしたらプレビューを表示します。

間違っていたらごめんなさい。

お疲れ様です。

ActiveReportのコントロール「ARViewer」を使えば可能と思います。

例)画面にARViewerを大きめに貼り付けてActiveReportが2つあるとして、

Option Explicit

Private Sub Command1_Click()

  '// ARViewer初期化
  ARViewer1.Toolbar.Tools(12).Visible = False
  ARViewer1.Toolbar.Tools(13).Visible = False
  ARViewer1.TOCEnabled = False

  '// ActiveReport実行
  ActiveReport1.Run
  ActiveReport2.Run

  '// プレビュー表示
  AR...続きを読む

QActiveReportの改ページ不具合について

.NETでActiveReportを使用しておりますが、改ページのデータ不具合が発生しております。

GroupHeader1に部門名、GroupHeader2に得意先名を指定しております。
各HeaderにはDataFieldを指定しており、GroupHeader1には部門コード、GroupHeader2には得意先コードを設定しております。改ページはGroupHeader1の部門コードごとに自動でされるよう設定しております。
帳票は下記のようになっています。

PageHeader
GroupHeader1
GroupHeader2
Detail
GroupFooter2
GroupFotter1
PageFotter

このデータで帳票を出力した場合、1ページ内に収まりきらずに自動で改ページされ、かつ次ページに1件しかデータがない場合、GroupHeader1の部門名が次のGroupの部門名になってしまいます。なお、最初の部門名以外で、次ページに1件のみしかでない場合は正常です。

上記回避方法をお教え頂けませんでしょうか?
3日間悩んでいるのですが、なかなか解決方法が見つかりません。皆様のお力をお貸しいただきたく。
よろしくお願いいたします。

.NETでActiveReportを使用しておりますが、改ページのデータ不具合が発生しております。

GroupHeader1に部門名、GroupHeader2に得意先名を指定しております。
各HeaderにはDataFieldを指定しており、GroupHeader1には部門コード、GroupHeader2には得意先コードを設定しております。改ページはGroupHeader1の部門コードごとに自動でされるよう設定しております。
帳票は下記のようになっています。

PageHeader
GroupHeader1
GroupHeader2
Detail
GroupFooter2
GroupFotter1
PageFotter

このデータ...続きを読む

Aベストアンサー

> 3日間悩んでいるのですが~

うぅーん。その前にGrapeCityに問い合わせておけばよかったですね。
バグレポートにも載っていない不具合でしょうか?
どちらにしても回答はくれると思います。
高いお金を出して購入したのですから是非問い合わせましょう。
バグレポートに載せない不具合も有りますからして。
もしかしたら既知の事で回避策など教えてくれるかもしれません。

#私の場合も不具合を認めておきながらバグレポートにも載らずパッチすらでませんでした

QActiveReportのDataSourceについて

ActiveReport for .NET Proで開発を行っています。

ActiveReportでDataSourceで設定したテーブルの情報をActiveReportのソース上で取得する方法は無いのでしょうか。
やりたいことは、DataSourceに設定したテーブルのフィールドを取得し編集して出力したいのです。

よろしくお願いします。

Aベストアンサー

お世話になります。

・DataSourceで設定したテーブルの情報をActiveReportのソース上で取得する方法
ActiveReport内のソースで
普通に、Me.DataSourceで取れます。

・DataSourceに設定したテーブルのフィールドを取得し編集して出力したいのです
Visible=FalseのTextBoxを配置して、
Detail_Formatでそいつの値を取得して編集して、
Visible=TrueのLabelなどに出力すればよいのでは。

QActiveReportsを使って[印刷ダイアログ]を表示させずに印刷する方法

いつもお世話になっております。
現在Microsoft Visual Basic 2005
ActiveReports 2.0 PRO
を使い印刷のプログラムを作成中ですが、わからない事があり、
皆様にお聞きしたいのですが、

<やりたいこと>
印刷ボタンをクリックした時に、プリンター設定ダイアログを表示させずに印刷を強制実行させる。

<現在のソース>
Public Class Form1
'Form1にある[印刷ボタン]が押された時
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'レポートを実行し、印刷します。
Dim rpt As New ActiveReport1()
rpt.Run()
rpt.Document.Print()
End Sub
End Class

<現在の状況>
・デバック開始
・Form1が画面に表示
・Form1の印刷ボタンクリック[Button1]
・プリンタ設定画面表示
・[OK]ボタンクリック
・印刷完了

できましたら、ヒントやHPの説明でも結構ですので、ご教授いただければと思います。

いつもお世話になっております。
現在Microsoft Visual Basic 2005
ActiveReports 2.0 PRO
を使い印刷のプログラムを作成中ですが、わからない事があり、
皆様にお聞きしたいのですが、

<やりたいこと>
印刷ボタンをクリックした時に、プリンター設定ダイアログを表示させずに印刷を強制実行させる。

<現在のソース>
Public Class Form1
'Form1にある[印刷ボタン]が押された時
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Cli...続きを読む

Aベストアンサー

お世話になります。

http://www.grapecity.com/japan/support/Search/FaqContent.asp?id=18984

上記のように、
Report.Document.Print メソッド
の 第 1 引数(印刷ダイアログを出す出さない)に False を
でいけるみたいですね。

Qvb.netで画面のコントロールId名を変数で動的に制御し処理する方法

以下のような処理がしたいです。
実現方法をご存知でしたらご教授下さい。

画面のコントロールText1~Text3があります。
For~Nextでこのコントロールに値をセットしたいです。

For i = 1 To 3
  Texti.Text = i
  ※このiのTextの後ろのiの部分を1~3と動的に変更し、各Textに値を設定したいです。
Next

Aベストアンサー

こんにちは、webでは、findcontrolを使うみたいです。

いかに、参考URLから、引用すると
***********************************
Dim L, U, i As Integer
Dim tx As System.Web.UI.WebControls.TextBox
L = LBound(dat)
U = UBound(dat)
For i = L To U
'コントロール名を探し出す
tx = FindControl("TextBox" & CStr(i))
'見つかったコントロールのTextプロパティに代入
tx.Text = dat(i)
Next

******************引用終わり*******
このようにすると良いみたいです。
asp findcontrolで、検索すると、
結構ヒットするみたいです。

参考URL:http://natchan-develop.seesaa.net/

QMAX値を条件にデータを取得するには?

SQL文で困っています。
ご教授下さい。


下記のようなデータがあった場合、それぞれの区分毎に
年月が最大(最新)のデータを取得したいです。
(実際には1レコードにその他項目があり、それらも取得します。)
<検索対象データ>
区分 年月   金額
-----------------------------
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100


<取得したいデータ>

区分 年月   金額
-----------------------------
A   200503  560
B   200508  1000
C   200508  400

よろしくお願いします。

Aベストアンサー

テーブル名をXXXとすると次のようなSQLでよいと思います。(最善の方法かどうかは自信がないですが)

select B.* from (select 区分, max(年月) as 年月 from XXX group by 区分) As A
inner join XXX as B on A.区分 = B.区分 and A.年月 = B.年月
order by B.区分

QVB6.0-整数と余りを求める

表題の通り、整数と余りを求める関数を教えてほしいです:例:100/60=1余り40
整数:1
余り:40
よろしくお願いいたします。

Aベストアンサー

Dim A,B,C,D as integer
A=100
B=60
C=Int(A/B) <---答は1
D=A mod B

●IntはAをBで割った時の整数部分を求める関数ですが、答が負の場合は
注意が必要です。 例 Int(-100/40)=-2
これを回避する場合 Fixがいいです

●mod は A を B で割った時の余りを求める関数

QSELECTで1件のみ取得するには?

こんにちわ。
いまORACLE9iを使用している者です。

ACCESSでは
SELECT TOP 1 項目名 FROM テーブル名
ORDER BY 項目名;
で並べ替えたデータ群のうち,先頭の1件だけを
取ることができますが,
ORACLEでそのような機能(SQL)はあるでしょうか?
教えてください。
よろしくお願いします。

Aベストアンサー

order by と rownum を併用する場合は注意が必要です。

[tbl01]
cola | colb
------------
1000 | aaaa
1001 | bbbb

というデータがある場合、
select cola from tbl01 where rownum < 1 order by cola desc;
とすると、「1001」ではなく、「1000」が返されます。
これは、order by の前に rownum < 1 が適用されてしまうからです。

解決するには、
select aaa from (select cola aaa from tbl01 order by cola desc) where rownum = 1;
とすれば良いです。


人気Q&Aランキング