Caros amigos,
Como já disse em outros questionamentos, sou iniciante em clipper, e a algum tempo desenvolvi uma aplicação para um amigo e este estava usando até esses dias, porém me pediu para adaptar o sistema para funcionar em rede, entaum disse a ele que naum sabia como fazer, mais que tentaria.
Começei procurando sobre o assunto e encontrei muita ajudar aqui no forum. Mais mesmo assim ainda esta sendo muito complicado, pois me deparo com muitos problemas e me bato muito por vezes naum consigo resolver. Estou tendo muito problema com lentidão na hora da impressão, lentidão e travamento em algumas rotinas quando acessas pela rede, coisinhas assim.
Mais vamos aos finalmente, gostaria que alguem do forum desse uma olhadinha em umas rotinas minhas para me auxiliar e quem sabe talves sugerir algumas modificações para resolver esses problemas...
Será que alguem se habilita, posso mandar os fontes.
Obrigado galera,
Marcio Ril
Talvez alguem possa me ajudar....
Moderador: Moderadores
-
Marcio Antonio Ril
- Usuário Nível 1

- Mensagens: 42
- Registrado em: 13 Set 2005 11:55
-
josenilson
- Usuário Nível 1

- Mensagens: 46
- Registrado em: 14 Set 2004 10:58
Prezado Marcos,
Acredito que todos desta comunidade estão dispostos a te ajudar, assim como temos nos ajudado uns aos outros. Seria interessante se vc continuasse a postar aqui as suas dúvidas e partes de seus fontes, se necessário, para que possa receber ajuda não só de um, mas de muitos feras que participam neste fórum.
:xau
Acredito que todos desta comunidade estão dispostos a te ajudar, assim como temos nos ajudado uns aos outros. Seria interessante se vc continuasse a postar aqui as suas dúvidas e partes de seus fontes, se necessário, para que possa receber ajuda não só de um, mas de muitos feras que participam neste fórum.
:xau
-
Marcio Antonio Ril
- Usuário Nível 1

- Mensagens: 42
- Registrado em: 13 Set 2005 11:55
Amigo Vagucs
Peguei a sua pagina o tutorial ensinando os macetes de para colocar um programa em rede, segui as suas dicas e modifiquei uma rotina simples de cadastro de vendedor, porém quando faço uma alteração aparece a mensagem abaixo:
r_lock(0) unrecoverable error 650: processor stack fault.
Segue abaixo a rotina para o amigo analisar....
Marcio Ril
r_lock(0) unrecoverable error 650: processor stack fault.
Segue abaixo a rotina para o amigo analisar....
Marcio Ril
Código: Selecionar todos
* PROGRAMA : VENDEDOR.PRG
* COMENTARIO : CADASTRO DE VENDEDORES
IF !FILE("INDVE1.IDX")
SELECT 3
USE VENDEDOR SHARED NEW ALIAS VENDEDOR
INDEX ON COD_VEN TO INDVE1
INDEX ON NOME_VEN TO INDVE2
SET INDEX TO INDVE1, INDVE2
ELSE
SELECT 3
USE VENDEDOR SHARED NEW ALIAS VENDEDOR
SET INDEX TO INDVE1, INDVE2
ENDIF
SET DELETED ON
DO WHILE .T.
MENSAGEM("Tecle <ESC> para retornar")
WCOD_VEN := 0
WNOME_VEN := SPACE(15)
WDTCAD_VEN := DATAATU
WCONF :="S"
JANELA(03,03,13,76,"Cadastro de Vendedores")
COR("MENU")
@ 06,05 SAY "Cod. Vendedor.:"
@ 08,05 SAY "Nome Vendedor.:"
@ 10,05 SAY "Dt.Cadastro...:"
JANELA(03,63,10,76," MENU ")
COR("MENU")
@ 05,65 PROMPT " Inclusao "
@ 06,65 PROMPT " Alteracao "
@ 07,65 PROMPT " Consulta "
@ 08,65 PROMPT " Delecao "
MENU TO OP
IF LASTKEY() = 27
VENDEDOR->(DBCLOSEAREA())
EXIT
CLS
ENDIF
DO CASE
CASE OP=1
DO WHILE .T.
MENSAGEM("Tecle <ESC> para retornar")
WCOD_VEN := 0
WNOME_VEN := SPACE(15)
WDTCAD_VEN := DATAATU
WCONF :="S"
JANELA(03,03,13,76,"Cadastro de Vendedores")
COR("MENU")
@ 06,05 SAY "Cod. Vendedor.:"
@ 08,05 SAY "Nome Vendedor.:"
@ 10,05 SAY "Dt.Cadastro...:"
SELE VENDEDOR
SET ORDER TO 1
GO BOTTOM
WCOD_VEN := COD_VEN + 1
@ 06,21 GET WCOD_VEN VALID (WCOD_VEN>0) PICT "99"
READ
IF LASTKEY() = 27
EXIT
CLS
ENDIF
SEEK WCOD_VEN
IF FOUND()
WCOD_VEN := COD_VEN
WNOME_VEN := NOME_VEN
@ 08,21 SAY WNOME_VEN PICT "@!"
@ 10,21 SAY WDTCAD_VEN PICT "@D"
BEEP()
MENSAGEM("Vendedor j Cadastrado",2)
LOOP
ELSE
@ 08,21 GET WNOME_VEN PICT "@!"
@ 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"
SELE VENDEDOR
SET ORDER TO 1
SEEK WCOD_VEN
IF! FOUND()
IF! FOUND()
APPEND BLANK
ENDIF
REPLACE COD_VEN WITH WCOD_VEN
REPLACE NOME_VEN WITH WNOME_VEN
REPLACE DTCAD_VEN WITH WDTCAD_VEN
U_LOCK()
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 DTCAD_VEN WITH WDTCAD_VEN
U_LOCK()
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)
WDTCAD_VEN := DATAATU
WCONF :="S"
JANELA(03,03,13,76,"Altera Cadastro de Vendedores")
COR("MENU")
@ 06,05 SAY "Cod. Vendedor.:"
@ 08,05 SAY "Nome Vendedor.:"
@ 10,05 SAY "Dt.Cadastro...:"
SELE VENDEDOR
SET ORDER TO 2
@ 06,21 GET WCOD_VEN VALID (WCOD_VEN>0) PICT "99"
READ
IF LASTKEY() = 27
EXIT
CLS
ENDIF
SEEK WCOD_VEN
IF FOUND()
WCOD_VEN := COD_VEN
WNOME_VEN := NOME_VEN
@ 08,21 SAY WNOME_VEN PICT "@!"
@ 10,21 SAY WDTCAD_VEN PICT "@D"
@ 08,21 GET WNOME_VEN PICT "@!"
READ
MENSAGEM("Confirma (S/N):")
@ 24,48 GET WCONF PICT "@!" VALID WCONF $ "SN"
READ
IF WCONF = "S"
SELE VENDEDOR
SET ORDER TO 1
IF! FOUND()
APPEND BLANK
ENDIF
R_LOCK()
REPLACE COD_VEN WITH WCOD_VEN
REPLACE NOME_VEN WITH WNOME_VEN
U_LOCK()
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)
WDTCAD_VEN := DATAATU
WCONF :="S"
JANELA(03,03,13,76,"Consulta Cadastro de Vendedores")
COR("MENU")
@ 06,05 SAY "Cod. Vendedor.:"
@ 08,05 SAY "Nome Vendedor.:"
@ 10,05 SAY "Dt.Cadastro...:"
SELE VENDEDOR
SET ORDER TO 1
@ 06,21 GET WCOD_VEN VALID (WCOD_VEN>0) PICT "99"
READ
IF LASTKEY() = 27
EXIT
CLS
ENDIF
SEEK WCOD_VEN
IF FOUND()
WCOD_VEN := COD_VEN
WNOME_VEN := NOME_VEN
@ 08,21 SAY WNOME_VEN PICT "@!"
@ 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)
WDTCAD_VEN := DATAATU
WCONF :="S"
JANELA(03,03,13,76,"Deleta Cadastro de Vendedores")
COR("MENU")
@ 06,05 SAY "Cod. Vendedor.:"
@ 08,05 SAY "Nome Vendedor.:"
@ 10,05 SAY "Dt.Cadastro...:"
SELE VENDEDOR
SET ORDER TO 1
@ 06,21 GET WCOD_VEN VALID (WCOD_VEN>0) PICT "99"
READ
IF LASTKEY() = 27
EXIT
CLS
ENDIF
SEEK WCOD_VEN
IF FOUND()
WCOD_VEN := COD_VEN
WNOME_VEN := NOME_VEN
@ 08,21 SAY WNOME_VEN PICT "@!"
@ 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"
R_LOCK()
DELETE
U_LOCK()
ELSE
LOOP
ENDIF
ELSE
MENSAGEM("Vendedor nÆo Cadastrado",2)
LOOP
ENDIF
ENDDO
ENDCASE
ENDDO
FUNCTION R_LOCK
DO WHILE (!R_LOCK())
MENSAGEM("Aguardendo permissÆo de acesso a base")
ENDDO
RETURN .T.
FUNCTION U_LOCK
SKIP 0
DBUNLOCK()
COMMIT
RETURN .T.- vagucs
- Membro Master

- Mensagens: 1480
- Registrado em: 10 Jul 2004 10:45
- Localização: Ipanema - MG
- Contato:
Na abertura de indices, econimize comandos
Código: Selecionar todos
USE ARQUIVO.DBF NEW ALIAS ARQUIVO SHARED
IF !FILE("INDICE1.NTX"
INDEX ON CHAVE1 TO INDICE1.NTX
END IF
SET INDEX TO INDICE1.NTX-
Irineu
- Usuário Nível 2

- Mensagens: 61
- Registrado em: 13 Ago 2003 22:01
- Localização: Curitia-PR
- Contato:
Olá Marcio,
Me parece que seu proble é simples, voce esta entrando num loop sem fim quando chama a função R_LOCK
Coloque assim :
Me parece que seu proble é simples, voce esta entrando num loop sem fim quando chama a função R_LOCK
Código: Selecionar todos
FUNCTION R_LOCK
DO WHILE (!R_LOCK()) // Aki vce esta chamanda a funcao que vc criou e nunca vai sair daqui, por isso o estouro da pilha
MENSAGEM("Aguardendo permissÆo de acesso a base")
ENDDO
RETURN .T.Código: Selecionar todos
FUNCTION R_LOCK
DO WHILE (!RLOCK())
MENSAGEM("Aguardendo permissÆo de acesso a base")
ENDDO
RETURN .T.Irineu - < http://irineufotos.servehttp.com >