Static Function fSButton2() Local cCodBar := "" Local cDesPro := "" Local nQtdImp := 0 Local nColImp := 0 Local nQtdCol := 0 Local nMaxCol := 1 // Número de Colunas da Etiqueta Local cPorta := "LPT1" //Local cPorta := "COM1:9600,N,8,1" If MsgYesNo("Confirma a impressão das etiquetas?") MSCBPRINTER("Zebra",cPorta,NIL,25,.F.,,,,,,.T.) MSCBCHKSTATUS(.T.) // Testa o status da impressora MSCBLoadGRF("SANPB.GRF") For nX := 1 To Len(oGetDados1:aCols) cBase := oGetDados1:aCols[nX][1] //Codigo Base do Ativo cCodBar := oGetDados1:aCols[nX][2] //Chapa do Ativo nQtdImp := oGetDados1:aCols[nX][3] //Quantidade de etiquetas a imprimir cDesPro := oGetDados1:aCols[nX][4] //Descrição do Ativo // cDesImp := Alltrim(cCodPro)+" - "+cDesPro cDesImp := cDesPro //Linha deletada (.T. = Sim, .F. = Nao) lLinDel := oGetDados1:aCols[nX][Len(oGetDados1:aHeader)+1] //Verifico se a linha está deletada, se o codigo de barras está preenchido e se a quantidade é maior que zero If !lLinDel .And. !Empty(cCodBar) .And. nQtdImp > 0 //MSCBBEGIN(1,6) For nI := 1 To nQtdImp //O comando MSCBBEGIN precisa ser dado para cada linha de etiquetas a ser impressa If nQtdCol == 0 MSCBBEGIN(1,6,25) Endif //Tratamento para voltar a impressão para primeira coluna de etiquetas If nColImp >= 70 nColImp := 0 Endif MSCBGrafic(nColImp+02, 03, "SANPB") MSCBSAY(nColImp+25,04,"PATRIMÔNIO","N","C","4") MSCBSAYBAR(nColImp+25,09,AllTrim(cCodBar),"N","MB07",10,,.F.,,,1,,.F.,.T.,,.T.) //codigo de barras MSCBSAY(nColImp+24,21,AllTrim(cCodBar),"N","E","4") nQtdCol += 1 //Verifico se é a terceira coluna ou último produto a ser impresso para dar o comando If nQtdCol == nMaxCol .Or. ((nI == nQtdImp) .And. (nX == nQtdLin)) nQtdCol := 0 //O comando MSCBEND precisa ser dado para cada linha, para que a impressora pule para as próximas etiquetas MSCBEND() Endif Next //MSCBEND() Endif Next MSCBCLOSEPRINTER() Endif Return