luk*_*302 3 ms-access vba access-vba ms-access-2013
当我在ms-access 2013中使用参数创建追加查询时,任何这些参数的类型都设置为LongText查询失败并显示错误代码3001 Invalid Argument.ShortText但是,更改类型会导致工作查询.两个版本都可以通过双击访问本身中的查询来运行,但是第一个版本在通过以下代码运行时失败:
Dim db As DAO.Database
Set db = CurrentDb
Dim qdf As QueryDef
Set qdf = db.QueryDefs("NeuerFachlicherInhalt")
qdf!Inhalt = inhalte("DefaultInhalt")
qdf!Formular = inhalte("Formular")
qdf.Execute
Run Code Online (Sandbox Code Playgroud)
我插入参数的表有一个字段类型,LongText因此我希望这可以工作 - 这里问题的根本原因是什么?如果我无法指定LongTextas参数,如何传入长文本?
我认为它可能与访问中字符串的长度限制有关.究竟是什么限制?Google会将您重定向到VBA中串联和字符串的最大长度,访问有关字符串长度的问题,但我无法找到长度问题的明确答案:
ShortText?LongText?String?我在两种情况下的查询看起来像
PARAMETERS Inhalt LongText, Formular Short;
INSERT INTO FachlicherInhalt ( Inhalt, Formular )
SELECT [Inhalt] AS Expr1, [Formular] AS Expr2;
PARAMETERS Inhalt Text ( 255 ), Formular Short;
INSERT INTO FachlicherInhalt ( Inhalt, Formular )
SELECT [Inhalt] AS Expr1, [Formular] AS Expr2;
Run Code Online (Sandbox Code Playgroud)
ShortText(简单地Text在Access 2013之前)最多可以包含255个字符.LongText(Memo在Access 2013之前)最长可达1 GB,但大多数Access控件只能显示64000个字符.(编辑文本时,表单中的文本框会开始表现得很奇怪,如果它包含的内容少于64000个字符.)有关更多详细信息,请参阅Access 2013文档.
String最多可包含2 ^ 31个字符有关更多详细信息,请参见Visual Basic for Applications语言参考.
现在,您有关于QueryDef-Object中LongText参数的问题.遗憾的是,DAO不支持将LongText作为查询的参数类型,即使它允许您在查询设计中创建参数.
您有以下选项作为解决方法:
inhalte("DefaultInhalt")到查询的SQL中