|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
ETIQUETA COM CÓDIGO DE BARRAS |
|
Versão: |
12.1.2210 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
PAULO0210
em 28/08/2024, 18:26 h
Local: MG Registro: 18/09/2023 Postagens: 34 |
Boa tarde pessoal,
Estou desenvolvendo um fonte pra imprimir etiqueta de códigos de barras, mas recebo um log
(THREAD ERROR ([16840], Paulo, NOTEBOOK-PAULO) 28/08/2024 18:21:05
argument #0 error, expected C->L, function upper on CBBAR:CBCODE128(MSBARHP.PRW) 22/07/2020 13:27:00 line : 247)
Abaixo o fonte:
#INCLUDE "RPTDEF.CH"
#INCLUDE "FWPrintSetup.ch"
#INCLUDE "protheus.ch"
#Include ‘TopConn.ch‘
User Function Etiqueta()
Local lFinal := .T.
If ValidPerg()
MsAguarde({|| ImpEtiq() },"Impressão de etiqueta","Aguarde...")
EndIf
Return
Static Function ImpEtiq()
Local cQuery := ""
Local cProdDe := MV_PAR01
Local cProdAte := MV_PAR02
Local nQuant := MV_PAR03
Local cImpress := Alltrim(MV_PAR04) //pego o nome da impressora
Local cLogo := "\system\logo.jpg"
Local oFont16 := TFont():New(‘Arial‘,16,16,,.F.,,,,.T.,.F.,.F.)
Local oFont16N := TFont():New(‘Arial‘,16,16,,.T.,,,,.T.,.F.,.F.)
Local QRYTMP := ""
Local lAdjustToLegacy := .F.
Local lDisableSetup := .T.
Local nLin := 0
Local nCol := 0
Local nLinC := 0
Local nColC := 0
Local nWidth := 0
Local nHeigth := 0
Local lBanner := .T. //Se imprime a linha com o código embaixo da barra. Default .T.
Local nPFWidth := 0
Local nPFHeigth := 0
Local lCmtr2Pix := .T. //Utiliza o método Cmtr2Pix() do objeto Printer.Default .T.
MsProcTxt("Identificando a impressora...")
Private oPrinter := FWMSPrinter():New("produto"+Alltrim(__cUserID)+".etq",IMP_SPOOL,lAdjustToLegacy,"/spool/",lDisableSetup,,,Alltrim(cImpress) /*parametro que recebe a impressora*/)
//Para saber mais sobre o componente FWMSPrinter acesse http://tdn.totvs.com/display/public/mp/FWMsPrinter
cQuery := "SELECT B1_COD ‘CODIGO‘, B1_DESC ‘DESC‘, B1_COD ‘CODBAR‘ FROM SB1000 WHERE D_E_L_E_T_=‘‘ AND B1_MSBLQL<>‘1‘"
TcQuery cQuery New Alias "QRYTMP"
QRYTMP->(DbGoTop())
oPrinter:SetMargin(001,001,001,001)
// While QRYTMP->(!Eof())
// For nR := 1 to nQuant
// nLin := 10
// nCol := 22
// MsProcTxt("Imprimindo " + alltrim(QRYTMP->CODIGO) + " - " + alltrim(QRYTMP->) + "...")
// oPrinter:StartPage()
// oPrinter:SayBitmap(nLin,nCol,cLogo,100,030)
// nLin+= 45
// oPrinter:Say(nLin,nCol,"Produto",oFont16)
// nLinC := 4.95 //Linha que será impresso o Código de Barra
// nColC := 1.6 //Coluna que será impresso o Código de Barra
// nWidth := 0.0164 //Numero do Tamanho da barra. Default 0.025 limite de largura da etiqueta é 0.0164
// nHeigth := 0.6 //Numero da Altura da barra. Default 1.5 --- limite de altura é 0.3
// lBanner := .T. //Se imprime a linha com o código embaixo da barra. Default .T.
// nPFWidth := 0.8 //Número do índice de ajuste da largura da fonte. Default 1
// nPFHeigth := 0.9 //Número do índice de ajuste da altura da fonte. Default 1
// lCmtr2Pix := .T. //Utiliza o método Cmtr2Pix() do objeto Printer.Default .T.
// oPrinter:FWMSBAR("CODE128" , nLinC , nColC, alltrim(QRYTMP->CODBAR), oPrinter,/*lCheck*/,/*Color*/,/*lHorz*/, nWidth, nHeigth,.F.,/*cFont*/,/*cMode*/,.F./*lPrint*/,nPFWidth,nPFHeigth,lCmtr2Pix)
// nLin+= 40
// oPrinter:Say(nLin,nCol,alltrim(QRYTMP->CODIGO) + " - " + alltrim(QRYTMP->DESC),oFont16)
// oPrinter:EndPage()
// Next
// QRYTMP->(DbSkip())
// EndDo
// oPrinter:Print()
// QRYTMP->(DbCloseArea())
While QRYTMP->(!Eof())
For nR := 1 to nQuant
nLin := 10
nCol := 22
MsProcTxt("Imprimindo " + ALLTRIM(QRYTMP->CODIGO) + " - " + ALLTRIM(QRYTMP->DESC) + "...")
oPrinter:StartPage()
oPrinter:SayBitmap(nLin, nCol, cLogo, 100, 030)
nLin += 45
oPrinter:Say(nLin, nCol, "Produto", oFont16)
nLinC := 4.95 // Linha que será impressa o Código de Barra
nColC := 1.6 // Coluna que será impressa o Código de Barra
nWidth := 0.0164 // Número do Tamanho da barra. Default 0.025 limite de largura da etiqueta é 0.0164
nHeigth := 0.6 // Número da Altura da barra. Default 1.5 --- limite de altura é 0.3
lBanner := .T. // Se imprime a linha com o código embaixo da barra. Default .T.
nPFWidth := 0.8 // Número do índice de ajuste da largura da fonte. Default 1
nPFHeigth := 0.9 // Número do índice de ajuste da altura da fonte. Default 1
lCmtr2Pix := .T. // Utiliza o método Cmtr2Pix() do objeto Printer.Default .T.
oPrinter:FWMSBAR("CODE128",nLinC,nColC,ALLTRIM(QRYTMP->CODBAR),oPrinter,.F.,.F.,.F.,nWidth,nHeigth,.F.,.F.,.F.,nPFWidth,nPFHeigth,lCmtr2Pix)
nLin += 40
oPrinter:Say(nLin, nCol, ALLTRIM(QRYTMP->CODIGO) + " - " + ALLTRIM(QRYTMP->DESC), oFont16)
oPrinter:EndPage()
Next
QRYTMP->(DbSkip())
EndDo
oPrinter:Print()
QRYTMP->(DbCloseArea())
Return
/*Montagem da tela de perguntas*/
Static Function ValidPerg()
Local aRet := {}
Local aParamBox := {}
Local lRet := .F.
Local aOpcoes := {}
Local cProdDe := ""
Local cProdAte := ""
Local cLocal := SPACE(99)
If EMPTY(GETMV("ZZ_IMPRESS")) //se o parametro estiver vazio, ja o defino com a impressora Microsoft Print to PDF
aOpcoes := {"Microsoft Print to PDF"}
Else
aOpcoes := SEPARA(GETMV("ZZ_IMPRESS"),";")
Endif
cProdDe := SPACE(TamSX3("B1_COD")[1])
cProdAte:= REPLICATE("Z",TAMSX3("B1_COD")[1])
aAdd(aParamBox,{01,"Produto de" ,cProdDe ,"" ,"","SB1" ,"", 60,.F.}) // MV_PAR01
aAdd(aParamBox,{01,"Produto ate" ,cProdAte ,"" ,"","SB1" ,"", 60,.T.}) // MV_PAR02
aAdd(aParamBox,{01,"Quantidade Etiqueta" ,1 ,"@E 9999" ,"","" ,"", 60,.F.}) // MV_PAR03
aadd(aParamBox,{02,"Imprimir em" ,Space(50) ,aOpcoes ,100,".T.",.T.,".T."}) // MV_PAR04
If ParamBox(aParamBox," Etiqueta Produto",/*aRet*/,/*bOk*/,/*aButtons*/,.T.,,,,FUNNAME(),.T.,.T.)
If ValType(MV_PAR04) == "N" //Algumas vezes ocorre um erro de ao invés de selecionar o conteúdo, seleciona a ordem, então verifico se é numerico, se for, eu me posiciono na impressora desejada para pegar o seu nome
MV_PAR04 := aOpcoes[MV_PAR04]
EndIf
lRet := .T.
EndIf
Return lRet
|
|
|
Mensagem do
ROBERTOMEN
em 29/08/2024, 08:05 h
Local: PR Registro: 04/07/2017 Postagens: 546 |
Bom dia
Segue correção:
oPrinter:FWMSBAR("CODE128",nLinC,nColC,ALLTRIM(QRYTMP->CODBAR),oPrinter,.F.,.F.,.F.,nWidth,nHeigth, .F., NIL, NIL, .F.)
|
|
|
Mensagem do
PAULO0210
em 29/08/2024, 09:58 h
Local: MG Registro: 18/09/2023 Postagens: 34 |
Bom dia Roberto,
O erro em questão foi resolvido, mas a gora aparece outro rsrs.
THREAD ERROR ([49384], Paulo, NOTEBOOK-PAULO) 29/08/2024 09:54:42
argument #1 error, expected N->L, function NEW on CBBAR:FILLBAR(MSBARHP.PRW) 22/07/2020 13:27:00 line : 771 |
|
|
Mensagem do
ROBERTOMEN
em 12/09/2024, 20:09 h
Local: PR Registro: 04/07/2017 Postagens: 546 |
boa noite
oPrinter:FWMSBAR("CODE128",nLinC,nColC,ALLTRIM(QRYTMP->CODBAR),oPrinter,.F.,NIL,.F.,nWidth,nHeigth, .F., NIL, NIL, .F.)
Veja agora |
|
|
Mensagem do
PAULO0210
em 16/09/2024, 17:08 h
Local: MG Registro: 18/09/2023 Postagens: 34 |
Boa tarde!
Roberto, o erro foi corrigido, mas não estou conseguindo quebrar coluna e página para impressão em massa:
#INCLUDE "RPTDEF.CH"
#INCLUDE "FWPrintSetup.ch"
#INCLUDE "protheus.ch"
#Include ‘TopConn.ch‘
User Function Etiqueta()
Local lFinal := .T.
If ValidPerg()
MsAguarde({||ImpEtiq()},"Impressão de etiqueta","Aguarde...")
EndIf
Return
Static Function ImpEtiq()
Local cQuery := ""
Local cProdDe := MV_PAR01
Local cProdAte := MV_PAR02
Local nQuant := MV_PAR03
Local cImpress := Alltrim(MV_PAR04) //Pego o nome da impressora
Local cLogo := "\system\logo.jpg"
Local oFont16 := TFont():New(‘Arial‘,16,6,,.F.,,,,.T.,.F.,.F.)
Local oFont16N := TFont():New(‘Arial‘,16,16,,.T.,,,,.T.,.F.,.F.)
Local QRYTMP := ""
Local lAdjustToLegacy := .F.
Local lDisableSetup := .T.
Local nR := ""
Local nLin := 0
Local nCol := 0
Local nLinC := 0
Local nColC := 0
Local nWidth := 0
Local nHeigth := 0
Local lBanner := .F. //Se imprime a linha com o código embaixo da barra. Default .T.
Local nPFWidth := 0
Local nPFHeigth := 0
Local lCmtr2Pix := .F. //Utiliza o método Cmtr2Pix() do objeto Printer.Default .T.
MsProcTxt("Identificando a impressora...")
Private oPrinter := FWMSPrinter():New("produto"+Alltrim(__cUserID)+".etq",IMP_SPOOL,lAdjustToLegacy,"/spool/",lDisableSetup,,,Alltrim(cImpress) /*parametro que recebe a impressora*/)
//Para saber mais sobre o componente FWMSPrinter acesse http://tdn.totvs.com/display/public/mp/FWMsPrinter
cQuery := "SELECT B1_COD ‘CODIGO‘, B1_DESC ‘DESC‘, B1_COD ‘CODBAR‘ FROM SB1000 WHERE D_E_L_E_T_=‘‘ AND B1_COD >=‘"+MV_PAR01+"‘ AND B1_COD <=‘"+MV_PAR02+"‘ AND B1_MSBLQL<>‘1‘"
TcQuery cQuery New Alias "QRYTMP"
QRYTMP->(DbGoTop())
oPrinter:SetMargin(050,050,050,050)
While QRYTMP->(!Eof())
For nR := 1 To nQuant
MsProcTxt("Imprimindo " + ALLTRIM(QRYTMP->CODIGO) + " - " + ALLTRIM(QRYTMP->DESC) + "...")
oPrinter:SayBitmap(nLin, nCol, cLogo, 100, 030)
nLinC += 5 // Linha que será impressa o Código de Barra
nColC := 2 // Coluna que será impressa o Código de Barra
nWidth := 0.0164 // Número do Tamanho da barra. Default 0.025 limite de largura da etiqueta é 0.0164
nHeigth := 0.7 // Número da Altura da barra. Default 1.5 --- limite de altura é 0.3
lBanner := .T. // Se imprime a linha com o código embaixo da barra. Default .T.
nPFWidth := 1 // Número do índice de ajuste da largura da fonte. Default 1
nPFHeigth := 1 // Número do índice de ajuste da altura da fonte. Default 1
lCmtr2Pix := .T. // Utiliza o método Cmtr2Pix() do objeto Printer. Default .T.
oPrinter:FWMSBAR("CODE128",nLinC,nColC,ALLTRIM(QRYTMP->CODBAR),oPrinter,/*lCheck*/,/*Color*/,/*lHorz*/,nWidth,nHeigth,lBanner,/*cFont*/,/*cMode*/,.F./*lPrint*/,nPFWidth,nPFHeigth,lCmtr2Pix)
Next
QRYTMP->(DbSkip())
EndDo
oPrinter:EndPage()
oPrinter:Print()
QRYTMP->(DbCloseArea())
Return
/*Montagem da tela de perguntas*/
Static Function ValidPerg()
Local aRet := {}
Local aParamBox := {}
Local lRet := .F.
Local aOpcoes := {}
Local cProdDe := ""
Local cProdAte := ""
Local cLocal := SPACE(99)
If EMPTY(GETMV("ZZ_IMPRESS")) //se o parametro estiver vazio, ja o defino com a impressora Microsoft Print to PDF
aOpcoes := {"Microsoft Print to PDF"}
Else
aOpcoes := SEPARA(GETMV("ZZ_IMPRESS"),";")
Endif
cProdDe := SPACE(TamSX3("B1_COD")[1])
cProdAte:= REPLICATE("Z",TAMSX3("B1_COD")[1])
aAdd(aParamBox,{01,"Produto de" ,cProdDe ,"" ,"","SB1" ,"", 60,.F.}) // MV_PAR01
aAdd(aParamBox,{01,"Produto ate" ,cProdAte ,"" ,"","SB1" ,"", 60,.T.}) // MV_PAR02
aAdd(aParamBox,{01,"Quantidade Etiqueta" ,1 ,"@E 9999" ,"","" ,"", 60,.F.}) // MV_PAR03
aadd(aParamBox,{02,"Imprimir em" ,Space(50) ,aOpcoes ,100,".T.",.T.,".T."}) // MV_PAR04
If ParamBox(aParamBox," Etiqueta Produto",/*aRet*/,/*bOk*/,/*aButtons*/,.T.,,,,FUNNAME(),.T.,.T.)
If ValType(MV_PAR04) == "N" //Algumas vezes ocorre um erro de ao invés de selecionar o conteúdo, seleciona a ordem, então verifico se é numerico, se for, eu me posiciono na impressora desejada para pegar o seu nome
MV_PAR04 := aOpcoes[MV_PAR04]
EndIf
lRet := .T.
EndIf
Return lRet
|
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|