1. 在我记忆中一个Table绝对可以拥有多个Blob字段,
我现在没有机器验证。
2. 是不是有的Blob字段没有返回?BDE有一个设置在
Configuration/Drivers/Native/MSSQL内,叫
Blobs to Cache, 表示 BDE一次最多返回的Blob
字段数目,这个字段要根据实际情况设置,否则
庞大的数据表会返回非常缓慢。
3. 没有什么办法,只有少用Grid,多用单一记录的
显示界面,这样就可以一次只从DB中查询一条
记录了。还有一个办法是在Query打开后,执行
Query.FetchAll把所有记录全部取到客户端,
不过对于大的数据表时间很慢。
4. 例子如下:
Form内放一个TQuery, 一个TUpdateSQL构件,将
TQuery的UpdateSQL属性设置为TUpdateSQL,
CacheUpdate属性为True, 填写DatabaseName以及
SQL命令。双击UpdateSQL,生成Insert, Modify,
Delete的SQL命令。
你可以在TQuery的AfterPost, AfterDelete事件中
挂上下面语句:
Query.ApplyUpdates;
Query.CommitUpdates;
Query.Close;
Query.Open;
Query.Locate(...); //定位当前记录
这样每次一更新,自动会更新数据库。
也可以专门设置一个按钮,完成上面工作。
5. 没有别的法子。
其实在用过一段时间后,发现SQL Server 6.5并不是
一个非常好的选择。除了前面讲过的锁的问题外,前几天
我们的一个用户DBA又发现一个事情,一个数据库中的数据
表坏了,DBCC CheckDB没有法子修好,而且用Delphi查询
该库时居然使得SQL Server崩溃。
还有一个建议,用第三方构件的前提是源码,否则有
问题都不知道出在什么地方。