¿Hay una manera elegante de enviar los resultados de la consulta directamente a una impresora física?


14

Tengo esta extraña solicitud de programar un informe e imprimirlo en una impresora .

El informe en sí es bastante simple y cabe en una sola página. Puedo imprimirlo en un txt y eso estará bien (aunque estoy abierto a sugerencias sobre un mejor producto).

Aquí está el código. Funciona. Pero no me gusta Específicamente, me gustaría eliminar los @bcp y @SQL anidados.

Pregunta: ¿Hay alguna forma más elegante de hacer esto?

declare @filepath varchar(255),
@filename varchar(255),
@filetype varchar(255),
@sql nvarchar(max),
@coverpage_text nvarchar(max)

set @filepath = 'C:\users\jmay\documents\'
SET @filename = 'TestFile'
set @filetype = '.txt'

--output to txt
set @sql = N'declare @bcp varchar(4000)
set @bcp = ''bcp " select * from test_data " queryout ' 
+ @filepath +  @filename + @filetype + ' -t " - " -c -T -d DBA''
print @bcp

EXECUTE master.dbo.xp_cmdshell @BCP'

print @sql
 exec sp_executesql @sql

--print data
 set @sql = N'declare @bcp varchar(4000)
set @bcp = ''START /MIN NOTEPAD /P ' + @filepath +  @filename +  @filetype + '''
print @bcp

EXECUTE master.dbo.xp_cmdshell @BCP'

print @sql
exec sp_executesql @sql

Respuestas:


36

Ejecute la consulta usando POWERSHELLy OUT-PRINTER

Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance .   | Out-Printer

El cmdlet Out-Printer envía la salida a la impresora predeterminada o a una impresora alternativa, si se especifica una.


44
Funcionó como magia, el mismo código puede acortarse a: Invoke-Sqlcmd -Query "SELECT * from dba..test_data;" El | Out-Printer Lo programé como un trabajo y bam. ¡gracias por tu ayuda!
James
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.