MS访问数据库不允许在SQL查询中将字段与“备注”数据类型进行比较。有没有办法在VBA中做到这一点?如果备忘录> 255个字符如何比较vba中'备注'数据类型的字段?
回答
当使用记录的大小,可以对它们进行比较
简单的比较不工作。
表:表1(INT,备忘录,备忘录)
id memo1 memo2 1 A B 2 D C
脚本:
Public Sub test()
Dim conn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim strSql As String
Set conn = CurrentProject.Connection
strSql = "select * from Table1"
rst.Open strSql, conn
rst.MoveFirst
While Not rst.EOF
Debug.Print rst("memo1") > rst("memo2")
rst.MoveNext
Wend
rst.Close
conn.Close
End Sub
和输出:
False
True
那是什么意思?
更新:它工作正常,我用的4000个字符了长度字段,只是测试它,也长度功能工作正常(VBA从进入2003)
问候,彼得
如果备忘录大小大于255个字符,它就不起作用 – 2009-04-09 09:57:31
只是做了一个快速测试,对我来说它工作得很好(我测试了'='运算符,比较了维基百科的文本,相同时为真,改变点时为False在页面的末尾) 字段的长度是4264,长度运算符也工作。 – Peter 2009-04-09 10:21:05
我不确定你为什么发布ADO示例,因为它在Access中的VBA中。在我看来,DAO将是这类事情的明显选择。 – 2009-04-09 21:51:16
你可能有具体一点,但这个简单的情况下,一些工程确定没有错误:
CREATE TABLE TestMemo (memo1 MEMO, memo2 MEMO)
;
INSERT INTO TestMemo (memo1, memo2) VALUES ('Blah', 'Blah')
;
INSERT INTO TestMemo (memo1, memo2) VALUES ('123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A', '123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789A123456789Z')
;
SELECT memo1, memo2
FROM TestMemo
WHERE memo1 = memo2
;
我知道,这处截断255个字符。这是你的问题吗? - 编辑:我测试了它的值超过255个字符,并没有被截断。
255个字符是问题 – 2009-04-09 10:01:38
我的测试显示截断不会在等于比较时显示。您是否正在做其他事情来导致截断GROUP BY或UNION也许? – onedaywhen 2009-04-09 11:26:26
我想最好的办法是将两个备忘录字段保存到2个文件中,然后与文件进行比较。
- 1. 记录集中的备注数据类型字段
- 2. 比较数据类型
- 3. 蟒数据类型比较
- 4. 如何比较无关类的字段?
- 5. 如何使用Excel VBA从Access数据库中提取备注字段?
- 6. django模型字段比较
- 7. 如何比较asp.net中的两个数据库表字段
- 8. 如何比较YII2中的两个数据库表字段?
- 9. 如何比较FeathersJS中的数据库字段
- 10. 如何比较SQL中的文本数据类型
- 11. 如何比较where子句中的varbinary数据类型
- 12. 与Scala的数字类型比较?
- 13. 如何使用.NET提取FoxPro备注字段中的数据?
- 14. 不使用比较的数据类型的比较
- 15. 比较数据集的列类型
- 16. 如何比较类型
- 17. 如何比较VARIANTARG类型
- 18. 如何比较MYSQL中的YEAR类型?
- 19. INT数据库字段被如何比VARCHAR类型
- 20. 如何比较旧数据类型值与新数据类型值
- 21. 如何比较通用参数类型?
- 22. 如何在SQL Server中比较图像数据类型
- 23. 如何使用.NET从FoxPro备注字段中提取数据?
- 24. 比较NSString到SQLite数据库字段
- 25. 如何比较django中的两个模型字段?
- 26. PHP数据类型比较不匹配
- 27. SQL Server XML数据类型LIKE比较
- 28. 如何比较变量名称的数据库字段?
- 29. 比较类型
- 30. 如何比较unicode类型与中文python中的str类型?
你能提供你正试图运行的查询吗?这是SQL的链接表吗?我做了一个测试,并且没有任何比较备忘值的麻烦。 – JohnFx 2009-04-09 18:43:43
Onedayone的评论下面是你需要开始的地方。如果您的查询具有GROUP BY或UNION(或在某些版本的Access中,具有ORDER BY),它会将备忘录截断为255个字符。 – 2009-04-09 21:53:43