Мне нужно изменить чужой код VB, и у меня нет большого опыта работы с VB6. Мне нужно вызвать хранимую процедуру SQL2000 с помощью ADODB. Один из параметров имеет тип Binary, и это дает мне проблемы. Каждый раз, когда я создаю параметр, я получаю сообщение об ошибке «Приложение использует значение неправильного типа для текущей операции». Ошибка происходит на линии cmd.parameter.append, она даже не дает мне случайного вызова cmd.execute.Заполнение команды ADODB Двоичные параметры в VB6
Dim HexPassword As String
Dim BinPassword As String
Dim AsciiCode As Integer
Dim unitDigit As String
Dim TensDigit As String
Set obj_hash = New EDCrypt
' Returns Hash of password hex encoded
HexPassword = obj_hash.GetTextHash(Trim(txtPassword.text), haSHA1)
' Converts Hex Encoded string to Binary encoded string
Dim i As Integer
For i = 1 To 40 Step 2
unitDigit = Mid(HexPassword, i + 1, 1)
TensDigit = Mid(HexPassword, i, 1)
AsciiCode = HexStrtoInt(TensDigit + unitDigit)
BinPassword = BinPassword + Chr(AsciiCode)
Next i
conn.Open ConnectionString
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "ValidatePasswordNew"
cmd.Parameters.Append cmd.CreateParameter("LoginID", adVarChar, adParamInput, 30, UserID)
cmd.Parameters.Append cmd.CreateParameter("ShaPassword", adBinary, adParamInput, 20, BinPassword)
Я попытался оставить размер. Я получил «Объект параметра неверно определен. Непоследовательная или неполная информация была предоставлена» – Aheho
Если я не могу передать строку в adBinary, какой тип я использую? Я попробовал вариант, и это тоже не сработало. – Aheho
Используйте adVarChar. Посмотрите, как это используется в другом параметре (UserID)? Когда вы используете adVarChar, полезно использовать размер. Итак, если пароли не превышают 20 символов, сохраните это. – DOK