Jump to content
Fivewin Brasil

Ajuda com logica para impressao de Etiquetas


jef2_tim

Recommended Posts

Ola amigos

Estou com um problema de logica para criar a rotina para emitir etiquetas. O sistema processa a quantidade em estoque atual e sugere ao usuario em um campo a quantidade de etiquetas a ser emitida de cada produto baseado no estoque atual. Ate ae tudo bem.

Quando mando emitir etiqueta de 1 coluna vai normal, se eu pedir para emitir 3 ele vai imprimir apenas 3 etiquetas e assim por diante.

O problema esta em formularios com 2 ou mais colunas. Imagine cada etiqueta tenha 3 linhas de impressao, e tenho um form de 2 colunas, entao eu pesso 3 etiquetas. Ele vai ter q imprimir as duas primeiras linhas .. depois as duas segundas linhas e as 2 ultimas linhas... entao ele pula para a proxima etiqueta. Ae q esta o problema, pq ele imprime entao as duas colunas de etiquetas novamente e nao uma so.

Nao estou conseguindo a logica para montar isso, ele emitir exatamente a quantidade de etiquetas q o usuario solicitou!

Nao estou usando label, estou usando tdos normalmente...

valeu amigos

Um Xharbraço.

Uso Fwh 9.4 (xharbour 1.2.1) + xDev Para Compilar

Impactus Automação Comercial

jef2_timber@hotmail.com

(91)-3238-7012

Belem-PA

Link to comment
Share on other sites

Ola amigos

Estou com um problema de logica para criar a rotina para emitir etiquetas. O sistema processa a quantidade em estoque atual e sugere ao usuario em um campo a quantidade de etiquetas a ser emitida de cada produto baseado no estoque atual. Ate ae tudo bem.

Quando mando emitir etiqueta de 1 coluna vai normal, se eu pedir para emitir 3 ele vai imprimir apenas 3 etiquetas e assim por diante.

O problema esta em formularios com 2 ou mais colunas. Imagine cada etiqueta tenha 3 linhas de impressao, e tenho um form de 2 colunas, entao eu pesso 3 etiquetas. Ele vai ter q imprimir as duas primeiras linhas .. depois as duas segundas linhas e as 2 ultimas linhas... entao ele pula para a proxima etiqueta. Ae q esta o problema, pq ele imprime entao as duas colunas de etiquetas novamente e nao uma so.

Nao estou conseguindo a logica para montar isso, ele emitir exatamente a quantidade de etiquetas q o usuario solicitou!

Nao estou usando label, estou usando tdos normalmente...

valeu amigos

Um Xharbraço.

Uso Fwh 9.4 (xharbour 1.2.1) + xDev Para Compilar

Impactus Automação Comercial

jef2_timber@hotmail.com

(91)-3238-7012

Belem-PA

Link to comment
Share on other sites

Suponho que seja impressão matricial, pois grafica não teria este problema.

O que sugiro:

Tenha uma array com as linhas a serem impressas

No seu laço, você verifica se a etiqueta atual é menor que o número de colunas. Se for, você adiciona o que será impresso na array e LOOP.

Quando a etiqueta a ser impressa for na ultima coluna, você faz o mesmo processo, adiciona as linhas na array com a diferença que agora você manda imprimir e zera a array.

E vai fazendo isso. Ao sair do laço, verifica se a array não está vazia e caso não esteja, imprime o restante.

Ex.:


nLinha:= 1

aLinhas:= ARRAY(10)

nColunas:= 3

nEtiquetas:= 10

FOR nEtq = 1 TO nEtiquetas

IF nEtq % nColunas == 0 // Está na ultima coluna

aLinhas[1]+= REPL("-",25)

aLinhas[2]+= PADR("Nome",25)

aLinhas[3]+= PADR(NomeCli,25)

aLinhas[4]+= REPL("-",25)

@ nLinha++,00 SAY aLinhas[1]

@ nLinha++,00 SAY aLinhas[2]

@ nLinha++,00 SAY aLinhas[3]

@ nLinha++,00 SAY aLinhas[4]

aLinhas:= ARRAY(10)

ELSE

aLinhas[1]+= REPL("-",25)

aLinhas[2]+= PADR("Nome",25)

aLinhas[3]+= PADR(NomeCli,25)

aLinhas[4]+= REPL("-",25)

ENDIF

NEXT

IF LEN(aLinhas) > 0

@ nLinha++,00 SAY aLinhas[1]

@ nLinha++,00 SAY aLinhas[2]

@ nLinha++,00 SAY aLinhas[3]

@ nLinha++,00 SAY aLinhas[4]

ENDIF

id=code>id=code>

É por aí...

Luis Fernando Jr. (Luisão)

"The important thing in life is to believe that while you are alive, it's never to late"

FWH8.1 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY

Link to comment
Share on other sites

Primeiro você vai "concatenar" todas as etiquetas, ao invés de 6 cópias da etiqueta A, 3 da B e 1 da C você vai ter 10 etiquetas "genéricas" para serem impressas.

Depois você vai distribuir entre o número de colunas que você precisa, exemplo:

Formulario de 2 colunas com o exemplo acima usaria 5 linhas ( 10 etq / 2 col = 5 lin )

No seu caso, como usa TDOS você vai fazer um loop para imprimir em cada posição e vai incrementando um contador e obtendo a proxima etiqueta.

MSN: samirabreu@hotmail.comid=black>

Skype: Samirid=red>Abreuid=black>

xHarbour 1.1.0 + FwXh 8.02

Link to comment
Share on other sites

NO fivewin tem alguma forma de Visualizar o conteudo da array, tipo um browse() da vida so que para array, quero ver oq ela esta montando la dentro sem ter q imprimir.

valeu amigos

Um Xharbraço.

Uso Fwh 9.4 (xharbour 1.2.1) + xDev Para Compilar

Impactus Automação Comercial

jef2_timber@hotmail.com

(91)-3238-7012

Belem-PA

Link to comment
Share on other sites

citação:

NO fivewin tem alguma forma de Visualizar o conteudo da array, tipo um browse() da vida so que para array, quero ver oq ela esta montando la dentro sem ter q imprimir.

valeu amigos

Um Xharbraço.

Uso Fwh 9.4 (xharbour 1.2.1) + xDev Para Compilar

Impactus Automação Comercial

jef2_timber@hotmail.com

(91)-3238-7012

Belem-PA


id=quote>id=quote>


****************************************************************************

Procedure ApresentaMatriz(paMatriz,nZero,lTxt,cTxt,cTitulo)

****************************************************************************

*

* Apresentar uma matriz independente do numero de dimensoes

* Parametros: paMatriz

* Retorno:

*

* Autor: Samir

* 14/11/2008 - 17:05:55

*

****************************************************************************

local cMsg := "", nLen := 0, nDimensao := 0, m := 0, d := 0, lIgnoraZero := .F.

Default nZero := 3, lTxt := !Empty(cTxt), cTxt := "C:\matriz.txt"

If nZero = 0

lIgnoraZero := .T.

end

nLen := Len(paMatriz)

If ValType(paMatriz) == "A"

If Len(paMatriz) > 0

if ValType(paMatriz[1]) == "A"

nDimensao := Len(paMatriz[1])

else

nDimensao := 0

end

else

Msg("Matriz vazia")

Return

end

else

Msg("Parâmetro informado não é uma matriz")

Return

end

For m := 1 to nLen

If lIgnoraZero

cMsg += ""

else

cMsg += StrZero(m,nZero)+" - {"

end

if nDimensao != 0

For d := 1 to nDimensao

cMsg += DadosVar(paMatriz[m,d])

if d != nDimensao

cMsg += ", "

end

end

else

cMsg += DadosVar(paMatriz[m])

end

If lIgnoraZero

cMsg += ";"

else

cMsg += "};"

end

end

If !lTxt

Msg(cMsg,cTitulo)

else

If File(cTxt)

fErase(cTxt)

end

CreateTxt(cTxt,StrTran(cMsg,";",CRLF))

end

Return nil

/*------------------------------------------------------------------------*/

****************************************************************************

function DadosVar(xVar,lCompleto,cTitulo)

****************************************************************************

*

* Apresentar os dados de uma variável

* Parametros: xVar

* Retorno: Nenhum

*

* Autor: Samir

* 30/10/2008 - 10:32:55

*

****************************************************************************

local Result := "",nLen := 0, cTipo := "",cValor := ""

Default lCompleto := .F.

cTipo := ValType(xVar)

if cTipo = "C" .or. cTipo = "A"

nLen := Len(xVar)

else

nLen := 0

end

if cTipo == "C"

cValor := xVar

elseif cTipo == "N"

//cValor := Str(xVar,,,.T.)

cValor := StrTrim(xVar)

elseif cTipo == "D"

cValor := DtoC(xVar)

elseif cTipo == "A"

ApresentaMatriz(xVar)

Return "Matriz"

elseif cTipo == "O"

cValor := "Objeto:" + xVar:ClassName()

elseif cTipo == "U"

cValor := "Nulo"

elseif cTipo == "L"

cValor := if(xVar,"True","False")

else

cValor := xVar

end

if lCompleto

//Result += "Tamanho: "+ Str(nLen,,,.T.) +";"

Result += "Tamanho: "+ StrTrim(nLen) +";"

Result += "Tipo: " + cTipo +";"

Result += "Valor: " + cValor +";"

Msg(Result,cTitulo)

Return cValor

end

Return cValor

/*------------------------------------------------------------------------*/

Exemplo

aMatriz := {1,2,"3","QUATRO",5}

ApresentaMatriz( aMatriz )

id=code>id=code>

MSN: samirabreu@hotmail.comid=black>

Skype: Samirid=red>Abreuid=black>

xHarbour 1.1.0 + FwXh 8.02

Link to comment
Share on other sites

citação:

StrTrim(xVar)

oq 'e esta funcao?

Um Xharbraço.

Uso Fwh 9.4 (xharbour 1.2.1) + xDev Para Compilar

Impactus Automação Comercial

jef2_timber@hotmail.com

(91)-3238-7012

Belem-PA


id=quote>id=quote>

Mistura de Str() e AllTrim(), porque a função Str() gera espaços em branco.

MSN: samirabreu@hotmail.comid=black>

Skype: Samirid=red>Abreuid=black>

xHarbour 1.1.0 + FwXh 8.02

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...