>>This case you should restore Grid.Recordsource programmatically:
>*** page.activate event
>This.Grid.Recordsource=This.Grid.Recordsource
>This.Grid.Refresh
>Note, that combining packing and data entry screens is abnormal application approach. It's enough to set SET DELETED ON and 'gaps' will not be visible for users.
>
>edward, the approach works fine however it poses a few more questions:
>
>1) once the grid refreshes, it displays ALL columns. how do i tell it which columns to display?
You can reset Column.Visible property, if you want change columns dynamically.
>2) where is the best place to call 'SET DELETED ON'?
The normal place is some procedure you call when you start your application. This procedure will host all SET commands. Note, that if you use Forms with Private Datasession then you should call this procedure each time you load the form.
>3)should i copy tables/indexes instead of using pack? and how often should this be done? why does pack only work from a menu and not from a control?
You shouldn't copy. You can PACK your tables/database on scheduled basis, e.g. once a month (depending how actively users delete records). PACK should work from any place, the only problem that this command will require exclusive usage of table so it may disrupt work of other users. This is why it might be done rarely enough, in some night shift.
Edward Pikman
Independent Consultant