DOCUMENT:Q191316 11-DEC-1999 [foxpro] TITLE :PRB: SET DATASESSION TO Fails From a Method of _Screen PRODUCT :Microsoft FoxPro PROD/VER:WINDOWS:5.0,5.0a,6.0 OPER/SYS: KEYWORDS: ====================================================================== ------------------------------------------------------------------------------- The information in this article applies to: - Microsoft Visual FoxPro for Windows, versions 5.0, 5.0a, 6.0 ------------------------------------------------------------------------------- SYMPTOMS ======== Attempting to set the data session of a form by calling the SET DATASESSION TO command from a method of _SCREEN fails. STATUS ====== This behavior is by design. MORE INFORMATION ================ Steps to Reproduce Behavior --------------------------- 1. Create a program that contains the following code: CLEAR ALL PUBLIC yy,Y,zz * The target session we are trying to SET TO: Y = CREATEOBJECT("zform") * A separate custom object, which can set to that session: zz = CREATEOBJECT("myobj") * A form in another session, which can set to that session: yy = CREATEOBJECT("zform2") * A member of screen, which will show the problem: _SCREEN.ADDOBJECT("z","myobj") Y.SHOW() yy.SHOW() RETURN DEFINE CLASS myobj AS CUSTOM PROCEDURE SetToActiveSession WAIT WINDOW TIMEOUT 1 ; "current ; session: "+STR(SET("datasession")) SET DATASESSION TO ; (_SCREEN.ACTIVEFORM.DATASESSIONID) WAIT WINDOW "session we want: "+; ALLTR(STR(_SCREEN.ACTIVEFORM.DATASESSIONID))+ ; ", "+ CHR(13)+ ; "session we got: "+ ; ALLTR(STR(SET("DATASESSION"))) TIMEOUT 3 ENDPROC ENDDEFINE DEFINE CLASS zform AS FORM DATASESSION = 2 ENDDEFINE DEFINE CLASS zform2 AS zform AUTOCENTER = .T. ADD OBJECT z AS COMMANDBUTTON WITH ; CAPTION="Push Me" PROCEDURE z.CLICK WAIT WINDOW TIMEOUT 1 "current session: "+STR(SET("datasession")) SET DATASESSION TO (Y.DATASESSIONID) WAIT WINDOW "session we want: "+ ; ALLTR(STR(Y.DATASESSIONID))+ ; ", "+CHR(13)+ ; "session we got: "+ ; ALLTR(STR(SET("DATASESSION"))) TIMEOUT 1 ENDPROC ENDDEFINE 2. Run the program and press the command button. Notice the data session starts out with a value of three (3) and changes to a value of two (2). 3. Change the data session from the Command window by typing the following command: " zz.SetToActiveSession()" (without the quotation marks) Notice the data session starts with a value of one (1) and successfully changes to two (2). 4. Attempt to change the data session from the Command window using a method of the _SCREEN object by typing the following: " _Screen.z.SetToActiveSession()" (without the quotation marks) Calling the _SCREEN object does not allow you to change the data session to a value of two (2). It remains a value of one (1). Additional query words: kbVFp500a kbVFp600 kbOOP ====================================================================== Keywords : Technology : kbVFPsearch kbAudDeveloper kbVFP500 kbVFP600 kbVFP500a Version : WINDOWS:5.0,5.0a,6.0 Issue type : kbprb ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 1999.