Página 1 de 1

Diferenças na gravação de bds DBF e Mediator

Enviado: 10 Mar 2009 21:41
por gilsonpaulo
Olá a todos.

Estou migrando um sistema clipper 5.2e + NTX para Mediator, a migração esta sendo tranquila e simples, mas encontrei um problema que ja foi contornado, mas gostaria de ter uma opnião de alguém.

Vejam o código abaixo na parte do dbappend, desta maneira grava os dados no banco.

Código: Selecionar todos

STATIC PROCEDURE Inc31


LOCAL tqtd:=0.00,tuni:=0.00,ttot:=0.00,volta:=0,gru:=SPACE(02),cod:=SPACE(02),grucod:=SPACE(04)  
	
DO WHILE .T.


	SETCOLOR("W/B,W/B")
	@ 20,02 GET tnom PICTURE "@!K XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
	SET CURSOR ON
	READ
	SET CURSOR OFF
	IF LASTKEY() = 27
		RETURN
	ENDIF
	
	tnom1 = RTRIM(tnom)

	KEYBOARD CHR(29)	

	VNOM()

	IF LASTKEY() = 27
		LOOP
	ENDIF


	SELECT PRO
	GO TOP
	SET ORDER TO 2
	SEEK tnom1
	IF .NOT. FOUND()
		TONE(1000,2)
		LOOP
	ENDIF


	SET COLOR TO W/B,W/B
	@ 20,02 SAY DESPRO

        tuni = PRO->PRECLI

	@ 20,52 SAY tuni PICTURE "@K 99999.99"
	@ 20,43 GET tqtd PICTURE "@K 9999.99" VALID tqtd > 0
	@ 20,52 GET tuni PICTURE "@K 99999.99"
	SET CURSOR ON
	READ
	SET CURSOR OFF
	IF LASTKEY() = 27
		LOOP
	ENDIF

	ttot = tqtd*tuni


	@ 20,61 SAY ttot PICTURE "@K 999999.99"
        gru = PRO->GRUPRO
        cod = PRO->CODPRO
        grucod = gru+cod
        tnom = PRO->DESPRO

	SELECT TEMP
                TEMP->(dbAppend())
                TEMP->MATVEN:=     grucod
                TEMP->MATNOM:=     tnom
                TEMP->QTDVEN:=     tqtd
                TEMP->UNIVEN:=     tuni
                TEMP->TOTVEN:=     ttot

	SELECT TEMP
	

	EXIT	



ENDDO

RETURN
*=====================================================================================
PROCEDURE VNOM

LOCAL vetp1[6],vetp2[6],vetp3[6]

SAVE SCREEN TO ALZA


SELECT PRO
SET ORDER TO 2
GO TOP
SEEK tnom1



DO WHILE .T.

//        CALL T31P
@ 09,00 SAY "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" COLOR "N/W"
@ 10,00 SAY "³                                                                              ³" COLOR "N/W"
@ 11,00 SAY "³                                                                              ³" COLOR "N/W"
@ 12,00 SAY "³                                                                              ³" COLOR "N/W"
@ 13,00 SAY "³                                                                              ³" COLOR "N/W"
@ 14,00 SAY "³                                                                              ³" COLOR "N/W"
@ 15,00 SAY "³                                                                              ³" COLOR "N/W"
@ 16,00 SAY "³                                                                              ³" COLOR "N/W"
@ 17,00 SAY "³                                                                              ³" COLOR "N/W"
@ 18,00 SAY "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" COLOR "N/W"

	SELECT PRO
	vetp1[1] = "CODPRO"
	vetp1[2] = "DESPRO"
	vetp1[3] = "PRECLI"

	vetp3[1] = "Cod."
	vetp3[2] = "Descricao"
	vetp3[3] = "Unitario"

	SETCOLOR("N/W,W/N")
	DBEDIT(10,02,17,77,vetp1,"SAI31p","",vetp3)

	EXIT

ENDDO

RESTORE SCREEN FROM ALZA

RETURN
//==============================================================================

FUNCTION SAI31P()

Mensagem( "  ")


IF LASTKEY() = 13
	tnom1 = DESPRO
	RETURN(0)
ELSEIF LASTKEY() = 27
	RETURN(0)
ENDIF


SELECT PRO
return(1)

Desta maneira abaixo, não é gravado os campos TEMP->MATVEN E TEMP->MATNOM com mediator, mas com bancos DBF funciona.

Código: Selecionar todos

STATIC PROCEDURE Inc31


LOCAL tqtd:=0.00,tuni:=0.00,ttot:=0.00,volta:=0
	
DO WHILE .T.


	SETCOLOR("W/B,W/B")
	@ 20,02 GET tnom PICTURE "@!K XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
	SET CURSOR ON
	READ
	SET CURSOR OFF
	IF LASTKEY() = 27
		RETURN
	ENDIF
	
	tnom1 = RTRIM(tnom)

	KEYBOARD CHR(29)	

	VNOM()

	IF LASTKEY() = 27
		LOOP
	ENDIF


	SELECT PRO
	GO TOP
	SET ORDER TO 2
	SEEK tnom1
	IF .NOT. FOUND()
		TONE(1000,2)
		LOOP
	ENDIF


	SET COLOR TO W/B,W/B
	@ 20,02 SAY DESPRO

        tuni = PRO->PRECLI

	@ 20,52 SAY tuni PICTURE "@K 99999.99"
	@ 20,43 GET tqtd PICTURE "@K 9999.99" VALID tqtd > 0
	@ 20,52 GET tuni PICTURE "@K 99999.99"
	SET CURSOR ON
	READ
	SET CURSOR OFF
	IF LASTKEY() = 27
		LOOP
	ENDIF

	ttot = tqtd*tuni


	@ 20,61 SAY ttot PICTURE "@K 999999.99"

	SELECT TEMP
                TEMP->(dbAppend())
                TEMP->MATVEN:=     PRO->GRUPRO+PRO->CODGRU
                TEMP->MATNOM:=     PRO->DESPRO
                TEMP->QTDVEN:=     tqtd
                TEMP->UNIVEN:=     tuni
                TEMP->TOTVEN:=     ttot

	SELECT TEMP
	

	EXIT	



ENDDO

RETURN
*=====================================================================================
PROCEDURE VNOM

LOCAL vetp1[6],vetp2[6],vetp3[6]

SAVE SCREEN TO ALZA


SELECT PRO
SET ORDER TO 2
GO TOP
SEEK tnom1



DO WHILE .T.

//        CALL T31P
@ 09,00 SAY "ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿" COLOR "N/W"
@ 10,00 SAY "³                                                                              ³" COLOR "N/W"
@ 11,00 SAY "³                                                                              ³" COLOR "N/W"
@ 12,00 SAY "³                                                                              ³" COLOR "N/W"
@ 13,00 SAY "³                                                                              ³" COLOR "N/W"
@ 14,00 SAY "³                                                                              ³" COLOR "N/W"
@ 15,00 SAY "³                                                                              ³" COLOR "N/W"
@ 16,00 SAY "³                                                                              ³" COLOR "N/W"
@ 17,00 SAY "³                                                                              ³" COLOR "N/W"
@ 18,00 SAY "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ" COLOR "N/W"

	SELECT PRO
	vetp1[1] = "CODPRO"
	vetp1[2] = "DESPRO"
	vetp1[3] = "PRECLI"

	vetp3[1] = "Cod."
	vetp3[2] = "Descricao"
	vetp3[3] = "Unitario"

	SETCOLOR("N/W,W/N")
	DBEDIT(10,02,17,77,vetp1,"SAI31p","",vetp3)

	EXIT

ENDDO

RESTORE SCREEN FROM ALZA

RETURN
//==============================================================================

FUNCTION SAI31P()

Mensagem( "  ")


IF LASTKEY() = 13
	tnom1 = DESPRO
	RETURN(0)
ELSEIF LASTKEY() = 27
	RETURN(0)
ENDIF


SELECT PRO
return(1)
Desde ja fica aqui meu agradecimento a qualquer ajuda.