-2

グーグルで数時間の調査をした後、私はもっと混乱していると思います...私はしたい

a)ストアドプロシージャを介してSQLサーバーからテキストファイル(.txtまたは.doc .pdf)を生成します。このファイルには、単純なレイアウト形式のテーブルデータが含まれています。

その後

b)このファイルをネットワークプリンターに印刷します。

上記のすべてをコードで実行できますか?何かアイデアはありますか?

よろしくお願いします!

4

2 に答える 2

0

EXEC @rc = master.dbo.xp_cmdshellを使用し、exeを呼び出してファイルを印刷できます。

于 2013-01-07T12:27:24.470 に答える
0

適切な解決策を見つけるのに苦労したので、実装を共有することにしました

a)bcpユーティリティを使用して、テーブルデータを単純な.txtファイルに抽出します。ストアドプロシージャ内に、次のようなものを記述します

EXEC xp_cmdshell 'bcp "SELECT * FROM [yourDatabase]..[yourTable]" queryout "C:\Folder\archive.txt" -T -w  -t ,' 

フィールドターミネータとして「、」を使用しました。bcpパラメータの詳細については、http://msdn.microsoft.com/en-us/library/ms162802.aspxを参照してください。

b)生データがあり、それを印刷したいのですが、新しいファイルが作成されたかどうかをチェックするだけのサービスを実装しました。これは素晴らしいチュートリアルですhttp://midnightcubicle.wordpress.com/2011/04/ 25 / creating-windows-service-in-c /

このサービスは、ジョブを実行する.exeファイルを実行する新しいプロセスを呼び出します。

注意すべき点:

-通常、サービスはローカルで実行されます。印刷する場合は、サービスを「ユーザーモード」で実行します。services.mscを介してサービスのプロパティを確認します。

-bcpから抽出されたデータは「生の」形式であるため、テキストを適切なレイアウトにしたい場合は、StreamReaderでコンテンツを読み取り、そのデータをメモリに保存する必要があります(たとえば、リスト内のオブジェクト-すべての行がオブジェクトです-すべてプロパティをフィールド化してから、string.Formatおよびその他のフォーマット手法を使用します。

-Windowsコンソールとプリンターでまったく異なる結果が表示される場合があります。これは、コンソールが固定幅フォントを使用しているのに、プリンターが使用していないためです(少なくともデフォルトでは)。そのため、プリンタのスペースが占めるスペースは少なくなり、文字は実際の幅に基づいてスペースを占めるスペースが増減します。Lucidaコンソールまたは別の固定幅フォントの使用を検討してください。

于 2013-01-10T14:35:32.900 に答える