У меня есть приложение MS Access 2010. У меня есть форма с элементом управления inkPicture с именем InkSign, где пользователь может поставить подпись. Я храню содержимое элемента управления inkPicture в переменной варианта een с именем sig, например:
sig = Me.InkSign.Ink.save()
Теперь я могу считывать данные этого варианта в элемент управления, используя:
Dim newInk As New InkDisp
newInk.Load sig
Me.InkSign.Ink.DeleteStrokes
Me.InkSign.InkEnabled = False
Set InkSign.Ink = newInk
Me.InkSign.InkEnabled = True
Я хочу сохранить и прочитать данные подписи в таблице базы данных SQL Server.
Я пробовал это:
Private Sub btnSaveSig_Click()
Dim rst As ADODB.Recordset
sig = Me.InkSign.Ink.save()
Set rst = New ADODB.Recordset
With rst
'.CursorLocation = adUseClient
.Open "SELECT * FROM sign WHERE signID = 1", cnnC, adOpenKeyset, adLockOptimistic
If .BOF And .EOF Then .AddNew
.Fields("signDate") = Date
.Fields("signedBy") = "Pipo"
.Fields("sign") = sig
.Fields("docType") = "so"
.Fields("docID") = "1"
.Update
.Close
End With
Set rst = Nothing
MsgBox "signature saved"
End Sub
Столбец sign
имеет тип NVARCHAR(MAX)
. Данные сохраняются, но выглядят как китайские иероглифы. Но правильный ли это способ хранения этих двоичных данных?
Я пытаюсь прочитать данные обратно, но в этой строке происходит сбой: newInk.Load sig
Private Sub LoadSignature()
Dim newInk As New InkDisp
sig = Nz(cLookup("sign", "sign", "signID = 1"), "")
If IsEmpty(sig) Then Exit Sub
newInk.Load sig
Me.InkSign.Ink.DeleteStrokes
Me.InkSign.InkEnabled = False
Set InkSign.Ink = newInk
Me.InkSign.InkEnabled = True
End Sub
Функция clookup это функция, которая извлекает данные из таблицы SQL Server. Я получаю ошибку:
Недопустимый вызов процедуры или аргумент
Я думаю, что я должен использовать объект потока ADO для записи и чтения данных. Но я не знаю как.
Может кто-нибудь помочь мне заставить этот код работать?
Спасибо, Emphyrio