Página 1 de 1

prompt

Enviado: 12 Abr 2007 08:22
por ederxc
Fala moçada , é o seguinte tenho um prog de lançamento fiscal que no caso é de entrada de notas fiscais de compras , que serve para saber gastos da empresa , mensais geral e por setor tbm ;Enfim estou tendo umas duvidas na alteração de dados , pois na alteração estava usando o DBedit() mas ñ ta ficando legau o que eu queria fazer é o seguinte:

cada nota tem sua quantidade de itens:
então eu gostaria de fazer tipo de um relatório em tela listando os itens da nota e por meio de um PROMPT selecionar qual eu devo alterar !! Alguem tem
algma idéia de como fazer isso !

Enviado: 12 Abr 2007 08:40
por vailton
Seria algo tipo 2 dbEdit()s na tela? Exemplo: Um na parte de cima com os numeros das NFs e um na parte inferior contendo os itens da referida nota selecionada?!

É só pra entender oq vc tem em mente....

Enviado: 12 Abr 2007 08:48
por ederxc
seria tipo assim


mostrar na tela os itens ex:

1 rolamento
2 rolamento
3 broca
4 Oleo

e por meio de um prompt rolar entre esses itens selecinar um deles para fazer alteração.

Enviado: 12 Abr 2007 09:16
por sygecom
Vaiton, desculpa ai...lah vai eu me meter denovo...

Ederxc, tche no meu ver vc pode fazer isso com o TBROWSE...seria mais ou menos assim:

Código: Selecionar todos

*************
FUNC MONTAGEM
*************
DBCLOSEALL()

SET EXCLUSIVE OFF
SET CONFIRM Off
SET DELE ON
SET EPOCH TO 2000

Do while .t.
   sele 1
   USE DADOS\ENT ALIAS ENT SHARED new
   SET INDEX TO DADOS\ENT1

   xFORNECE=space(29)
   xNFISCAL=0
   @ 03,02 say "Boleto" get Xnfiscal pict "999999"  when DwnMsg( "Codigo Automatico ou Digite o Numero do Boleto para Continuar uma Pesagem" )
   @ 03,49 get xfornece pict "@!"   when DwnMsg( "Digite as Iniciais do Fornecedor ou Selecione" )
   READ

   CLEAR TYPEAHEAD

   @ 03,49 SAY LEFT(xfornece,29) pict "@!" COLOR( "N/*W" )

   IF EMPTY(xfornece)
      ERROREG()
      DBCLOSEALL()
      LOOP
   ENDIF

   ***********
   PLABOLETO()
   ***********

ENDDO
RSTENV(aPESOMANU)
DBCLOSEALL()
RETURN

**************
FUNC PLABOLETO
**************
FIELD CODPRO,SUBCOD,PRODUTO,BRUTO,DESCONTO,LIQUIDO,PRECO,SUB_TOTAL,DESC,VLRDESC,TOTAL,UN IN ENT
LOCAL nButton := 1
LOCAL nOpcao  := 0
LOCAL OTbr  :=TBrowseDB( 06, 01, 15, 78 )
LOCAL OTbc1 :=TbColumnNew("N§Pro",                  { || CODPRO   } )
LOCAL OTbc2 :=TbColumnNew("T",                      { || SUBCOD   } )
LOCAL OTbc3 :=TbColumnNew("Descricao Produto",      { || PRODUTO  } )
LOCAL OTbc4 :=TbColumnNew("Peso Bru",               { || BRUTO    } )
LOCAL OTbc5 :=TbColumnNew("Desc.Kg",                { || DESCONTO } )
LOCAL OTbc6 :=TbColumnNew("Peso Liq",               { || LIQUIDO  } )
LOCAL OTbc7 :=TbColumnNew("Vl Preco",               { || PRECO    } )
LOCAL OTbc8 :=TbColumnNew("SUB-TOTAL",              { || SUB_TOTAL} )
LOCAL OTbc9 :=TbColumnNew("Desconto %",             { || DESC     } )
LOCAL OTbc10:=TbColumnNew("Vlr Desconto",           { || VLRDESC  } )
LOCAL OTbc11:=TbColumnNew("VLR TOTAL",              { || TOTAL    } )
LOCAL OTbc12:=TbColumnNew("UN",                     { || UN       } )

LOCAL nKey
LOCAL lExitRequested
********************************************************************
                //   1   2    3     4     5     6    7     8     9
oTbr:colorspec :="N*/W,N*/W, W+/B, R+*/N, N/R+, B/W, W/B, R/W*, B/W*"
oTbr:addColumn(oTbc1)
oTbr:addColumn(oTbc2)
oTbr:addColumn(oTbc3)
oTbr:addColumn(oTbc4)
oTbr:addColumn(oTbc5)
oTbr:addColumn(oTbc6)
oTbr:addColumn(oTbc7)
oTbr:addColumn(oTbc8)
oTbr:addColumn(oTbc9)
oTbr:addColumn(oTbc10)
oTbr:addColumn(oTbc11)
oTbr:addColumn(oTbc12)

************ Definicao de Cores ***********
oTbC5:COLORBLOCK :={| DESCONTO | IIF ( DESCONTO > 0 , { 9,9} , { 1,1} ) }
oTbC7:COLORBLOCK :={| PRECOVEN | IIF ( PRECOVEN > 0 , { 9,9} , { 1,1} ) }
oTbC8:COLORBLOCK :={| SUBTOTAL | IIF ( SUBTOTAL > 0 , { 9,9} , { 1,1} ) }
oTbC11:COLORBLOCK :={| TOTAL   | IIF ( TOTAL    > 0 , { 9,9} , { 1,1} ) }

************ largura das colunas ***********
oTbc3:width:=20
************ largura das colunas ***********

************ Marcara das colunas ***********
oTbc1:picture:="!!!!!"
oTbc4:picture:="@E 99,999.9"
oTbc5:picture:="@E 9,999.9"
oTbc6:picture:="@E 99,999.99"
oTbc7:picture:="@E 99,999.99"
oTbc8:picture:="@E 99,999.99"
oTbc9:picture:="@E 999.99"
oTbc10:picture:="@E 99,999.99"
oTbc11:picture:="@E 99,999.99"

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

************ Linhas das colunas ************
oTbr:COLSEP :=DEF_CSEP  // desenha colunas Verticais
oTbr:HEADSEP:=HEAD_SEP  // desenha colunas Horizontais superior
oTbr:FOOTSEP:=FOOT_SEP  // desenha colunas Horizontais inferior
*********************

************ COLUNAS A CONGELAR ************
ColFix := 3              // atraves de variaval colfix
oTbr:freeze := ColFix
********************************************
aTABELA := savenv( 01, 00, 24, 79 )
CLEAR TYPEAHEAD         // limpa sujeira no teclado
SAGEM(01,00,'LANCAMENTO DE PRODUTOS NO BOLETO',1)

SETCOLOR( "N+/W,N*/W, , , N*/W" )
SETCURSOR( 1 )

SELE ENT
ORDScope(0, XNFISCAL)   // USO COM CDX
ORDScope(1, XNFISCAL)   // USO COM CDX
go top

nSaveRec := Recno()
oTbr:RefreshAll() 
oTbr:ForceStable()

Otbr:gotop()  // no arquivo indexado
IExitRequested := .F.
DO WHILE !IExitRequested
    @ 23, 00 SAY "[C]Cadastrar ITEM    [A]Alterar ITEM    [F]Finalizar BOLETO    [DEL]Deletar ITEM  " COLOR "R*/W"
    DO WHILE !oTbr:stabilize()
    ENDDO
    nKey := inkey(0)

    DO CASE
      CASE nKey == K_C .OR. nKey == K_c
         DO WHILE .T.
            CADBOL("C") // ACESSO UMA OUTRA FUNۂO
            SELE ENT
            SET ORDER TO 1
            ORDScope(0, XNFISCAL) 
            ORDScope(1, XNFISCAL) 

            nSaveRec := Recno()
            oTbr:RefreshAll() 
            oTbr:ForceStable()

            dbgotop()     // arruma por ordem os dados
            Otbr:gotop()  // no arquivo indexado
            LOOP
         ENDDO
      CASE nKey == K_F .OR. nKey == K_f
           IExitRequested := .T.
      CASE nKey == K_A .OR. nKey == K_a
         vREG=RECNO()

         CADBOL("A") // ACESSO UMA OUTRA FUNۂO
         SELE ENT
         SET ORDER TO 1
         ORDScope(0, XNFISCAL) 
         ORDScope(1, XNFISCAL) 

         nSaveRec := Recno()
         oTbr:RefreshAll() 
         oTbr:ForceStable()

         dbgotop()     // arruma por ordem os dados
         Otbr:gotop()  // no arquivo indexado
      CASE nKey == K_DEL
         vREG=RECNO()
         DELCADBOL()  // ACESSO UMA OUTRA FUNۂO
         SELE ENT
         SET ORDER TO 1
         ORDScope(0, XNFISCAL) 
         ORDScope(1, XNFISCAL) 

         nSaveRec := Recno()
         oTbr:RefreshAll() 
         oTbr:ForceStable()

         dbgotop()     // arruma por ordem os dados
         Otbr:gotop()  // no arquivo indexado
      CASE nKey == F_5
         dbgotop()     // arruma por ordem os dados
         Otbr:gotop()  // no arquivo indexado
      CASE nKey == K_DOWN
           oTbr:down()
      CASE nKey == K_UP
           oTbr:up()
      CASE nKey == K_PGDN
           oTbr:pageDown()
      CASE nKey == K_PGUP
           oTbr:pageUp()
      CASE nKey == K_CTRL_PGUP
           oTbr:goTop()
      CASE nKey == K_CTRL_PGDN
           oTbr:goBottom()
      CASE nKey == K_RIGHT
           oTbr:right()
      CASE nKey == K_LEFT
           oTbr:left()
      CASE nKey == K_HOME
           oTbr:home()
      CASE nKey == K_END
           oTbr:end()
      CASE nKey == K_CTRL_LEFT
           oTbr:panLeft()
      CASE nKey == K_CTRL_RIGHT
           oTbr:panRight()
      CASE nKey == K_CTRL_HOME
           oTbr:panHome()
      CASE nKey == K_CTRL_END
           oTbr:panEnd()
    ENDCASE
  ENDDO
RETURN NIL
Tche acho que seria mais ou menos isso ai.....fica fixo em cima algumas informações e logo abaixo vc navega dentro do TBROWSE com os itens dessa determinada nota..

Abraços

Enviado: 12 Abr 2007 09:32
por ederxc
Cara creio seja algo assim mesmo ,to vendoq ue vou ter que ralr bastante , VLw pela ajuda té++

Enviado: 12 Abr 2007 14:29
por ederxc
Existe TBROWSE() no clip52 ou somente no 53 ?

Enviado: 12 Abr 2007 16:56
por Pablo César
Caro Edexc,

Sobre o TBROWSE, como eu disse no outro tópico, existe desde a versão 5.0 do Clipper. E é muito importante você alcançar entende-lo e domina-lo. Pois é uma ferramenta muito versátil.

De todas formas, teria como fazer diferente, isto é, não necessáriamente abrir através de 2 TBROWSE, que irá demandar mais habilidade para alcançar "quase" o mesmo resultado que se você exibisse os registros do outro DBF numa janela utilizando apena o SAY.

Digamos que você ja tem como saber quais são os registros que você quer exibir. Se você apenas que mostrar apenas uma quantidade limitada (digamos até 20). Eu diria de você criar vetor com o conteúdo desses registros e exibi-los assim por exemplo:

FOR I=1 TO 20
IF I<=LEN(VETOR)
@ I,00 SAY VETOR
ELSE
@ I,00 SAY SPACE(30)
ENDIF
NEXT

Desta maneira a medida que o seu cursor se movimentar você poderia chamar uma função que faça a exibição apenas desses registros.

Cabe você avaliar, se é necessário exbir TODOS os registros do segundo DBF, seja para edição ou para mostrar. Mas acho menos pesado fazer esse exemplo que dei.

Um clip-abraço :)Pos

Enviado: 13 Abr 2007 13:55
por ederxc
Paulo ta ae outro problema sério que a tempos tento intender mais ta dificil , ainda ñ peguei a moral de trabalhar com vetorer, arrey e aora tbrowse monstruoso ahahah , se vc puder me dar umas dicas "bancar o proff"eu agradeço principalmente na area de vetores e arrey , as ezes ñ adianta ficar lendo os codigos e tenatndo entender , falta aquele empurrãosinho

Enviado: 13 Abr 2007 15:31
por Pablo César
Pablo é meu nome, existem também Paulos onde nascí, mas aqui e em qualquer lugar ainda serei PABLO. (this is your second time calling me like that).
ederxc escreveu:ta ae outro problema sério que a tempos tento intender mais ta dificil
Mas então você conseguiu resolver este tópico ?. porque seria melhor abrir um novo tópico, onde pudessem ser acrescentados exemplos e maiores explicações sobre outro assunto; "VETORES ou MATRIZES". Você não acha ? Porque esse assunto é tabú (creio eu) para muitos, mas que requer uma atenção separada. Ok ?

Após ter esperado você abrir um novo tópico, eu mesmo o fiz para proveito de todos. Clique aqui pra ver

Um clip-abraço :)Pos