Subject: VPM 6.0b FIX: Error occurs when saving changes to view cursor
Applies to: VPM 6.0b
Symptoms: An error can occur when saving changes that have been made to a
view cursor. This error will occur if before saving an index tag was created
for a view cursor, the view was requeried, and an additional index tag was
created. What happens is that the two tags are created in different CDXs
instead of both tags being created in the same CDX. This happens because VFP
changes the name of the view cursor when it is requeried and the CDX gets
its name from the view cursor.
Resolution: To fix this problem, make the following changes so that all view
cursor index tags are created in the same CDX.
1. In the SetOrder method of the VPMApp class in the VPMApp class library,
change:
INDEX ON &slcExpr TAG (slcCreateTag) &slcFilterDesc
To:
slcCDX = CDX(1)
IF EMPTY(slcCDX)
INDEX ON &slcExpr TAG (slcCreateTag) &slcFilterDesc
ELSE
INDEX ON &slcExpr TAG (slcCreateTag) OF (slcCDX) &slcFilterDesc
ENDIF
2. In the Init method of the grid in the Grid_List class in the VPMCtrls
class library, change:
IF slnSearch = 2 && Case-sensitive
INDEX ON &slcControlSource TAG &slcListTag
ELSE && Not case-sensitive
slcExpr = 'UPPER('+slcControlSource+')'
INDEX ON &slcExpr TAG &slcListTag
ENDIF
To:
slcCDX = CDX(1)
IF slnSearch = 2 && Case-sensitive
IF EMPTY(slcCDX)
INDEX ON &slcControlSource TAG &slcListTag
ELSE
INDEX ON &slcControlSource TAG &slcListTag OF (slcCDX)
ENDIF
ELSE && Not case-sensitive
slcExpr = 'UPPER('+slcControlSource+')'
IF EMPTY(slcCDX)
INDEX ON &slcExpr TAG &slcListTag
ELSE
INDEX ON &slcExpr TAG &slcListTag OF (slcCDX)
ENDIF
ENDIF
3. In the Init method of the List class in the VPMGen class library, change:
IF slnSearch = 2 && Case-sensitive
INDEX ON &slcField TAG &slcTag
ELSE && Not case-sensitive
slcExpr = 'UPPER('+slcField+')'
INDEX ON &slcExpr TAG &slcTag
ENDIF
To:
slcCDX = CDX(1)
IF slnSearch = 2 && Case-sensitive
IF EMPTY(slcCDX)
INDEX ON &slcField TAG &slcTag
ELSE
INDEX ON &slcField TAG &slcTag OF (slcCDX)
ENDIF
ELSE && Not case-sensitive
slcExpr = 'UPPER('+slcField+')'
IF EMPTY(slcCDX)
INDEX ON &slcExpr TAG &slcTag
ELSE
INDEX ON &slcExpr TAG &slcTag OF (slcCDX)
ENDIF
ENDIF