MS 访问备忘录字段被截断



这个问题听起来很熟悉,但请读到最后,因为它与我在这个论坛或其他地方发现的类似问题有所不同。 我正在使用 Access 2010 构建一个简单的应用程序,以创建一些代码以在另一个系统中执行。其中一部分是将每个用户的记录数转换为单个记录,所有用户条目用逗号分隔。为了说明,这是我输入的示例:

USER    MBR
----    ---- 
USR1    DRG 
USR1    ABC 
USR1    XYZ 
USR2    123A 
USR2    ABS2

我需要这种格式:

USER   MBR_LIST
-----  ---------------
USR1   DRG, ABC, XYZ
USR2   123A, ABS2

到目前为止,如此熟悉。我使用了Allen Brown在2008年发布的代码(http://allenbrowne.com/func-concat.html),但我遇到了一个问题。 代码工作正常 - 当我调试它时,我可以看到我的输出字符串("strOut")具有单个用户的所有 MBR,正如预期的那样。请注意,有时此字符串的长度超过 7,000 个字符。因此,再次遵循周围找到的一些很好的建议,我创建了一个表,其中MBR_LIST字段设置为 MEMO,我将 Allen 的函数执行为:

INSERT INTO Table2 ( [USR], MBR_LIST )
SELECT B.USR, ConcatRelated("MBR","Table1","Table1.USR = '" & B.USR & "'","USR") AS Mbr_List
FROM (SELECT Table1.USR FROM Table1 GROUP BY Table1.USR)  AS B;

(注意:查询是这样构建的,以避免在"备注"字段上执行"分组依据",已知这会截断"备注"字段)

尽管如此,完成此操作后,我在表中的MBR_LIST字段仅显示 320 个字符 (?

我什至尝试添加一个空行,如这篇文章所示: MS Access 创建表正在截断备忘录字段,但没有成功 - 该字段仍然被截断为 320 个字符:

INSERT INTO Table2 ( [USR], MBR_LIST )
SELECT B.USR, "" as Mbr_List
FROM [Table2] as B Where (False)
UNION ALL
SELECT B.USR, ConcatRelated("MBR","Table1","Table1.USR = '" & B.USR & "'","USR") AS Mbr_List
FROM (SELECT Table1.USR FROM Table1 GROUP BY Table1.USR)  AS B;

作为最后的手段,使用 MID(),我在 SELECT 语句中创建了 20 个"块",每个 300 个字符(Mbr_1 到 Mbr_20),然后我把它们都恢复得很好。然后我把它包装到另一个 SELECT 中,这些块连接起来(Mbr_1 & Mbr_2 & ...&Mbr_20) 作为Mbr_LIST,并得到 - 320 个字符!

任何想法为什么以及如何插入/显示函数创建的完整字符串?

谢谢 部落

几年前,我在帮助程序函数中使用DLookup创建了一个解决方法。

当然,不是最快的,但如果其他任何事情都失败了......

访问查询截断备注字段

若要插入长文本,请在检索 USR 和 MBR_LIST 的值后使用 VBA:

Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Select [USR], MBR_LIST From Table2")
rs.AddNew
rs!USR.Value = USR
rs!MBR_LIST.Value = MBR_LIST
rs.Update
rs.Close
Set rs = Nothing

相关内容

  • 没有找到相关文章

最新更新