PRB: BROWSE FIELDS Results Inconsistent in 1-to-Many Relation

Last reviewed: April 30, 1996
Article ID: Q117709
The information in this article applies to:
  • Microsoft Visual FoxPro for Windows, version 3.0
  • Microsoft FoxPro for Windows, versions 2.5x, 2.6, 2.6a
  • Microsoft FoxPro for MS-DOS, versions 2.0, 2.5x, 2.6, 2.6a

SYMPTOMS

The records in the child table of a one-to-many relationship do not update properly under certain conditions.

RESOLUTION

Issue a GO RECNO() command after returning to the parent table. This forces FoxPro to refresh the one-to-many relationship, and allows the update of the BROWSE results.

STATUS

This behavior is by design. FoxPro cannot know what the developer is attempting to do, and allows the child table data to be read from wherever the record pointer has moved. By refreshing the relationship between the two tables with the GO RECNO() command, the developer is given the option to determine which data should be returned from the child, the old information or the updated information.

MORE INFORMATION

Steps to Reproduce Behavior

  1. Create two physical tables as described below:

          PARENT.DBF                      CHILD.DBF
          -----------------------------------------------------------
    
          IDNO(C,5)   NAMES(C,10)         IDNO(C,5)      CITIES(C,10)
          111         Sam                 114            Fairbanks
          112         Mary                113            Houston
          113         Beth                115            Phoenix
          114         Larry               111            Dover
          115         Pat                 112            Buffalo
                                          111            Dallas
                                          112            Portland
    
    

  2. Run the following code in a program. The name of the program does not matter.

          *Open up the tables, and set up the one-to-many relationship
          USE Parent IN 1
          USE Child IN 2
          SELECT Parent
          INDEX ON IDNO TAG IDNO
          SET ORDER TO IDNO
          SELECT Child
          INDEX ON IDNO TAG IDNO
          SET ORDER TO IDNO
          SELECT Parent
          SET RELATION TO idno INTO Child
          SET SKIP TO Child
          SELECT Parent
    

          *Information window, and the first BROWSE FIELDS command displays
          *correctly
          WAIT WINDOW "Please note how the tables line up appropriately." ;
    
             +CHR(13)+"Hit ESC to continue" NOWAIT
          BROWSE FIELDS parent.idno, parent.names, child.idno, child.cities
    
          *Select another record in the child for testing purposes, often a
          *SEEK() might be performed here in an actual meaningful program
          SELECT child
          GO BOTTOM
    
          *Reselect Parent table
          SELECT parent
    
          *Information window, and the incorrect results from the BROWSE
          *FIELDS command
          WAIT WINDOW "Now they don't appear right!!" + CHR(13)+ ;
             "Hit ESC to continue" NOWAIT
          BROWSE FIELDS parent.idno, parent.names, child.idno, child.cities
    
          *The resolution, an information window, and the corrected results
          *from the BROWSE FIELDS command
          GO RECNO()
          WAIT WINDOW "That fixed it !!" + CHR(13) + "Hit ESC to continue" ;
          NOWAIT
          BROWSE FIELDS parent.idno, parent.names, child.idno, child.cities
    


Additional reference words: VFoxWin 3.00 FoxDos FoxWin 2.00 2.50 2.50a
2.50b 2.60
refresh
database
2.60a
KBCategory: kbprg kbprb
KBSubcategory: FxprgBrowse


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.

Last reviewed: April 30, 1996
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.