当记录号到达某个点时,备注字段显示中文字符或符号而不是实际值

时间:2014-07-24 14:40:22

标签: sql ms-access

这是我在这里的第一篇文章,我是一名数据库新手。我试图找到答案,但我不确定我是否理解它如何适用于我的案例。

我的访问程序生成一个包含不同类型字段(自动编号,短文,备忘录)的查询,然后用于创建报告。
它一直运作良好,但由于数据库已经增长,我遇到了一个问题。

我使用ID(主键)IN()where条件来过滤报告。我创建一个长字符串来获取所选记录的所有ID:

WHERE ID IN (1200,1201,1203,1226,1227,1228,1229,...)

当达到查询中的一定数量的字符(大约4000)时,我得到中文字符而不是所有备忘录字段,只有查询结果的备忘录字段(然后在报告中)。

查询大小是否有限制?不是32000个字符吗? 为什么只有选择太多记录才能显示这些字符?

是否存在可以帮助我减少查询长度的IN()替代,还是应该完全避免备注字段?

编辑:这是查询(删除一点可读):

SELECT ObjetsLegislatifs.IDobjet, ObjetsLegislatifs.TitreObjet, ObjetsLegislatifs.ContenuObjet
FROM ObjetsLegislatifs
WHERE IDobjet IN(1200,1201,1203,1226,1227,1228,1229,1230,1231,1232,)
GROUP BY ObjetsLegislatifs.IDobjet, ObjetsLegislatifs.TitreObjet, ObjetsLegislatifs.ContenuObjet
ORDER BY ObjetsLegislatifs.IDobjet;

基本上,IDobjet是一个自动编号," TitreObjet"和#34; ContenuObjet"是备忘录字段。 虽然IDobjet始终显示正确的数字,但当查询太长时,达到某个阈值时,备注字段将开始显示中文。我在查询中尝试使用文本字段,它们工作正常。

1 个答案:

答案 0 :(得分:2)

您要做的最好的事情是使用一个ID列创建一个临时表(这是一种特殊类型的表 - 请参阅here)。

生成查询时,您可以将ID插入此表并加入其中,而不是使用IN list,如下所示:

select a.*
from table a
INNER JOIN temp_table b ON a.ID = b.ID