おすすめ本

最近のトラックバック

  • event (夢茶爺&苦茶爺のPC奮戦備忘録)

AccRanking

Ad

« 2016年11月 | メイン | 2017年9月 »

2017年6月

2017年6月26日 (月)

VB.NET:SpreadSheetGearを使って印刷処理

以前はVB.NETからエクセルを使って印刷処理を行うプログラムを作成したことがありました。

エクセル上に雛形となるシートを作成しておいて、そのシートをコピーし、 該当するデータを指定されたセルに当てはめて、印刷を行うというものです。
連続帳票ではなく、A4単票の印刷ではよく行ったものです。

エクセル印字をVBのプログラムから行うためには、エクセルのインストールが必須だったり、 「Microsoft.Office.Interop.Excel」を使ったCOM参照での処理が必要だったりします。
このCOM参照が曲者で、参照を開放しないとエクセルのプロセスがメモリ上に残ったままになったりします。 メモリに残ったままだと、次の印刷ができなかったりと、いろいろ悪さをします。 COM参照をしっかり開放してやれば、問題はないのですが...

やはりパソコンにエクセルがインストールしていないと動かないのがネックです。
そこで、サードパーティ製でエクセル互換のツールが無いかと探したら、 「XLSOFT」から直接エクセルファイルを操作できるツールが出ていました。
それが「SpreadSheetGear」という製品です。(外国製の様で、日本語対応したもののようです)

このツールですがDLLファイルを参照設定して利用しますが、上記のエクセルのCOM参照のオブジェクト内の 関数とほぼ同等の名称を使用している様です。

今回は印刷処理での利用がメインなので、サンプル等を見てみたのですが、 「WorkbookView」を使った印字例はあるのですが、このオブジェクトを使用しない例が なかったので以下の様なソースで試すと、とりあえず印刷はできました。 (何かのご参考までに...)


EXEと同じフォルダに存在する「TEST.xlsx」内の先頭のシートを単に印刷するサンプルです。

.NET開発テクノロジ入門2016年版Visual Studio 2015対応版

デル株式会社

2017年6月21日 (水)

BHT-BASIC4.0:[BS/C]キー入力ではまった件について

BHT-BASICのシステムで処理の実行を行うかどうかを、 [BS/C][ENT]キーで処理を行っているのですが、 もちろん[BS/C]キーは処理中断で、[ENT]キーは処理続行としています。

処理を中断しようとして[BS/C]キーを押すのですが、中断できない場合があるとの現象が発生しました。

ソース的には以下の様な組み方で、[BS/C][ENT]キーのどちらかのキーのみの反応行う様にしています。


DENSOさんのサンプルプログラムを見ても、 処理の中断の判定は「バックスペース(&H08)」のみで処理しているので、 深く考えずに「BS」のみで中断処理をしていました。

しかし、たまに「BS」が利かない場合があるとのことで、 バグの連絡を受けたので、少し調べてみました。 なんと、「BHT1300_Programmers_Manual_J1.pdf」にはちゃんと説明がされていました。 「付録Eキーボードとキー番号」のページからの引用ですが、以下の通りです。

==========================
[BS/C] *1 *2

*1 BSはバックスペース(08h)、CRはキャリッジリターン(0Dh)、Cはキャンセル(18h)、SPはスペース(20h)コードを表します。

*2 一定時間(デフォルト500ms)以上長押しでキャンセル(18h)コードを返します。
==========================
[BS/C]キーの長押しだとキャンセル(18h)コードが返ってくるのでした。

そこで、中止の判定をキャンセル(18h)コードでも行う様に変更し、バグを解消しました。



■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)
BHT-BASIC4.0:演算子について(BHT-1300)
BHT-BASIC4.0:画面への表示について(BHT-1300)
BHT-BASIC4.0:キー入力について(BHT-1300)
BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数の値渡し・参照渡しについて(BHT-1300)
BHT-BASIC4.0:文字列を扱うユーザ定義関数について
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその2
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその3
BHT-BASIC4.0:TeraTermを使ってDENSOのハンディターミナルにファイル(プログラム)転送を行う方法
BHT-BASIC4.0:I/OポートとWAIT、さらにTIMERについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
BHT-BASIC4.0:データファイルの検索について(SEARCH関数)
BHT-BASIC4.0:ユーザ関数の引数の仮変数に対する代入の注意点
BHT-BASIC4.0:データファイルの削除等について(KILL、CLFILEのラッパ関数)
BHT-BASIC4.0:ファイルの存在確認関数を作ってみました
BHT-BASIC4.0:拡張関数のバイナリサーチ処理関数(BSEARCH.FN3)の使い方
BHT-BASIC4.0:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について


楽天市場


デル株式会社

2017年6月17日 (土)

BHT-BASIC4.0:ハンディBHT-1306Bへの送信エラー(Active USB-COMポートドライバ)

私事なのですが、最近更新したシステムで客先より「データファイルをハンディへ送信できない」との連絡が在りました。
1か月以上は問題なく稼働していたのですが、ある日送信できなくなった様です。 その日の午前中には送信できたのですが、 午後での送信でエラーが発生しました。

その日の1回目は送信できたが、 2回目には送信できないとはプログラムのエラーでもなさそうですが、 原因がすぐには分かりませんでした。
DENSOにも問い合わせましたが、いままでそんな事例は無いとのことで、 原因がはっきりしませんでした。

よくよく客先に伺ってみると、 去年の2016年にはOSがWindows7だったものをWindows10にアップされたとのことでした。
(マイクロソフトが無償でWindows10へのアップを推奨していたので、お客様もアップされた様です)

DENSOの「Active USB-COMポートドライバ」を確認すると、 最新バージョンが「2.1.0.0」でWindows10に対応となっていました。 去年の「2.0.1.8」からは既にWindows10対応だった様です。

客先のバージョンは「2.0.1.5」でWindows8.1までの対応だったので、 早速、バージョン「2.1.0.0」のものを 再インストールしてもらい、通信が出来る様になりました。

Windows8.1までのUSB-COMドライバで、 OSがWindows10にアップしても動いていたことも不思議なのですが、 途中までは何とか動いていたが、ついに限界が来たんでしょうか?
とにかく、ドライバのバージョンアップで事無き得て良かったというところでしょうか。 USB-COMドライバが以前のドライバのままで、 人知れずWindows10にOSがアップされていてハンディへの通信が出来なくなった場合には、 ドライバのアップをお勧めします。

■DENSO
Active-USB-COMポートドライバ


転職を本気で考えている方向けのプログラミングスクール!【WebCampPRO】


■関連記事
BHT-BASIC:DENSOのハンディターミナルの開発言語のBHT-BASIC4.0を使ってみた
BHT-BASIC4.0:変数宣言の書き方(BHT-1300)
BHT-BASIC4.0:変数宣言の書き方その2(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数について(BHT-1300)
BHT-BASIC4.0:演算子について(BHT-1300)
BHT-BASIC4.0:画面への表示について(BHT-1300)
BHT-BASIC4.0:キー入力について(BHT-1300)
BHT-BASIC4.0:数値用キー入力関数(ユーザ定義関数)について(BHT-1300)
BHT-BASIC4.0:ユーザ定義関数の値渡し・参照渡しについて(BHT-1300)
BHT-BASIC4.0:文字列を扱うユーザ定義関数について
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその2
BHT-BASIC4.0:文字列を扱うユーザ定義関数についてその3
BHT-BASIC4.0:TeraTermを使ってDENSOのハンディターミナルにファイル(プログラム)転送を行う方法
BHT-BASIC4.0:I/OポートとWAIT、さらにTIMERについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについて(BHT-1300)
BHT-BASIC4.0:データファイルの取り扱いについてその2(書込み・読込みの実用的な関数)
BHT-BASIC4.0:データファイルの検索について(SEARCH関数)
BHT-BASIC4.0:ユーザ関数の引数の仮変数に対する代入の注意点
BHT-BASIC4.0:データファイルの削除等について(KILL、CLFILEのラッパ関数)
BHT-BASIC4.0:ファイルの存在確認関数を作ってみました
BHT-BASIC4.0:拡張関数のバイナリサーチ処理関数(BSEARCH.FN3)の使い方
BHT-BASIC4.0:拡張関数のサーチ処理関数(SEARCH.FN3)の使い方
BHT-BASIC4.0:簡単なメニュー表示・選択を行うユーザ関数について
BHT-BASIC4.0:ファイル伝送におけるXFILE命令の使い方
BHT-BASIC4.0:バーコードの読込み(バーコードスキャン)について
BHT-BASIC4.0:Bluetoothデバイスアドレス取得等について
VB.NET:ハンディターミナル(BHT-1300等)とのデータファイルの送受信について


楽天市場


デル株式会社