在使用Scriptcase进行数据库操作时,遇到了一个令人困惑的问题。在对一个现有数据库的20多张表执行增删改查操作时,在生成Scriptcase网格的源代码时遇到了错误。这个错误是在调整网格的SQL查询并尝试重新生成代码时发生的。错误信息“Search fields undefined”直到点击了状态栏右侧的文件夹图标才显示出来。
起初,怀疑是SQL查询的问题,所以检查了网格设置,但发现在Grid>SQL菜单中输入了正确的SQL查询。同时,网格的搜索模块也在Grid Modules设置中被启用了。[如果禁用网格的搜索模块,错误消息会消失,代码生成也会成功——但这种情况下就没有搜索功能了。]换句话说,网格似乎没有问题。
那么问题出在哪里呢?在谷歌上搜索了这个错误消息,只找到了一个包含提示的讨论串:
The solution: grid_customers…Left:Search…Fields Positioning…middle:the ‘valami’ push right !!!.
不幸的是,这个提示太模糊了,或者可能是针对Scriptcase的旧版本。
“字段定位”选项到底在哪里?错误消息的原因是什么?经过几个小时的尝试和错误,找到了解决方案。显然,对于每个Scriptcase网格,需要定义几组字段,这些字段将在列表视图模式(从Grid > Edit Fields菜单),记录详细视图模式(从Grid > Details > Setting菜单),以及搜索模式(从Search > Advanced Search/Quick Search/Dynamic Search > Select Fields菜单)中显示。虽然这些字段通常会自动生成,但快速检查发现这个网格的搜索字段配置确实是空的:
通过按下>>按钮来为所有现有字段配置搜索:
Grid > Edit Fields > Add Fields
现在代码生成成功了。所以解决方案就是简单地去网格的搜索设置中重新配置要搜索的字段。开发时间就这样浪费在了一个微不足道的问题上……
但是为什么这个网格的搜索字段列表突然变空了呢?猜是因为Scriptcase总是在SQL查询更改时尝试重新填充网格设置中的显示/搜索字段。一旦检测到SQL查询中的错误,显示字段将不会被填充,并且会用一些默认值填充,而搜索字段列表将被清空。如果这些错误后来被修正,显示字段将再次用正确的条目填充,但搜索字段列表仍然为空,导致错误“Search fields undefined”。这可能是Scriptcase的一个bug,但无论如何,这个错误消息在这里一点帮助都没有。