Re: Transaction problem in VFP9 by Anders
Anders
Mon Feb 14 20:54:00 CST 2005
You don't need the line = TABLEUPDATE(0, .F., "Test"), do you?
-Anders
"Mark" <Mark@discussions.microsoft.com> wrote in message
news:0A33CA9F-BE67-43C8-B06D-CCF8018D9311@microsoft.com...
> Hi Benno,
> Next Time, you might want to read more carefully your helpfiles.
> I have changed your code in order to work - see below.
>
> hth
> Mark
>
> SET MULTILOCKS ON
> CREATE DATABASE database
> OPEN DATABASE database
>
> CREATE TABLE test (FIELD_KEY I, FIELD_DATA I)
> INSERT INTO TEST (FIELD_KEY, FIELD_DATA) VALUES (0, 0)
> CURSORSETPROP("buffering", 3, "Test")
>
> CREATE SQL VIEW MYVIEW AS SELECT * FROM test
> USE MYVIEW IN 0
> SELECT MyView
>
> CURSORSETPROP("buffering", 5, "MyView")
> CURSORSETPROP("keyfieldlist", "FIELD_KEY", "MyView")
> CURSORSETPROP("UpdatableFieldList", "FIELD_KEY, FIELD_DATA", "MyView")
> CURSORSETPROP("Tables","Test")
> CURSORSETPROP("SendUpdates",.T.)
>
> REPLACE FIELD_DATA WITH 1 IN MyView
> SAVE_VIEW()
>
> APPEND BLANK IN MyView
> REPLACE FIELD_KEY WITH 1 IN MyView
> SAVE_VIEW()
>
> BROWSE NORMAL
> SELECT Test
> BROWSE NORMAL
>
> CLOSE ALL
> RETURN
>
>
> PROCEDURE SAVE_VIEW()
> LOCAL nRecno
>
> nRecno = GETNEXTMODIFIED(0, "MyView")
> BEGIN TRANSACTION
> GOTO (nRecno) IN MyView
> IF (nRecno != 0)
> REFRESH(1, 0, "MyView")
> CURVAL("FIELD_DATA", "Test")
> ENDIF
> = TABLEUPDATE(0, .F., "MyView")
> = TABLEUPDATE(0, .F., "Test")
> nRecNo = GETNEXTMODIFIED(nRecNo,"MyView")
> END TRANSACTION
> ENDPROC
>
>
>
>
> "Benno" wrote:
>
> > Dear all,
> >
> > The code beneath generates an error in VFP9. In VFP8 it runs fine.
> >
> > The purpose of the original code is to store data from a view into the
> > database. The sample code doesn't really make sense anymore. We
> > stripped the code down to its bare minimum. It's just a way to show
> > the error.
> >
> > We don't think this code is illegal. So, is there a bug in VFP9?
> >
> > Regards,
> >
> > Roel, Bas and Benno.
> >
> >
> >
> > *=========== BEGIN CODE ============================
> >
> > CREATE DATABASE database
> > OPEN DATABASE database
> >
> > CREATE TABLE test (FIELD_KEY I, FIELD_DATA I)
> > INSERT INTO TEST (FIELD_KEY, FIELD_DATA) VALUES (0, 0)
> >
> > CREATE SQL VIEW MYVIEW AS SELECT * FROM test
> > USE MYVIEW IN 1
> >
> > CURSORSETPROP("buffering", 5, 1)
> > CURSORSETPROP("keyfieldlist", "FIELD_KEY", 1)
> > CURSORSETPROP("UpdatableFieldList", "FIELD_KEY, FIELD_DATA", 1)
> >
> > REPLACE FIELD_DATA WITH 1 IN 1
> > SAVE_VIEW()
> >
> > APPEND BLANK IN 1
> > REPLACE FIELD_KEY WITH 1 IN 1
> > SAVE_VIEW()
> >
> > PROCEDURE SAVE_VIEW()
> > LOCAL nRecno
> >
> > nRecno = GETNEXTMODIFIED(0, 1)
> > BEGIN TRANSACTION
> > GOTO (nRecno) IN 1
> > IF (nRecno > 0)
> > REFRESH(1, 0, 1)
> > CURVAL("FIELD_DATA", 1)
> > ENDIF
> > TABLEUPDATE(0, .F., 1)
> > END TRANSACTION
> > ENDPROC
> >