• ベストアンサー

MS-Access97でバーコードをタックシールに印刷させるには?

MS-Access97の標準で備えている機能(?)のMicrosoft Barcode Control(かな?失念してしまいました)を使って1シート12枚のタックシールにバーコードを印字をしたいのです。タックシールのイメージはこんな感じになります。 1, 2 3, 4 5, 6 7, 8 9,10 11,12 ただバーコードを印字するだけならできるのですが、例えば3~7の部分の5枚だけに印字するというような方法はないでしょうか?業務で使用するためあくまでも素のMS-Access97でできれば良いのですが。 どうか回答をお願いします。

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

  • ベストアンサー
  • stork
  • ベストアンサー率34% (97/285)
回答No.4

みたび、Storkです。 気にはなっていたのですが、忙しくて遅くなりました。 >バーコードの残骸のようなものは印字されてしまうのですよ.... 断言はできないのですが、Code39のスタートストップビットが残っているのではないかと思います。 確認方法は、バーは単純なもの(バーの数が少ない)で、可読文字がついていれば「* *」のような形になっているのではないかと思います。 もし、これが原因でしたら、バーコードコントロールのプロパティ―全般―データの確認で確認なしにしてください。 以下あやふや、自信なし、実証が必要です。 --------------------------------------------- スタートストップビットなしでも、運用に支障がなければ(リーダーで読めれば)そのままでも構わないでしょう。 リーダーで読めない場合は、「商品名:」のときのように、強制的に最初と最後に「*」をつけるとスタートストップビット付きと同じバーになると思います。 前回「大丈夫」といっておきながら「自信なし」になってすみません。

tomatokids
質問者

お礼

何度もアドバイスをいただきありがとうございます。 「残骸のようなもの」はおっしゃるとおり「*」でした。 スタートストップビットなしの設定でバーコードを印字すれば空データのレコードはバーコードが印字されませんでした。 が、正しく印字されなければならないバーコードがハンディーターミナル(バーコードリーダー)で読むことができませんでした(T_T) スタートストップビットありのバーコードは正しく読めるだけにちょっと悔しいです。これはハンディーターミナル(バーコードリーダー)の仕様なんですかね。 本当に何度もアドバイスをいただきありがとうございました。

その他の回答 (5)

  • stork
  • ベストアンサー率34% (97/285)
回答No.6

たびたびすみません、storkです。 書き忘れました。 >これはハンディーターミナル(バーコードリーダー)の仕様なんですかね 仕様ではなく設定だと思います。 code39の初期設定では、「スタートストップビットあり」が通常です。今のバーではデータの最初と最後が判別できていないんですね。 私の知っている範囲では、ほとんど(?)の機種で「なし」に設定できると思います。

tomatokids
質問者

お礼

何度も何度も申し訳ございません。 ハンディーターミナルは会社でいろいろと設定済みのものが与えられたため、細かな設定をすることができないのです。たぶん理解している者が会社にはいないと思います。 >強制的に最初と最後に「*」をつけるとスタートストップビット付きと同じバーになると思います。 実は#4の上記部分の意味がわからなかったため試していなかったのですが、意味がわかりました。今日、明日とお休みなので出勤したら試してみたいと思います。 結果は#4のお礼部分に記入したいと思います。

  • stork
  • ベストアンサー率34% (97/285)
回答No.5

storkです。 >これはハンディーターミナル(バーコードリーダー)の仕様なんですかね データに「*」を付加してリーダーで読めるか確認されましたか? #4に書いたとおり、それで大丈夫だと思うのですが.... 他の業務に支障がなければリーダーの設定を「スタートストップビットなし」に設定してもいいと思います。

tomatokids
質問者

お礼

今日試してみました。そうしたらアッサリと読めました。 もしかしたら語弊があるかもしれないけど、スタートストップビットってただ「*」が付いただけなんですね。てっきりチェックデジットの事だと思っていました。 早速VBでそれらしい事を書いて活用したいと思います。本当にありがとうございました。

  • sgh
  • ベストアンサー率61% (75/121)
回答No.3

つまり、シールがもったいないから、5枚使ったら6枚目から印刷したい という意味だと理解して説明します。 以下の例は、ACCESS2000で作った現品表(箱に貼るシール)を印刷するために 作ったモジュールです。 ACCESS97で動作するかは未確認です。HELPで"MoveLayout"を検索してみてくだ さい。 まどろっこしいことをやっているのは、1箱に何個入れることができるかを あらかじめ計算したものを"NUMBER_OF"に入れて、この枚数分だけ印刷するよう にしています。 参考になるかはわかりませんが、レポートのイベントをほぼそのままアップ します。 Option Compare Database Option Explicit Dim SkipCount As Integer Dim GroupNum As Integer Dim GroupCount As Integer Private Sub Report_Open(Cancel As Integer) On Error Resume Next SkipCount = InputBox("スキップする枚数", "印刷") If Err Then Cancel = True End Sub Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer) GroupCount = Me!NUMBER_OF '表示する枚数の取得 End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If SkipCount > 0 Then Me.MoveLayout = True '次の印刷位置に移動する Me.NextRecord = False '次のレコードに進めない Me.PrintSection = False 'そのページに印刷しない SkipCount = SkipCount - 1 ElseIf GroupCount > 1 Then Me.NextRecord = False '次のレコードに進めない GroupCount = GroupCount - 1 Else Me.NextRecord = True '次のレコードに進む End If End Sub

tomatokids
質問者

お礼

アドバイスをいただきありがとうございます。 sghさんのおっしゃるとおりタックシールの半端がもったいないのでこのような質問をさせていただきました。 このサンプルはレポートの「開く時」のイベント部分に記述すればいいんですよね。「詳細」部分は「印刷時」に記述し、そのレポートを開いてたら私のイメージ通りプレビューには表示されました。ちゃんと「6枚目から」とか「3枚目から」とか。 プレビューには正しく表示されるのですが、印刷するとなぜか「1枚目」からの普通の印字になってしまいます。なぜだかわかりますか? 解決まであとちょっとだと思うのですが、どうかもう少しお付き合いしてください。

  • stork
  • ベストアンサー率34% (97/285)
回答No.2

大丈夫。できますよ。 「商品名:」などのボックスをデータが空だったら、Visible=falseにするのが王道です。 しかし、コーディングが面倒なのでそれはやめましょう。回避策として、「商品名:」などの固定部分もデータとして一時テーブルに吐き出せばOKですよ。

tomatokids
質問者

お礼

確かにコントロール部分のプロパティをtrueやfalseにすればテキスト部分とかは対応できそうですが、やはり面倒なのでワークテーブル作成時に「商品名:」の部分も追加して「商品名:●●●」というかたちのデータを作成するという方法を実はやってました。そうすればレポート上印字するテキストボックスは一つでいいですからね。 ただそうやってもバーコードの残骸のようなものは印字されてしまうのですよ。なぜですかね。 ちなみに印字するバーコードの形式はcode39です。

  • stork
  • ベストアンサー率34% (97/285)
回答No.1

>例えば3~7の部分の5枚だけに印字.... 印字するデータを一時テーブルに書き出します。 その際に先頭に空データを2行追加しておけばよいのではないでしょうか。

tomatokids
質問者

お礼

早速の回答ありがとうございます。 補足のところにも書きましたが、空データのレコードは「何も印字しない」印字方法ってないですか? アドバイス等ありましたら引き続きお願いします。

tomatokids
質問者

補足

印字するデータをワークテーブルという一時テーブルに書き出して印字しています。 例でいうと1~2レコードには空データ、3~7レコードには印字データがっているテーブルをつくってそれをもとに印字します。 レポートはタックシール用なので1枚分用意すれば12枚分のデータが変わるだけでレイアウトはすべて同じになります。タックシールには「商品名:●●●」とその商品に対応したバーコードを印字します。●●●の部分は印字用のワークテーブルの値をそのまま表示するので問題ないのですが、タックシールの1,2枚目の部分に「商品名:」とバーコードの素の状態(ゴミのようなよくわからないもの)が印字されてしまします。 印字スタート位置の異なるレポートを12種類用意すればなんとか印字できますが、管理が大変なのでやりたくありません。「空データのレコードは何も印字されない」印字の方法はないでしょうか?