FIX: SHOW GETS Does Not Clear List Box on Empty Record

ID: Q105587

2.50 WINDOWS kbprg kbfixlist kbbuglist

The information in this article applies to:

SYMPTOMS

The SHOW GETS command does not clear a list box when a SET FILTER command is used to simulate a parent-child relationship.

This behavior occurs only when you are moving from a record in the "parent" database that has a matching "child" record to a parent record that does not have a matching child record. The list box displaying the child record should clear, but instead continues to display the previous values.

STATUS

Microsoft has confirmed this to be a problem in FoxPro 2.5 for Windows. This problem was corrected in FoxPro 2.5a for Windows.

MORE INFORMATION

Steps to Reproduce Problem

NOTE: In the following program, a filter is set on the INVOICES database in order to display the INO field for all INVOICES related to the current customer.

1. Create and run a program with the following code:

      CREATE TABLE customer (cno C(5), contact C(35))
      CREATE TABLE invoices (ino N(4), cno C(5))

      INSERT INTO customer (cno, contact) VALUES ;
         ('10000', '1st Computers')
      INSERT INTO customer (cno, contact) VALUES ;
         ('20000', 'A. Arts Computers')
      INSERT INTO customer (cno, contact) VALUES ;
         ('30000', 'Balance Computing Systems')

      INSERT INTO invoices (ino, cno) VALUES ;
         (1111, '10000')
      INSERT INTO invoices (ino, cno) VALUES ;
         (3333, '30000')

      SELECT customer
      GO TOP
      SELECT invoices
      SET FILTER TO invoices.cno = customer.cno
      *   (The filter controls what appears in the list box.)
      SELECT customer

      DEFINE WINDOW test ;
         FROM 0, 0 ;
         TO 10, 60

      DEFINE POPUP lpop ;
         PROMPT FIELD invoices.ino ;
         SCROLL ;
         MARGIN

      ACTIVATE WINDOW test

      @ 1, 1 SAY "Customer# "
      @ 1, 13 GET customer.cno ;
         SIZE 1,5 ;
         DEFAULT " "

      @ 2, 1 SAY "Contact"
      @ 2,13 GET customer.contact ;
         SIZE 1, 35 ;
         DEFAULT " "

      @ 4,30 GET x ;
         PICTURE "@*HN next" ;
         SIZE 2,14,1 ;
         DEFAULT 1 ;
         VALID xval()

      @ 4,7 GET y ;
         PICTURE "@&N" ;
         POPUP lpop ;
         SIZE 4, 15 ;
         DEFAULT " "

      READ CYCLE
      CLEAR ALL

      FUNCTION xval
      SELECT customer
      SKIP
      SELECT invoices
      GO TOP     && Move record pointer to update filter in INVOICES.
      SHOW GETS  && This doesn't always properly refresh the list box.

   Note that the first Customer#, "10000," and Contact, "1st
   Computers," are displayed, along with the matching Invoice number,
   "1111," in the list box.

2. Choose the Next button. The next Customer#, "20000," and Contact,
   "A. Arts Computers," display, but the invoice number is still
   '1111.' The expected behavior is for the list box to clear.

3. Choose the Next button again. The last Customer#, "30000," and
   Contact, "Balance Computing Systems," display along with the
   matching invoice number, "3333."

Additional reference words: FoxWin 2.50 buglist2.50 fixlist2.50a empty KBCategory: kbprg kbfixlist kbbuglist KBSubcategory: FxprgGeneral Solution Type : kbfix

Last Reviewed: October 14, 1997