Ms access 记录集中具有备注数据类型的字段

Ms access 记录集中具有备注数据类型的字段,ms-access,vba,Ms Access,Vba,在where子句中使用字符串时,字符串中是否有特定数量的字符 SQL2 = "SELECT DISTINCT " & a & " AS MyString," & b & " FROM tempExtractedtbl" Set rsGenerate = CurrentDb().OpenRecordset(SQL2) Do While Not rsGenerate.EOF SQL3 = "Select intId from IPDMst where TXTl

在where子句中使用字符串时,字符串中是否有特定数量的字符

SQL2 = "SELECT DISTINCT " & a & " AS MyString," & b & " FROM tempExtractedtbl"
Set rsGenerate = CurrentDb().OpenRecordset(SQL2)
Do While Not rsGenerate.EOF
    SQL3 = "Select intId from IPDMst where TXTliteral='" & 
    rsGenerate.Fields("MyString").Value & "'"

    Set temprsGenerate = CurrentDb().OpenRecordset(SQL3)
此处,tempExtractedtbl中MyString的值为:

PO_EDGE_00503|Device Charge_1|Device 
Type~Smartphone~Manufacturer~Apple~Model~iPhone 6~Capacity~32 
GB~Colour~Space Grey~Blue Tick~FALSE~4GX~TRUE~Splash Proof~FALSE~Removable 
Battery~FALSE~Expandable Memory~FALSE~HD Video 
Recording~TRUE~NFC~TRUE~Featured~FALSE~Bonus Gift~FALSE~Operating 
System~ios~Hot Buy~FALSE~Root Offering~Mobility Offer~
但是当它存储在记录集中时,MyString的值被修剪为255个字符。当我执行

?rsGenerate.Fields("MyString").Value
在即时窗口中,我得到MyString作为

PO_EDGE_00503|Device Charge_1|Device 
Type~Smartphone~Manufacturer~Apple~Model~iPhone 6~Capacity~32 
GB~Colour~Space Grey~Blue Tick~FALSE~4GX~TRUE~Splash Proof~FALSE~Removable 
Battery~FALSE~Expandable Memory~FALSE~HD Video 
Recording~TRUE~NFC~TRUE~Featured~F
当我执行SQL3时,当MyString被修剪时,我会出现以下错误


备注字段的记录集是否有任何限制,因为MyString是一个具有备注数据类型的字段。有没有办法在一个记录集中存储长度超过255个字符的字符串并使用它?

DISTINCT
和备注字段不在一起

如果您要求Access根据备注处理数据:聚合、消除重复、格式化等,Access将截断备注

唯一性:由于您要求查询只返回不同的值,Access必须将备注字段与所有其他记录进行比较。比较会导致截断

从SELECT SQL中删除DISTINCT。

您可能需要创建另一个查询,该查询在不使用备注的情况下选择不同的值,然后将其用作另一个查询的源,该查询在不进行重复数据消除的情况下检索备注。

distinct
和备注字段不在一起

如果您要求Access根据备注处理数据:聚合、消除重复、格式化等,Access将截断备注

唯一性:由于您要求查询只返回不同的值,Access必须将备注字段与所有其他记录进行比较。比较会导致截断

从SELECT SQL中删除DISTINCT。

您可能需要创建另一个查询,该查询在没有备忘录的情况下选择不同的值,然后将其用作另一个查询的源,该查询在不进行重复数据消除的情况下检索备忘录。

…错误将是?(将它们添加到问题的底部)我无法复制这一点。where语句在SQL查询中存储时,受SQL语句中允许的字符总数65536个字符的限制。如果你指的是一个表,我想你可以将字符串增加到1GB,但我还没有尝试在WHERE语句中使用这些语句……那么错误会是什么呢?(将它们添加到问题的底部)我无法复制这一点。where语句在SQL查询中存储时,受SQL语句中允许的字符总数65536个字符的限制。如果你指的是一个表,我想你可以达到1GB的字符串,但我还没有尝试过这些在WHERE语句中是否有效。嗨,Andre,谢谢你的回答。我已删除了与SQL2不同的内容,但出现了相同的错误。请在打开记录集之前显示
SQL2
的最终内容。(编辑您的问题并添加到那里)@YashR.Hi Andre,当我从SQL2中删除Distinct时,我得到了MyString的确切值。但当我尝试执行Set temprsGenerate=CurrentDb().OpenRecordset(SQL3)时,它给出了错误。当表的字段为/are memo时,记录集是否有任何限制?SQL3的值为:从IPDMst中选择intID,其中TXTliteral='PO_EDGE_00503 | Device Charge|1 | Device Type~ Smartphone~ Manufacturer~ Apple~ Model~ iPhone 6~ Capacity~32GB~COLOR~Space GRY~Blue Tick~FALSE~4GX~TRUE~防溅~FALSE~可移动电池~FALSE~可扩展内存~FALSE~高清视频录制~TRUE~NFC~TRUE~特色~FALSE~奖金礼品~FALSE~操作系统~ios~热销~FALSE~根产品~Mobility Offer~’当我在查询设计中复制SQL3并在MS Access中运行它时,会出现错误。当我将where子句中的字符串大小减少到255个字符时,它就起作用了。我不知道我错过了什么。嗨,安德烈,谢谢你的回答。我已删除了与SQL2不同的内容,但出现了相同的错误。请在打开记录集之前显示
SQL2
的最终内容。(编辑您的问题并添加到那里)@YashR.Hi Andre,当我从SQL2中删除Distinct时,我得到了MyString的确切值。但当我尝试执行Set temprsGenerate=CurrentDb().OpenRecordset(SQL3)时,它给出了错误。当表的字段为/are memo时,记录集是否有任何限制?SQL3的值为:从IPDMst中选择intID,其中TXTliteral='PO_EDGE_00503 | Device Charge|1 | Device Type~ Smartphone~ Manufacturer~ Apple~ Model~ iPhone 6~ Capacity~32GB~COLOR~Space GRY~Blue Tick~FALSE~4GX~TRUE~防溅~FALSE~可移动电池~FALSE~可扩展内存~FALSE~高清视频录制~TRUE~NFC~TRUE~特色~FALSE~奖金礼品~FALSE~操作系统~ios~热销~FALSE~根产品~Mobility Offer~’当我在查询设计中复制SQL3并在MS Access中运行它时,会出现错误。当我将where子句中的字符串大小减少到255个字符时,它就起作用了。我不知道我错过了什么。