グーグルで数時間の調査をした後、私はもっと混乱していると思います...私はしたい
a)ストアドプロシージャを介してSQLサーバーからテキストファイル(.txtまたは.doc .pdf)を生成します。このファイルには、単純なレイアウト形式のテーブルデータが含まれています。
その後
b)このファイルをネットワークプリンターに印刷します。
上記のすべてをコードで実行できますか?何かアイデアはありますか?
よろしくお願いします!
グーグルで数時間の調査をした後、私はもっと混乱していると思います...私はしたい
a)ストアドプロシージャを介してSQLサーバーからテキストファイル(.txtまたは.doc .pdf)を生成します。このファイルには、単純なレイアウト形式のテーブルデータが含まれています。
その後
b)このファイルをネットワークプリンターに印刷します。
上記のすべてをコードで実行できますか?何かアイデアはありますか?
よろしくお願いします!
EXEC @rc = master.dbo.xp_cmdshellを使用し、exeを呼び出してファイルを印刷できます。
適切な解決策を見つけるのに苦労したので、実装を共有することにしました
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コンソールまたは別の固定幅フォントの使用を検討してください。