jef2_tim Posted January 27, 2010 Report Share Posted January 27, 2010 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 Quote Link to comment Share on other sites More sharing options...
jef2_tim Posted January 27, 2010 Author Report Share Posted January 27, 2010 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 Quote Link to comment Share on other sites More sharing options...
netsys Posted January 27, 2010 Report Share Posted January 27, 2010 Ola Jef Poderia ser assim: aLabel:=Array[3,2] // Onde 3=Linhas e 2=Colunas. A lógica fica simples: Leia 2 produtos (ou enquanto qtde do produto > 0) Preencha o Array (aLabel[1,1]:="tatata", aLabel[1,2]:="tototo",,,etc) Imprima o Array Leia +2, etc... Alberto S.P. Quote Link to comment Share on other sites More sharing options...
Luisão Posted January 27, 2010 Report Share Posted January 27, 2010 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 Quote Link to comment Share on other sites More sharing options...
sambomb Posted January 27, 2010 Report Share Posted January 27, 2010 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 Quote Link to comment Share on other sites More sharing options...
jef2_tim Posted January 27, 2010 Author Report Share Posted January 27, 2010 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 Quote Link to comment Share on other sites More sharing options...
Luisão Posted January 27, 2010 Report Share Posted January 27, 2010 Se você usa SQLLIB, tem a ToString Caso não use, não é muito dificil criar uma... 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 Quote Link to comment Share on other sites More sharing options...
sambomb Posted January 27, 2010 Report Share Posted January 27, 2010 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 Quote Link to comment Share on other sites More sharing options...
jef2_tim Posted January 27, 2010 Author Report Share Posted January 27, 2010 Valeu sambomb obrigado mesmo pela rotina, muito legal valeu 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 Quote Link to comment Share on other sites More sharing options...
jef2_tim Posted January 27, 2010 Author Report Share Posted January 27, 2010 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 Quote Link to comment Share on other sites More sharing options...
sambomb Posted January 28, 2010 Report Share Posted January 28, 2010 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.