prompt
Moderador: Moderadores
prompt
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 !
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 !
C:\Xharbour\Xdev\Fw\VSX
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
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:
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
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
Abraços
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
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
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
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
C:\Xharbour\Xdev\Fw\VSX
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
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).
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
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 ?ederxc escreveu:ta ae outro problema sério que a tempos tento intender mais ta dificil
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

