tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル印刷の印字開始位置
記事No8448
投稿日: 2008/12/02(Tue) 18:54
投稿者へきさ
開発環境:Microsoft Visual Studio 2008
OS  :Win Xp SP2

はじめまして、いつも参考にさせてもらっています。

現在ActiveReports3.0Jという帳票ツールを使って3×7のタックシール印字を行うと
考えています。
1件目から印字を行う分には特に問題ないのですが、
1度印字を行ったタックシールを再度使用すると、当然前回印字した部分には
データが印字されており、印字を行うことができません。
そこで、前回6件印字を行った場合、7件目から印字を行うなどの方法はあるのでしょうか
7という数字に関しては作業者に入力を行わせる予定です。

よろしくお願いします

[ツリー表示へ]
タイトルRe: 印刷の印字開始位置
記事No8449
投稿日: 2008/12/02(Tue) 22:06
投稿者魔界の仮面弁士
>3×7のタックシール印字を行うと
http://www.grapecity.com/Japan/Support/Search/FaqContent.asp?id=24063
を見ると、ColumnCount = 3 と設定しておくと、そのように印字できるのかな?


> 前回6件印字を行った場合、7件目から印字を行うなどの方法はあるのでしょうか
> 7という数字に関しては作業者に入力を行わせる予定です。
AR3.0 も VS2008 も手元に無いので、2.0 のヘルプを見ただけの「予想」コードですが、
どうやら、LayoutAction プロパティという物を使うと、
「同じデータを複数印字」「同じ位置に重ね打ち」「空行の出力」などと
切り替えられるようなので……明細セクション(Detailだっけか?)のイベントで
それを弄ってやれば、もしかしたら実装できるかも。


Class Form1
 Private Sub Button1_Click(〜〜
  Dim SkipTackSeal As UInteger = CUInt(NumericUpDown1.Value)
  Dim r As New ActiveReport1(SkipTackSeal)
  r.DataSource = data
  r.Show()
 End Sub
End Class

Partial Class ActiveReport1
 Private SkipCount As UInteger = 0
 Private CurrentPosition As UInteger = 0

 Public Sub New(ByVal skipCount As UInteger)
  Me.New()
  Me.SkipCount = skipCount
 End Sub

 Private Sub Detail_Format(〜〜
  If CurrentPosition < SkipCount Then
   LayoutAction = LayoutAction.MoveLayout
   CurrentPosition += 1
  Else
   LayoutAction = LayoutAction.MoveLayout Or LayoutAction.PrintSection Or LayoutAction.NextRecord
  End If
 End Sub
End Class


それで駄目なら、DataTable の先頭に空レコードを幾つか挿入してみてはどうでしょう。

[ツリー表示へ]
タイトルRe^2: 印刷の印字開始位置
記事No8450
投稿日: 2008/12/03(Wed) 09:36
投稿者へきさ
回答ありがとうございます。

> >3×7のタックシール印字を行うと
> http://www.grapecity.com/Japan/Support/Search/FaqContent.asp?id=24063
> を見ると、ColumnCount = 3 と設定しておくと、そのように印字できるのかな?
自分も上記のサイトをみて、ColumnCountの設定を変更してみましたが、
このプロパティは横に表示するデータ数のようです。

> > 前回6件印字を行った場合、7件目から印字を行うなどの方法はあるのでしょうか
>
> 〜略〜
>
> それで駄目なら、DataTable の先頭に空レコードを幾つか挿入してみてはどうでしょう。
最後の手段として空レコードの作成を行って制御を行おうと思っていましたので、
上記の方法で実現が無理そうな場合は、空レコードで対応を行うと思います。

[ツリー表示へ]
タイトルRe^3: 印刷の印字開始位置
記事No8451
投稿日: 2008/12/03(Wed) 11:34
投稿者魔界の仮面弁士
> > >3×7のタックシール印字を行うと
> > http://www.grapecity.com/Japan/Support/Search/FaqContent.asp?id=24063
> > を見ると、ColumnCount = 3 と設定しておくと、そのように印字できるのかな?
> 自分も上記のサイトをみて、ColumnCountの設定を変更してみましたが、
> このプロパティは横に表示するデータ数のようです。

あれ。3 列 X 行のタックシールなら、ColumnCount = 3 で良いのでは?
Active Reports 2.0 付属のサンプルを動かした感じでは、そのように思えましたが…。

> 上記の方法で実現が無理そうな場合は、空レコードで対応を行うと思います。

先の「予想」コードですが、試しに VS2005 + Active Reports 2.0 体験版な
環境を用意して試してみたところ、当方では期待動作してくれました。

多分、VS2008 + Active Reports 3.0 製品版でも大丈夫じゃないかな?

[ツリー表示へ]
タイトルRe^4: 印刷の印字開始位置
記事No8452
投稿日: 2008/12/03(Wed) 12:02
投稿者へきさ
お疲れ様です

> > > >3×7のタックシール印字を行うと
> > > http://www.grapecity.com/Japan/Support/Search/FaqContent.asp?id=24063
> > > を見ると、ColumnCount = 3 と設定しておくと、そのように印字できるのかな?
> > 自分も上記のサイトをみて、ColumnCountの設定を変更してみましたが、
> > このプロパティは横に表示するデータ数のようです。
>
> あれ。3 列 X 行のタックシールなら、ColumnCount = 3 で良いのでは?
> Active Reports 2.0 付属のサンプルを動かした感じでは、そのように思えましたが…。
ColumnCount = 3にすることで、3×7の3の部分の設定を行うことができました。
自分も横に表示するデータ数と書いたのでわかり辛かったようですが、
1行にColumnCountに設定したデータを表示するという意味で書いたつもりでした。


> > 上記の方法で実現が無理そうな場合は、空レコードで対応を行うと思います。
>
> 先の「予想」コードですが、試しに VS2005 + Active Reports 2.0 体験版な
> 環境を用意して試してみたところ、当方では期待動作してくれました。
>
> 多分、VS2008 + Active Reports 3.0 製品版でも大丈夫じゃないかな?
頂いたpgを少し修正を行って実装した結果、思ったとおりの結果を得ることができました。
修正を行い必要があった理由がVS2008かActive Reports 3.0はちょっとわかりませんが、
修正した箇所を残しておきます。

 Public Sub New(ByVal skipCount As UInteger)
  Me.New()
  Me.SkipCount = skipCount
 End Sub
 ↓
 Public Sub New(ByVal skipCount As UInteger)
    MyBase.New()
    InitializeComponent()
    Me.SkipCount = skipCount
 End Sub

魔界の仮面弁士さん、ご教授ありがとうございました。

[ツリー表示へ]
タイトルRe^5: 印刷の印字開始位置
記事No8453
投稿日: 2008/12/03(Wed) 12:44
投稿者魔界の仮面弁士
> 修正を行い必要があった理由

標準の引数なしコンストラクタ(Sub New())を削除していませんか?

 Dim r1 As New ActiveReport1()
 Dim r2 As New ActiveReport1(SkipTackSeal)

私の元コードは、上記、どちらも使える状態にするためのものです。

[ツリー表示へ]
タイトルRe^6: 印刷の印字開始位置
記事No8454
投稿日: 2008/12/03(Wed) 14:08
投稿者へきさ
> > 修正を行い必要があった理由
>
> 標準の引数なしコンストラクタ(Sub New())を削除していませんか?
>
>  Dim r1 As New ActiveReport1()
>  Dim r2 As New ActiveReport1(SkipTackSeal)
>
> 私の元コードは、上記、どちらも使える状態にするためのものです。
お疲れ様です。
ソースを貼り付ける際に、間違ってコンストラクタを削除していたようです。

[ツリー表示へ]