クリスタルレポートユーザー用紙定義


キキ  2003-01-16 23:49:18  No: 76809

クリスタルレポートにて15×5インチの用紙サイズの専用伝票を印刷したいと考えております。
WIN98でPGを作成し、エンドユーザーはwin2000の場合もあるとのことで、win2000のPCに15×5インチ
の用紙定義を作成し、exeを実行し、印刷したところ用紙の設定が反映されていませんでした。
プリンタドライバのプリンタ名、ポートアドレスは同じにしてあります。
エンドユーザの環境はクリスタルレポートはインストールされていません。

ちなみに他のwin98PCでは用紙の設定は反映されています。

win98で作成したPGをwin2000でレポートの用紙設定を直し、exeを作り直したものを
他のWin2000で実行すると用紙の設定が反映されていませんでした。

ごちゃごちゃとした説明になってしまいましたが、用紙のユーザー設定をしたPGは作成した
PCでしか反映されないのでしょうか?規定である15×11インチの用紙は設定がきちんと反映されています。
なにか特別なDLLが必要なのでしょうか?

わかる方がいらっしゃいましたら、よろしくお願いします。


かげうら  2003-01-17 03:20:18  No: 76810

ユーザ用紙サイズは、なぜか環境によって番号が違います。

でクリスタルレポート7では、

Private Declare Function PESetNthParameterField Lib "crpe32.dll" (ByVal printJob As Integer, ByVal parameterN As Integer, parameterInfo As PEParameterFieldInfo) As Integer
Private Declare Function PEGetNthParameterField Lib "crpe32.dll" (ByVal printJob As Integer, ByVal parameterN As Integer, parameterInfo As PEParameterFieldInfo) As Integer
Private Declare Function PEOpenPrintJob Lib "crpe32.dll" (ByVal RptName As String) As Integer
Private Declare Function crPEGetSelectedPrinter Lib "crwrap32.dll" Alias "crvbPEGetSelectedPrinter" (ByVal printJob As Integer, ByRef driverName As String, ByRef printerName As String, ByRef portName As String, crmode As crDEVMODE) As Integer
Private Declare Function crPESelectPrinter Lib "crwrap32.dll" (ByVal printJob As Integer, ByVal driverName As String, ByVal printerName As String, ByVal portName As String, crmode As crDEVMODE) As Integer
Private Declare Function PEStartPrintJob Lib "crpe32.dll" (ByVal printJob As Integer, ByVal WaitOrNot As Integer) As Integer
Private Declare Function PEClosePrintJob Lib "crpe32.dll" (ByVal printJob As Integer) As Integer

↑などを使えば、出せると思います。


かげうら  2003-01-17 05:28:30  No: 76811

crPESelectPrinterのdmPaperSize値が、不明だからできないですね。
私が作った時は印刷するすべてのPCが手元にあったのでできました。

上記書き込みは忘れてください。
ごめんなさい、、、、、


キキ  2003-01-17 19:47:04  No: 76812

かげうらさん情報有難うございます。
「crPESelectPrinterのdmPaperSize値が、不明だからできないですね。」
とありますが、全てのPCのユーザー定義の名称とサイズを同じにしておけば
大丈夫ではないでしょうか?


かげうら  2003-01-17 20:27:39  No: 76813

ちょっと説明が難しいのですが、

ヘルプのPaperSizuプロパティで
Valueの値みたいなものなんですけど、
A3なら8
A4なら9
の数値を拾ってこないと駄目なんですよ。
8とか9を用紙番号(正しい言い??)と呼ぶびますね。

その用紙番号が同じ15×5という用紙でも環境によって番号が違ってくるのです。ユーザー定義のため用紙番号が変わります。
偶然にもおいらが作った中に15×5の用紙があったのでその番号をあげると、
120
123
132
と3台のPCで用紙番号はバラバラになるのです。

dmPaperSizeにこの用紙番号を入れなくてはちゃんと印刷されないので。。。。。
手元にPCがないと無理かなぁ〜って思ったわけです。

なので、この用紙番号と用紙名称の関係をAPIとかで、拾ってこれれば、可能になります。。。


かげうら  2003-01-17 20:34:08  No: 76814

papersizeのヘルプはクリスタルレポートじゃなくてVB(MSDN)の方です。。。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加