Problemas com indices....
Enviado: 21 Nov 2005 11:44
Galera estou mudando de NTX para CDX porém estou com problemas para abrir, usar e fechar os arquivos, segue abaixo como faço hoje, gostaria que alguem desse um olhadinha nesse codigo e sugerise algo
para acertar meus problemas.
Ocorre que quando deleto um vendedor, quando volto para incluir outro ele naum respeita mais os contador, aparentemente o Go Bottom perde a função.
* PROGRAMA : VENDEDOR.PRG
* COMENTARIO : CADASTRO DE VENDEDORES
SET DELETED ON
DO WHILE .T.
MENSAGEM("Tecle <ESC> para retornar")
WCOD_VEN := 0
WNOME_VEN := SPACE(15)
WCOMISSAO := 0
WDTCAD_VEN := DATAATU
WCONF :="S"
JANELA(05,03,12,76,"Cadastro de Vendedores")
COR("MENU")
@ 07,05 SAY "Codigo........:"
@ 08,05 SAY "Nome Vendedor.:"
@ 09,05 SAY "% Comissao....:"
@ 10,05 SAY "Data Cadastro.:"
JANELA(05,63,12,76," MENU ")
COR("MENU")
@ 07,65 PROMPT " Inclusao "
@ 08,65 PROMPT " Alteracao "
@ 09,65 PROMPT " Consulta "
@ 10,65 PROMPT " Delecao "
MENU TO OP
IF LASTKEY() = 27
EXIT
CLS
ENDIF
DO CASE
CASE OP=1
DO WHILE .T.
MENSAGEM("Tecle <ESC> para retornar")
WCOD_VEN := 0
WNOME_VEN := SPACE(15)
WCOMISSAO := 0
WDTCAD_VEN := DATAATU
WCONF :="S"
JANELA(05,03,12,76,"Cadastro de Vendedores")
COR("MENU")
@ 07,05 SAY "Codigo........:"
@ 08,05 SAY "Nome Vendedor.:"
@ 09,05 SAY "% Comissao....:"
@ 10,05 SAY "Data Cadastro.:"
IF !FILE("INDVD.NTX")
SELECT 2
USE VENDEDOR
INDEX ON COD_VEN TO INDVD
INDEX ON NOME_VEN TO INDVD1
SET INDEX TO INDVD, INDVD1
ELSE
SELECT 2
USE VENDEDOR
SET INDEX TO INDVD, INDVD1
ENDIF
SELECT 2
GO BOTTOM
WCOD_VEN := COD_VEN + 1
WCOD1_VEN := WCOD_VEN
@ 07,21 GET WCOD_VEN VALID (WCOD_VEN>0) PICT "99"
READ
IF LASTKEY() = 27
EXIT
CLS
ENDIF
SELECT 2
SEEK WCOD_VEN
IF FOUND()
WCOD_VEN := COD_VEN
WNOME_VEN := NOME_VEN
WCOMISSAO := COMISSAO
@ 08,21 SAY WNOME_VEN PICT "@!"
@ 09,21 SAY WCOMISSAO PICT "@E 999.99"
@ 10,21 SAY WDTCAD_VEN PICT "@D"
BEEP()
MENSAGEM("Vendedor j Cadastrado",2)
LOOP
ELSE
@ 08,21 GET WNOME_VEN PICT "@!"
@ 09,21 GET WCOMISSAO PICT "@E 999.99"
@ 10,21 GET WDTCAD_VEN PICT "@D"
READ
IF WNOME_VEN = SPACE(30)
EXIT
CLS
ENDIF
MENSAGEM("Confirma (S/N):")
@ 24,48 GET WCONF PICT "@!" VALID WCONF $ "SN"
READ
IF WCONF = "S"
SELECT 2
SEEK WCOD_VEN
IF! FOUND()
IF! FOUND()
APPEND BLANK
ENDIF
REPLACE COD_VEN WITH WCOD_VEN
REPLACE NOME_VEN WITH WNOME_VEN
REPLACE COMISSAO WITH WCOMISSAO
REPLACE DTCAD_VEN WITH WDTCAD_VEN
ELSE
GO BOTTOM
WCOD_VEN := COD_VEN + 1
IF! FOUND()
APPEND BLANK
ENDIF
REPLACE COD_VEN WITH WCOD_VEN
REPLACE NOME_VEN WITH WNOME_VEN
REPLACE COMISSAO WITH WCOMISSAO
REPLACE DTCAD_VEN WITH WDTCAD_VEN
ENDIF
ELSE
MENSAGEM("InclusÆo nÆo Efetuada",1)
LOOP
ENDIF
ENDIF
ENDDO
CASE OP=2
DO WHILE .T.
MENSAGEM("Tecle <ESC> para retornar")
WCOD_VEN := 0
WNOME_VEN := SPACE(15)
WCOMISSAO := 0
WDTCAD_VEN := DATAATU
WCONF :="S"
JANELA(05,03,12,76,"Cadastro de Vendedores")
COR("MENU")
@ 07,05 SAY "Codigo........:"
@ 08,05 SAY "Nome Vendedor.:"
@ 09,05 SAY "% Comissao....:"
@ 10,05 SAY "Data Cadastro.:"
IF !FILE("INDVD.NTX")
SELECT 2
USE VENDEDOR
INDEX ON COD_VEN TO INDVD
INDEX ON NOME_VEN TO INDVD1
SET INDEX TO INDVD, INDVD1
ELSE
SELECT 2
USE VENDEDOR
SET INDEX TO INDVD, INDVD1
ENDIF
@ 07,21 GET WCOD_VEN VALID (WCOD_VEN>0) PICT "99"
READ
IF LASTKEY() = 27
EXIT
CLS
ENDIF
SELECT 2
SEEK WCOD_VEN
IF FOUND()
WCOD_VEN := COD_VEN
WNOME_VEN := NOME_VEN
WCOMISSAO := COMISSAO
@ 08,21 SAY WNOME_VEN PICT "@!"
@ 09,21 SAY WCOMISSAO PICT "@E 999.99"
@ 10,21 SAY WDTCAD_VEN PICT "@D"
@ 08,21 GET WNOME_VEN PICT "@!"
@ 09,21 GET WCOMISSAO PICT "@E 999.99"
READ
MENSAGEM("Confirma (S/N):")
@ 24,48 GET WCONF PICT "@!" VALID WCONF $ "SN"
READ
IF WCONF = "S"
SELECT 2
IF! FOUND()
APPEND BLANK
ENDIF
IF RLOCK()
REPLACE COD_VEN WITH WCOD_VEN
REPLACE NOME_VEN WITH WNOME_VEN
REPLACE COMISSAO WITH WCOMISSAO
UNLOCK
ELSE
MENSAGEM("Bloqueado por outro usuario",1)
LOOP
ENDIF
ELSE
MENSAGEM("InclusÆo nÆo Efetuada",1)
LOOP
ENDIF
ELSE
BEEP()
MENSAGEM("Vendedor nÆo Cadastrado",2)
LOOP
ENDIF
ENDDO
CASE OP=3
DO WHILE .T.
MENSAGEM("Tecle <ESC> para retornar")
WCOD_VEN := 0
WNOME_VEN := SPACE(15)
WCOMISSAO := 0
WDTCAD_VEN := DATAATU
WCONF :="S"
JANELA(05,03,12,76,"Cadastro de Vendedores")
COR("MENU")
@ 07,05 SAY "Codigo........:"
@ 08,05 SAY "Nome Vendedor.:"
@ 09,05 SAY "% Comissao....:"
@ 10,05 SAY "Data Cadastro.:"
IF !FILE("INDVD.NTX")
SELECT 2
USE VENDEDOR
INDEX ON COD_VEN TO INDVD
INDEX ON NOME_VEN TO INDVD1
SET INDEX TO INDVD, INDVD1
ELSE
SELECT 2
USE VENDEDOR
SET INDEX TO INDVD, INDVD1
ENDIF
@ 07,21 GET WCOD_VEN VALID (WCOD_VEN>0) PICT "99"
READ
IF LASTKEY() = 27
EXIT
CLS
ENDIF
SELECT 2
SEEK WCOD_VEN
IF FOUND()
WCOD_VEN := COD_VEN
WNOME_VEN := NOME_VEN
WCOMISSAO := COMISSAO
@ 08,21 SAY WNOME_VEN PICT "@!"
@ 09,21 SAY WCOMISSAO PICT "@E 999.99"
@ 10,21 SAY WDTCAD_VEN PICT "@D"
MENSAGEM("Tecle algo para sair",1)
INKEY(0)
ELSE
MENSAGEM("Vendedor nÆo Cadastrado",2)
LOOP
ENDIF
ENDDO
CASE OP=4
DO WHILE .T.
MENSAGEM("Tecle <ESC> para retornar")
WCOD_VEN := 0
WNOME_VEN := SPACE(15)
WCOMISSAO := 0
WDTCAD_VEN := DATAATU
WCONF :="S"
JANELA(05,03,12,76,"Cadastro de Vendedores")
COR("MENU")
@ 07,05 SAY "Codigo........:"
@ 08,05 SAY "Nome Vendedor.:"
@ 09,05 SAY "% Comissao....:"
@ 10,05 SAY "Data Cadastro.:"
IF !FILE("INDVD.NTX")
SELECT 2
USE VENDEDOR
INDEX ON COD_VEN TO INDVD
INDEX ON NOME_VEN TO INDVD1
SET INDEX TO INDVD, INDVD1
ELSE
SELECT 2
USE VENDEDOR
SET INDEX TO INDVD, INDVD1
ENDIF
@ 07,21 GET WCOD_VEN VALID (WCOD_VEN>0) PICT "99"
READ
IF LASTKEY() = 27
EXIT
CLS
ENDIF
SELECT 2
SEEK WCOD_VEN
IF FOUND()
WCOD_VEN := COD_VEN
WNOME_VEN := NOME_VEN
WCOMISSAO := COMISSAO
@ 08,21 SAY WNOME_VEN PICT "@!"
@ 09,21 SAY WCOMISSAO PICT "@E 999.99"
@ 10,21 SAY WDTCAD_VEN PICT "@D"
INKEY(0.1)
MENSAGEM("Confirma (S/N):")
@ 24,48 GET WCONF PICT "@!" VALID WCONF $ "SN"
READ
IF WCONF = "S"
IF RLOCK()
DELETE
LOOP
UNLOCK
ELSE
MENSAGEM("Bloqueado por outro usuario",1)
LOOP
ENDIF
ELSE
LOOP
ENDIF
ELSE
MENSAGEM("Vendedor nÆo Cadastrado",2)
LOOP
ENDIF
ENDDO
ENDCASE
ENDDO
para acertar meus problemas.
Ocorre que quando deleto um vendedor, quando volto para incluir outro ele naum respeita mais os contador, aparentemente o Go Bottom perde a função.
* PROGRAMA : VENDEDOR.PRG
* COMENTARIO : CADASTRO DE VENDEDORES
SET DELETED ON
DO WHILE .T.
MENSAGEM("Tecle <ESC> para retornar")
WCOD_VEN := 0
WNOME_VEN := SPACE(15)
WCOMISSAO := 0
WDTCAD_VEN := DATAATU
WCONF :="S"
JANELA(05,03,12,76,"Cadastro de Vendedores")
COR("MENU")
@ 07,05 SAY "Codigo........:"
@ 08,05 SAY "Nome Vendedor.:"
@ 09,05 SAY "% Comissao....:"
@ 10,05 SAY "Data Cadastro.:"
JANELA(05,63,12,76," MENU ")
COR("MENU")
@ 07,65 PROMPT " Inclusao "
@ 08,65 PROMPT " Alteracao "
@ 09,65 PROMPT " Consulta "
@ 10,65 PROMPT " Delecao "
MENU TO OP
IF LASTKEY() = 27
EXIT
CLS
ENDIF
DO CASE
CASE OP=1
DO WHILE .T.
MENSAGEM("Tecle <ESC> para retornar")
WCOD_VEN := 0
WNOME_VEN := SPACE(15)
WCOMISSAO := 0
WDTCAD_VEN := DATAATU
WCONF :="S"
JANELA(05,03,12,76,"Cadastro de Vendedores")
COR("MENU")
@ 07,05 SAY "Codigo........:"
@ 08,05 SAY "Nome Vendedor.:"
@ 09,05 SAY "% Comissao....:"
@ 10,05 SAY "Data Cadastro.:"
IF !FILE("INDVD.NTX")
SELECT 2
USE VENDEDOR
INDEX ON COD_VEN TO INDVD
INDEX ON NOME_VEN TO INDVD1
SET INDEX TO INDVD, INDVD1
ELSE
SELECT 2
USE VENDEDOR
SET INDEX TO INDVD, INDVD1
ENDIF
SELECT 2
GO BOTTOM
WCOD_VEN := COD_VEN + 1
WCOD1_VEN := WCOD_VEN
@ 07,21 GET WCOD_VEN VALID (WCOD_VEN>0) PICT "99"
READ
IF LASTKEY() = 27
EXIT
CLS
ENDIF
SELECT 2
SEEK WCOD_VEN
IF FOUND()
WCOD_VEN := COD_VEN
WNOME_VEN := NOME_VEN
WCOMISSAO := COMISSAO
@ 08,21 SAY WNOME_VEN PICT "@!"
@ 09,21 SAY WCOMISSAO PICT "@E 999.99"
@ 10,21 SAY WDTCAD_VEN PICT "@D"
BEEP()
MENSAGEM("Vendedor j Cadastrado",2)
LOOP
ELSE
@ 08,21 GET WNOME_VEN PICT "@!"
@ 09,21 GET WCOMISSAO PICT "@E 999.99"
@ 10,21 GET WDTCAD_VEN PICT "@D"
READ
IF WNOME_VEN = SPACE(30)
EXIT
CLS
ENDIF
MENSAGEM("Confirma (S/N):")
@ 24,48 GET WCONF PICT "@!" VALID WCONF $ "SN"
READ
IF WCONF = "S"
SELECT 2
SEEK WCOD_VEN
IF! FOUND()
IF! FOUND()
APPEND BLANK
ENDIF
REPLACE COD_VEN WITH WCOD_VEN
REPLACE NOME_VEN WITH WNOME_VEN
REPLACE COMISSAO WITH WCOMISSAO
REPLACE DTCAD_VEN WITH WDTCAD_VEN
ELSE
GO BOTTOM
WCOD_VEN := COD_VEN + 1
IF! FOUND()
APPEND BLANK
ENDIF
REPLACE COD_VEN WITH WCOD_VEN
REPLACE NOME_VEN WITH WNOME_VEN
REPLACE COMISSAO WITH WCOMISSAO
REPLACE DTCAD_VEN WITH WDTCAD_VEN
ENDIF
ELSE
MENSAGEM("InclusÆo nÆo Efetuada",1)
LOOP
ENDIF
ENDIF
ENDDO
CASE OP=2
DO WHILE .T.
MENSAGEM("Tecle <ESC> para retornar")
WCOD_VEN := 0
WNOME_VEN := SPACE(15)
WCOMISSAO := 0
WDTCAD_VEN := DATAATU
WCONF :="S"
JANELA(05,03,12,76,"Cadastro de Vendedores")
COR("MENU")
@ 07,05 SAY "Codigo........:"
@ 08,05 SAY "Nome Vendedor.:"
@ 09,05 SAY "% Comissao....:"
@ 10,05 SAY "Data Cadastro.:"
IF !FILE("INDVD.NTX")
SELECT 2
USE VENDEDOR
INDEX ON COD_VEN TO INDVD
INDEX ON NOME_VEN TO INDVD1
SET INDEX TO INDVD, INDVD1
ELSE
SELECT 2
USE VENDEDOR
SET INDEX TO INDVD, INDVD1
ENDIF
@ 07,21 GET WCOD_VEN VALID (WCOD_VEN>0) PICT "99"
READ
IF LASTKEY() = 27
EXIT
CLS
ENDIF
SELECT 2
SEEK WCOD_VEN
IF FOUND()
WCOD_VEN := COD_VEN
WNOME_VEN := NOME_VEN
WCOMISSAO := COMISSAO
@ 08,21 SAY WNOME_VEN PICT "@!"
@ 09,21 SAY WCOMISSAO PICT "@E 999.99"
@ 10,21 SAY WDTCAD_VEN PICT "@D"
@ 08,21 GET WNOME_VEN PICT "@!"
@ 09,21 GET WCOMISSAO PICT "@E 999.99"
READ
MENSAGEM("Confirma (S/N):")
@ 24,48 GET WCONF PICT "@!" VALID WCONF $ "SN"
READ
IF WCONF = "S"
SELECT 2
IF! FOUND()
APPEND BLANK
ENDIF
IF RLOCK()
REPLACE COD_VEN WITH WCOD_VEN
REPLACE NOME_VEN WITH WNOME_VEN
REPLACE COMISSAO WITH WCOMISSAO
UNLOCK
ELSE
MENSAGEM("Bloqueado por outro usuario",1)
LOOP
ENDIF
ELSE
MENSAGEM("InclusÆo nÆo Efetuada",1)
LOOP
ENDIF
ELSE
BEEP()
MENSAGEM("Vendedor nÆo Cadastrado",2)
LOOP
ENDIF
ENDDO
CASE OP=3
DO WHILE .T.
MENSAGEM("Tecle <ESC> para retornar")
WCOD_VEN := 0
WNOME_VEN := SPACE(15)
WCOMISSAO := 0
WDTCAD_VEN := DATAATU
WCONF :="S"
JANELA(05,03,12,76,"Cadastro de Vendedores")
COR("MENU")
@ 07,05 SAY "Codigo........:"
@ 08,05 SAY "Nome Vendedor.:"
@ 09,05 SAY "% Comissao....:"
@ 10,05 SAY "Data Cadastro.:"
IF !FILE("INDVD.NTX")
SELECT 2
USE VENDEDOR
INDEX ON COD_VEN TO INDVD
INDEX ON NOME_VEN TO INDVD1
SET INDEX TO INDVD, INDVD1
ELSE
SELECT 2
USE VENDEDOR
SET INDEX TO INDVD, INDVD1
ENDIF
@ 07,21 GET WCOD_VEN VALID (WCOD_VEN>0) PICT "99"
READ
IF LASTKEY() = 27
EXIT
CLS
ENDIF
SELECT 2
SEEK WCOD_VEN
IF FOUND()
WCOD_VEN := COD_VEN
WNOME_VEN := NOME_VEN
WCOMISSAO := COMISSAO
@ 08,21 SAY WNOME_VEN PICT "@!"
@ 09,21 SAY WCOMISSAO PICT "@E 999.99"
@ 10,21 SAY WDTCAD_VEN PICT "@D"
MENSAGEM("Tecle algo para sair",1)
INKEY(0)
ELSE
MENSAGEM("Vendedor nÆo Cadastrado",2)
LOOP
ENDIF
ENDDO
CASE OP=4
DO WHILE .T.
MENSAGEM("Tecle <ESC> para retornar")
WCOD_VEN := 0
WNOME_VEN := SPACE(15)
WCOMISSAO := 0
WDTCAD_VEN := DATAATU
WCONF :="S"
JANELA(05,03,12,76,"Cadastro de Vendedores")
COR("MENU")
@ 07,05 SAY "Codigo........:"
@ 08,05 SAY "Nome Vendedor.:"
@ 09,05 SAY "% Comissao....:"
@ 10,05 SAY "Data Cadastro.:"
IF !FILE("INDVD.NTX")
SELECT 2
USE VENDEDOR
INDEX ON COD_VEN TO INDVD
INDEX ON NOME_VEN TO INDVD1
SET INDEX TO INDVD, INDVD1
ELSE
SELECT 2
USE VENDEDOR
SET INDEX TO INDVD, INDVD1
ENDIF
@ 07,21 GET WCOD_VEN VALID (WCOD_VEN>0) PICT "99"
READ
IF LASTKEY() = 27
EXIT
CLS
ENDIF
SELECT 2
SEEK WCOD_VEN
IF FOUND()
WCOD_VEN := COD_VEN
WNOME_VEN := NOME_VEN
WCOMISSAO := COMISSAO
@ 08,21 SAY WNOME_VEN PICT "@!"
@ 09,21 SAY WCOMISSAO PICT "@E 999.99"
@ 10,21 SAY WDTCAD_VEN PICT "@D"
INKEY(0.1)
MENSAGEM("Confirma (S/N):")
@ 24,48 GET WCONF PICT "@!" VALID WCONF $ "SN"
READ
IF WCONF = "S"
IF RLOCK()
DELETE
LOOP
UNLOCK
ELSE
MENSAGEM("Bloqueado por outro usuario",1)
LOOP
ENDIF
ELSE
LOOP
ENDIF
ELSE
MENSAGEM("Vendedor nÆo Cadastrado",2)
LOOP
ENDIF
ENDDO
ENDCASE
ENDDO