【问题标题】:Concatenate multiple fields where some fields are empty连接多个字段,其中某些字段为空
【发布时间】:2020-06-23 22:31:54
【问题描述】:

我有一个名为 tblFriends 的表,见下文:

我想连接第一行,但列数每天都在波动。

假设字段名称为 1、2、3、4...30(其中 30 是可能的最大字段数。)

如何连接这些字段中的所有字符串文本?另外,它会导致空字段出错吗?例如,如表所示,如果只有 4 个字段包含记录,如果我仍然尝试连接所有 30 个字段,是否会出错?

这是我计划使用的代码,但它似乎不起作用:

Dim strSQLCat As String

strSQLCat = "UPDATE tblFriends SET 31 = CONCAT( 1 & ',' & 2 & ',' & 3 & '....' & 30) Where Record = 1;"

DoCmd.RunSQL strSQLCat

【问题讨论】:

  • “不起作用”意味着什么 - 错误消息,错误结果,没有任何反应。将字段名称括在 [ ] 中。如果字段不存在(找不到字段名称)则会出错,但如果字段为空则不会。为什么要保存这个计算结果?需要时计算。
  • 它确实给了我一个错误,说“运行时错误'3085'表达式中未定义函数'CONCAT'。concat 不适用于access/sql吗?
  • 对不起,我错过了,只看到了 & 连接。不,Access 没有 Concat() 函数。既然要与 & 字符连接,为什么还需要它?
  • 如何将第一行的所有文本放在一个字段中(字段 31,其中 Record = 1)?
  • 就像你正在做的那样使用&,并在它的末尾加上一个As FieldName来给它一个字段名。不需要CONCAT - 这不是 Access。并且使用数字作为字段名称不是很好的做法。

标签: sql vba ms-access


【解决方案1】:

因为字段名只有数字,所以用[]括起来:

CurrentDb.Execute "UPDATE tblFriends SET [31] = [1] & ',' & [2] & ',' & [3] & . . ."

建议不要将此计算值保存到表中,而是在需要时在查询中计算。 SELECT tblFriends.*, [1] & "," & [2] & "," & [3] & . . . AS [31] FROM tblFriends;

【讨论】:

  • CurrentDb.Execute "UPDATE tblCat SET [31] = [1] & ',' & [2] & ',' & [3]" 给我一个错误提示,“运行时错误“424”:需要对象”
  • 表中真的有字段 31 吗?我使用了错误的表名吗?请参阅修改后的答案。
  • 无论我做什么,它都会给我一个错误提示,“运行时错误'424':需要对象”
  • 是的,我有字段 31 并且表名是正确的。
  • Dim strSQLCat As String strSQLCat = "SELECT tblFriends (1 & ',' & 2 & ','...... & 30) AS 31 WHERE Record = 1;" DoCmd.RunSQL strSQLCat
猜你喜欢
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-22
  • 2012-03-06
  • 2021-09-24
相关资源
最近更新 更多