ID: Q107555
2.50 2.50a WINDOWS kbprg kbfixlist kbbuglist
The information in this article applies to:
Report variables initialized through a user-defined function (UDF) in a self-referential fashion (for example, memvar = memvar + 1) return improper values.
Microsoft has confirmed this to be a problem in the Microsoft products listed at the beginning of this article. This problem was corrected in FoxPro 2.5b for Windows.
1. From the Command window or a program, execute the following code. It
will create two sample tables and indexes, populate them with data, and
set up a one-to-many relationship.
***Start sample code***
CLOSE DATABASES
SET SAFETY OFF
CREATE TABLE parent (id_num C(3))
INSERT INTO parent (id_num) VALUES ('001')
SELECT 0
CREATE TABLE child (id_num C(3) ,chld_total N(4,2))
INDEX ON id_num TAG id_num
FOR i=1 TO 5
INSERT INTO child (id_num, chld_total) VALUES ('001',i)
NEXT
SELECT parent
SET ORDER TO TAG id_num OF child.cdx IN child
SET RELATION TO id_num INTO child ADDITIVE
SET SKIP TO child
SET SAFETY ON
***End sample code***
2. Create a report with the parent.id_num and child.chld_total fields in
the Detail band.
3. Create a data grouping based on parent.id_num.
4. Create a report variable with these properties:
Name: memvar
Value to store: memvar
Initial value: memvar + child.chld_total
Release after report: Checked
Reset: parent.id_num
Calculate: Nothing
5. Create a Summary band and place a field in it based on memvar.
6. Save the report and the environment and name the report SELF_REF.FRX.
NOTE: Saving the environment doesn't affect the behavior of the report.
7. Issue the following commands in the Command window:
GO TOP
REPORT FORM self_ref.frx PREVIEW ENVIRONMENT
Note the value in the Summary band--it is 3 when it should be 1.
Additional reference words: FoxWin 2.50 2.50a buglist2.50a fixlist2.50b KBCategory: kbprg kbfixlist kbbuglist KBSubcategory: FxprgGeneral
Keywords : FxprgGeneral kbbuglist kbfixlist
Version : 2.50 2.50a
Platform : WINDOWS
Solution Type : kbfix
Last Reviewed: October 16, 1997