У меня есть кусок кода, который сводится к
dim stmt as dao.queryDef
dim parId as dao.parameter
set stmt = currentDB().createQueryDef("", _
"parameters id guid, ...; insert into tab (id, ... ) values ([id], ...)")
Я создал таблицу с
create table tab (
id guid,
...
)
и
alter table tab add constraint tab_pk primary key (id)
Позже я хочуприсвоить GUID для parId
:
parId.value = GuidFromString("{936DA01F-9ABD-4D9D-80C7-02AF85C822A8}")
Это назначение вызывает Ошибка времени выполнения 3421 : Data type conversion error
.
Как можно назначитьGUID переменной dao.parameter
?
Обновленный пример
Это обновленный пример, в котором используется параметр longbinary
, который не работает в моей среде: он вызывает RuntimeОшибка 3001 (неверный аргумент) при выполнении stmt.execute
.
option explicit
sub main() ' {
dim db as dao.database
set db = application.currentDB
' db.execute("drop table tab")
createTable db
insertValues db
end sub ' }
sub createTable(db as dao.database) ' {
db.execute( _
"create table tab ( " & _
" id guid, " & _
" txt char(60) " & _
")")
db.execute("alter table tab add constraint tab_pk primary key (id)")
end sub ' }
sub insertValues(db as dao.database) ' {
dim stmt as dao.queryDef
set stmt = db.createQueryDef("", _
"parameters " & _
" id longbinary, " & _
" txt char(60); " & _
"insert into tab values ([id], [txt]) ")
dim parId as dao.parameter
dim parTxt as dao.parameter
set parId = stmt.parameters("id" )
set parTxt = stmt.parameters("txt")
parId.value = GuidFromString("{936DA01F-9ABD-4D9D-80C7-02AF85C822A8}")
parTxt.value = "Hello world."
stmt.execute ' Access throws Runtime Error 3001 (Invalid argument)
end sub ' }