Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Erro em alguma máquinas.
Message
General information
Forum:
Visual FoxPro
Category:
COM/DCOM and OLE Automation
Miscellaneous
Thread ID:
00808799
Message ID:
00812543
Views:
43
Rodolpo,

Acho que conseguimos fazer funcionar. Retiramos as Macros da Stored Procedure e tudo ficou funcionando. Eu usava esta macro pois copiava esta SP para todos os meus DBC que eu criava, isto facilitava a minha vida, trocando o nome da tabela que contem os ids, em um único lugar.

Bom troquei a Macro por um define e funcionou. Onde vc ver && ----->>> ALTERADO, foi onde eu retirei a macro. Agora porque deste erro ? A macro não foi feita para ser usada ?

Bom esta coloquei no cardeninho das soluções mais dificeis de se conseguir que já tive.

Abraços,
******************************************
#define ARQUIVO_PK   "gw_gera_id"    && --> NOVO

FUNCTION _st_Gw_GeraId (tcCampo)
	LOCAL lnId,lcArq,lcTabela,lnRepro,llBuff
	LOCAL loSession,lnOldSession,lnIdSession,lcOldError

	m.lcOldError   = ON("ERROR")
	m.lnOldSession = SET("Datasession")
	m.loSession    = CREATEOBJECT("Session")
	m.lnIdSession  = loSession.DataSessionId 
	m.lcTabela     = ALIAS()

	ON ERROR DO _geraId_error WITH ERROR()

	SET DATASESSION TO m.lnIdSession  && para fugir a possiveis transações que estejam pendentes.

	m.lnId         = -1
	m.tcCampo      = UPPER(m.tcCampo)
	m.lnRepro      = SET("Reprocess")

	SET REPROCESS TO 5 SECONDS && espera no máximo por 5 segundos para travar um registro.

	IF !USED(ARQUIVO_PK)  && ----->>>> ALTERADO
	    USE  ARQUIVO_PK IN 0 SHARED    && ------->>>> ALTERADO..
	ENDIF 

	SELECT ARQUIVO_PK     && ----->>>> ALTERADO
	GO TOP  

	LOCATE FOR ALLTRIM(pk) == ALLTRIM(m.tcCampo)    && ----->>> ALTERADO

	IF NOT FOUND()
		INSERT INTO ARQUIVO_PK (pk,tabela) VALUES (m.tcCampo,m.lcTabela) && ----->>> ALTERADO
                  LOCATE FOR ALLTRIM(pk) == ALLTRIM(m.tcCampo) && ----->>> ALTERADO
	ENDIF
	IF !RLOCK()		&& ----->>> ALTERADO
	    ERROR [Registro travado por outro usuário, não permitindo a geração da Chave primária],[Informe ao suporte]
		SET REPROCESS TO lnRepro
		RETURN -1
	ENDIF

	m.lnId = nextval && ----->>> ALTERADO
	REPLACE nextval WITH nextval + 1 && ----->>> ALTERADO
	UNLOCK  && ----->>> ALTERADO
	USE     && ----->>> ALTERADO

	SET REPROCESS TO m.lnRepro
	SET DATASESSION TO m.lnOldSession
	RELEASE loSession 

	IF NOT EMPTY(m.lcTabela)
		SELECT (lcTabela)
	ENDIF
	ON ERROR &lcOldError

	RETURN lnId
ENDFUNC 

PROCEDURE  _geraId_error 
	LPARAMETERS lnErro
	LOCAL lcMensagem

	m.lcMensagem = CHR(13)+[Stored Procedure _st_Gw_GeraId ] +  CHR(13) +;
	               [Erro    : ] + PADL( ERROR() ,4,[0])  +  CHR(13) +;
	               [Linha   : ] + PADL( LINENO(),4,[0])  +  CHR(13) +;
	               MESSAGE()+ CHR(13)+;
	               DTOC(DATE()) + " " + TIME() + CHR(13)  +;
	               ALIAS()+ CHR(13)



	STRTOFILE( lcMensagem,[geraid.log],1 )

ENDPROC 
>Alow Paulo,
>
>Agora na Máquina do Windows Me o erro Continua. O que devo fazer para corrigir isto ? Sera que o VFP 7 (SP1) tem algum problema com o Windwos Me ?
>
>Virge! (como diria o Paulino).... - Sei lá... Esse tipo de problema é complicado... Tem que ficar "brincando" de Sherlock Homes até encontrar! :)
>
>Quanto ao VFP 7, acredito que não. Eu tenho um cliente que tem uma rede inteira só com WinME (são 5 máquinas) e funciona bem...
>Eu, particularmente não gosto do ME... Mas, como isso entra no aspecto financeiro, alguns clientes continuam com ele... ;-)
>
>[]s!
Paulo Cesar Carneiro
desenvolvimento@controplan.com.br


"My God, what have we done?"
-- Capt. Robert Lewis, co-pilot of the Enola Gay, recalling the moment the atomic bomb exploded over Hiroshima

At 8:15 a.m. on August 6 1945
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform