困扰多日的DELPHI+SQL SERVER主从表查询排序问题!
已经折腾很长时间了,实在黔驴技穷了!
1、SQL数据库的排序规则是CHINESE-PRC-CI-AI-KS-WS;
2、两个表分别是主库和详细资料库,均有编号字段,通过编号实现一对多关系。
两表字段除了smallint类型就是nvarchar类型,两表都没有加任何索引;
3、在DELPHI的Data Module中,放置两个AdoQuery,分别为AQ_MAIN,AQ_DETAIL。
程序通过ADO访问SQL SERVER。
AQ_MAIN 的SQL设置为:SELECT * FROM 主库;
AQ_DETAIL的SQL设置为:SELECT * FROM 详细资料库 WHERE 编号:=P_BH
其中P_BH为编号参数
4、在AQ_MAIN的AfterScroll事件中代码如下:
procedure Tdm_Main.AQ_MAINAfterScroll(DataSet: TDataSet);
begin
if NOT AQ_DETAIL.Active then AQ_DETAIL.Open ;
if AQ_MAIN.Active AND AQ_DETAIL.Active THEN
begin
AQ_DETAIL.Parameters.ParamByName('P_BH').Value :=AQ_MAIN.FieldByName('编号').Value;
AQ_DETAIL.Requery([eoAsyncFetch]);//刷新数据
end;
end;
5、在表单中放置两个DBGRID,对应数据源分别为AQ_MAIN和AQ_DETAIL。
根据4中的代码,当在显示主库数据的表格中上下滚动时,显示详细资料库的表格应该会自动刷新。
问题现象:
1、在ACCESS数据库下上述代码完全正常。
2、升级到SQL SERVER后,在执行5时,只要主库数据记录指针移动(触发AfterScroll事件),就出现以下错误提示:
“不能比较或排序text、ntext和image数据类型,除非使用IS NULL或LIKE运算符”
让人困惑的是,数据表中没有任何索引,同时也确认没有text、ntext和image数据类型的字段。
排序规则我也换过,问题依然存在。
请教各位SQL SERVER和DELPHI高手伸出援手!