' ^FS ^FO30,280,0 ^AQN,20,10 ^FD PEDIDO DE VENDA ^FS ^FO40,290,0 ^AVN,120,100 ^FR ^FD ' + rtrim(@pedido) + ' ^FS ^FO265,280,0 ^AQN,20,10 ^FD VOLUME ^FS ^FO290,290,0 ^AVN,120,100 ^FR ^FD ' + rtrim(@volume) + ' ^FS ^FO435,280,0 ^AQN,20,10 ^FD RESPONSAVEL ^FS ^FO435,310,0 ^ASN,20,10 ^FD ' + rtrim(@responsavel) + ' ^FS ^FO435,360,0 ^AQN,20,10 ^FD DATA ^FS ^FO435,385,0 ^ASN,30,20 ^FD ' + rtrim(@data) + ' ^FS ^FO435,435,0 ^AQN,20,10 ^FD QUANTIDADE ^FS ^FO435,460,0 ^ASN,30,20 ^FD ' + rtrim(@quantidade) + ' ^FS ^FO30,435,0 ^AQN,20,10 ^FD NOTA FISCAL E VISTO ^FS ^FO690,97 ^BY2 ^BCR,100,Y,N,N ^FD ' + rtrim(@cdb) + ' ^FS ^XZ' -- Diretorio para gravar o arquivo temporario set @diretorio = 'D:\Arkab\impressoes\' -- Definicao do nome do arquivo, coloca dia, mes, ano, -- hora, minuto, segundo e ID do volume. select @arquivo = 'tmp' + right('00' + rtrim(datepart(day, getdate())),2) + right('00' + rtrim(datepart(month, getdate())),2) + rtrim(datepart(year, getdate())) + right('00' + rtrim(datepart(hour, getdate())),2) + right('00' + rtrim(datepart(minute, getdate())),2) + right('00' + rtrim(datepart(second, getdate())),2) + '_vol_' + rtrim(@id_volume) + '.txt' -- Gravo o arquivo exec spArkabGravaArquivo @texto, @diretorio, @arquivo -- Definicao da origem e destino do arquivo salvo. select @origem = rtrim(@diretorio) + rtrim(@arquivo) -- Algo como '\\PC-CONF01\ZEBRA-SEP1' select @destino = caminho_de_rede from ArkabImpressora where cd_impressora = @cd_impressora -- Envio o arquivo texto pela rede diretamente na impressora termica. exec spArkabCopiaArquivo @origem, @destino Este procedimento coleta todos os dados, concatena em um varchar(max), e passa esta string para a segunda etapa, que e gravar este texto em um arquivo em uma pasta especifica no servidor. Exemplo do texto gerado pelo procedimento: ^XA^MD10^LT0^JMA^FS^MUd,200,200^LH6,0^FO20,7^GB780,625,5,,0^FS^FO20,70^GB645,120,5,,0^FS^FO20,7^GB780,70,70,,0^FS^FO660,70^GB140,562,5,,0^FS^FO20,275^GB235,160,5,,0^FS^FO30,305^GB215,120,120,,0^FS^FO250,275^GB180,160,5,,0^FS^FO260,305^GB160,120,120,,0^FS^FO425,275^GB240,85,5,,0^FS^FO425,355^GB240,80,5,,0^FS^FO425,430^GB240,75,5,,0^FS^FO425,500^GB240,132,5,,0^FS^FO90,20,0^ATN,30,20^FR^FDDECORLUX MATERIAL ELETRICO LTDA^FS^FO30,80,0^AQN,20,10^FDCLIENTE^FS^FO30,103,0^ATN,30,20^FDTORNADO INDUSTRIA E PECAS LTD^FS^FO30,138,0^ATN,30,20^FDA^FS^FO30,138,0^ASN,30,20^FD^FS^FO30,200,0^AQN,20,10^FDTRANSPORTADORA^FS^FO30,223,0^ASN,30,20^FDNATALIN DA SILVA RAMOS^FS^FO30,280,0^AQN,20,10^FDPEDIDO DE VENDA^FS^FO40,290,0^AVN,120,100^FR^FD056783^FS^FO265,280,0^AQN,20,10^FDVOLUME^FS^FO290,290,0^AVN,120,100^FR^FD009^FS^FO435,280,0^AQN,20,10^FDRESPONSAVEL^FS^FO435,310,0^ASN,20,10^FDAUTOMATICO^FS ^FO435,360,0^AQN,20,10^FDDATA^FS ^FO435,385,0^ASN,30,20^FD26/06/2011 21h^FS ^FO435,435,0^AQN,20,10^FDQUANTIDADE^FS ^FO435,460,0^ASN,30,20^FD1 PC^FS ^FO30,435,0^AQN,20,10^FDNOTA FISCAL E VISTO^FS ^FO690,97^BY2^BCR,100,Y,N,N^FD00020567830099699335^FS^XZ Veja que depois defino qual o destino final do arquivo (no caso, uma impressora zebra na rede). No caso do sistema Arkab, a definicao da impressora e dinamica, no momento da abertura da conferencia o usuario seleciona qual ira utilizar. Ao imprimir a etiqueta, o sistema passa para o procedimento como parametro (@cd_impressora) qual sera a impressora que devera enviar o comando. Uma simples tabela permite referenciar o codigo desta impressora ao seu caminho de rede. E logo no final, temos o procedimento spArkabCopiaArquivo, que faz a copia do arquivo do servidor para a impressora utilizando a rede. Vamos entao falar de cada um deles agora. 2. spArkabGravaArquivo - Este procedimento grava o texto desejado em um arquivo em disco: Code Snippet create proc spArkabGravaArquivo @texto varchar(max), --8000 in SQL Server 2000 @diretorio varchar(255), @arquivo varchar(100) as /* Autor: Fabiano Cores Data : 06/2011 Objetivo: Permite gravar arquivos de texto em disco diretamente atraves do T-SQL. Observacao importante: pode haver a necessidade de ativar a opcao 'Ole Automation Procedures' no SQL Server atraves do comando sp_reconfigure. Para isto, utilize o script abaixo: -- Mostrar opcoes avancadas. exec sp_configure 'show advanced options', 1 GO -- Ativar a opcao anterior reconfigure GO -- Ativa a automacao OLE exec sp_configure 'Ole Automation Procedures', 1 GO -- Reconfigura para aceitar a modificacao reconfigure GO */ declare @objFileSystem int declare @objTextStream int declare @hr int declare @fileAndPath varchar(80) exec @hr