我正在使用带有delphi 7的Access数据库。我创建了一个DBGrid,并使用Adoquery显示数据库,其中包含具有学生ID,名字和姓氏标题的列,数据库中具有确切的字段名称格式。我有以下代码按升序对列标题进行排序。
procedure TReportsForm.DBGrid2DblClick(Sender: TObject);
var
str1: String;
begin
str1 := DBGrid2.SelectedField.FieldName;
ADOQuery1.Sort:= str1+' ASC';
end;
当我按下firstname和lastname列标题时,排序工作正常。但是当我按下学生ID结果时 我收到错误消息
EOleException:参数类型错误,超出可接受的范围,或彼此冲突。
这个问题与数字和字符字段有关吗?如何解决?
答案 0 :(得分:0)
我想我知道这个问题。 你看,函数ADOQuery.Sort可以应用于' WideString'数据类型。在您的数据库中,检查学生ID的数据类型。如果设置为' number'那显然ADOQuery.Sort无法应用于它,它是一种不兼容的数据类型。尝试将学生ID字段更改为' Text'数据库中的数据类型,然后重试并查看是否有效。 快速提示:在您的数据库中,如果学生ID设置为' number'那么将它改成文本可能是值得的。因为它是主键(我假设),因此不对学生ID进行计算,因此不需要将其存储为数字。 希望这有帮助! ;)
答案 1 :(得分:0)
你从未接受过上述答案,所以我认为它没有帮助。我想知道问题是否在字段名称中有空格(例如“学生ID”)。如果是这样,解决方案是稍微更改代码:
ADOQuery1.Sort:= '[' + str1 + '] ASC';
干杯