String VBA和x2B;字符串拆分

String VBA和x2B;字符串拆分,string,vba,ms-access,split,String,Vba,Ms Access,Split,我想要一个分裂的结果发生这种情况有两个潜在的原因。最常见的情况是在带有ORDER BY的SQL语句中执行此操作,在这种情况下,备注字段被截断为255个字符。但是,这似乎不太可能,因为您的函数返回的字符串长度超过255个字符,所以这不应该是一个问题。事实上,当存在ORDER BY时,绕过255个字符截断的一种方法是将备注字段包装到类似于Left([MyMemoField],4096)的函数中 另一个原因与备注字段的串联有关,在这种情况下,MemoField1&MemoField2将被截断为255个

我想要一个分裂的结果发生这种情况有两个潜在的原因。最常见的情况是在带有ORDER BY的SQL语句中执行此操作,在这种情况下,备注字段被截断为255个字符。但是,这似乎不太可能,因为您的函数返回的字符串长度超过255个字符,所以这不应该是一个问题。事实上,当存在ORDER BY时,绕过255个字符截断的一种方法是将备注字段包装到类似于
Left([MyMemoField],4096)
的函数中

另一个原因与备注字段的串联有关,在这种情况下,
MemoField1&MemoField2
将被截断为255个字符(通常以乱码结尾)。您没有说明源字段的数据类型,因此这似乎不太可能

所以,我基本上怀疑你的
Coalsce()
函数。我的第一个猜测是您定义了一个返回类型:

  Public Function Coalsce()
…将返回变量类型,因为您尚未显式设置返回类型。因此,您应该将其更改为:

  Public Function Coalsce() As String
但是,可能是您决定在所有字段都为Null时返回Null,在这种情况下,您必须将返回类型声明为Variant:

  Public Function Coalsce() As Variant
对我来说,这似乎是一种糟糕的做法,因为变体处理起来很复杂

这也可能是ByRef/ByVal问题。在这种情况下,您确实希望使用ByVal处理事情,因为ByRef情况会导致连接备注字段的问题(ByVal避免了这一问题)

尽管如此,我想知道为什么不能在SQL语句中连接字段,而不需要函数来完成

此外,您存储在“备注”字段中的返回数据会提示我对WTF的某种反应——看起来您存储的是重复数据,并且格式几乎无法使用


因此,基本上,如果没有关于您正在做什么、如何做以及为什么要做的更多细节,任何人都不可能真正回答您的问题。

VBA中的字符串不限于255个字符。您是否试图将字符串放入文本字段中?除非您将字符串变量声明为另一种类型,否则它不应该是问题所在。请发布给出错误的代码段以及任何声明(
Dim
语句)。正如前面几次指出的,
String
变量不限于255个字符。这不是“发布您的代码”,因为您没有将任何变量声明或代码显示到
Coalsce
(?Coalesce?)的任何位置。如果你不告诉我们你在做什么,我们怎么知道你做错了什么?(您还没有显示您试图使用的更新语句。)@Ken-我同意您的评论,并将删除我的答案,只要它没有被引用到其他任何地方。谢谢
  Public Function Coalsce()
  Public Function Coalsce() As String
  Public Function Coalsce() As Variant