The red icon is for error logs. One always hopes that those are empty.
The green and purple icons are for normal activity logs.
I’ll bet that wasn’t the first time you ran this procedure since opening the database.
When you do a fill operation on a shared database, Panorama first does the fill on the local data. As it does so, it checks to see if the data actually changed. Only changed data is sent to the server.
Your procedure does two fill operations. The first is:
Field ScrapText
FormulaFill LastWord(Skipper1)+", "+FirstWord(Skipper1)
Your log says:
modified 0 of 1233 records in field ScrapText of database
So I think the procedure had been run before, and the ScrapText field already contained the data. So the server did nothing.
Your next line is:
RunModifyFill
Does your database include a .ModifyFill procedure? If it does, then we need to know what is in it. I’m thinking there isn’t one since the server doesn’t seem to show any activity generated by that.
Your second fill is:
Field Skipper1
Propagate
For this, the log shows:
modified 0 of 1233 records in field Skipper1 of database
Again, no records modified. I think this is because you don’t have any empty Skipper1 cells in your database.
Now in this case, some records were definitely modified by the propagate. But they were all summary records. Summary records don’t exist on the server, so they don’t count as far as shared fills go.
I can see that the purpose of this procedure is to prepare the database for printing. You don’t actually want to keep any of the changes made by this procedure, you just want to print them. You need the scrap field so you can group by it.
Panorama actually has a feature to facilitate temporary database changes like this – the serverupdate statement. This is not new to Panorama X, in fact I think it might even have been included in Panorama 3 when using Butler servers. In the current documentation it has it’s own help page, and this is also discussed in the * Record Locking in Procedure Code* help page under the heading Temporarily Disabling Record Locking (and Server Updates). There’s an example shown that is very similar to what you are doing.
You should modify your code by putting this at the top:
serverupdate "off"
and this at the bottom:
serverupdate "on"
This essentially makes the database temporarily single user. Data changes made in this mode will not be kept permanently.
I think making this change will immediately fix your crashing problem. However, that still leaves a crashing problem for me. I suspect the problem is probably related to the state of the data. For example, if the ScrapText field was empty, then the server would have 1233 changes to process. That shouldn’t be a problem, but maybe it is. This probably why it crashes sometimes but not other times – it depends on the current state of the database. Does that ring any bells for you? Perhaps with this additional knowledge you could play with it a bit more and perhaps see a pattern.