Когда я создаю запрос на добавление в 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
Таблица, в которую я вставляю параметр, имеет тип поля LongText
, и поэтому я ожидаю, что это сработает - в чем здесь основная причина проблемы? И как я могу передать длинный текст, если я не могу указать LongText
в качестве параметра?
Я думаю, что это может быть связано с ограничениями длины строк в доступе. В чем именно заключаются эти ограничения? Google перенаправляет вас на конкатенацию и максимальную длину строки в VBA, доступ относительно вопроса о длине строк, но я не могу найти определенного ответа на вопрос (вопросы) о длине:
- какой длины может быть текст для
ShortText
? - какой длины может быть текст для
LongText
? - какой длины может быть текст для vba
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;
inhalte
является объектом Recordset, попробуйте явно указать свойство.Value
, например,inhalte("DefaultInhalt").Value
, и посмотрите, имеет ли это какое-то значение. - person Gord Thompson   schedule 19.05.2015