Приложение использует значение неправильного типа для текущей операции в классическом ASP - PullRequest
6 голосов
/ 02 декабря 2011

Я вызываю одну хранимую процедуру, используя следующий код:

m_objCmd.CommandText = "StoredProc_Name"
m_objCmd.Parameters.Append m_objCmd.CreateParameter("@UserID", 3, 1, 0, UserID)
m_objCmd.Parameters.Append m_objCmd.CreateParameter("@UserTypeID", 3, 1, 0, UserTypeID)
m_objCmd.Parameters.Append m_objCmd.CreateParameter("@AccessToken", 202, 1, 100, AccessToken)
m_objCmd.Parameters.Append m_objCmd.CreateParameter("@TokenExpiration", 135, 1, 0, TokenExpiration)
m_objCmd.Parameters.Append m_objCmd.CreateParameter("@RefreshToken", 202, 1, 100, RefreshToken)

rsUserData.Open m_objCmd, , adOpenStatic, adLockReadOnly  

Выше:

  • @UserID - это тип данных int типа int
  • @UserTypeID это 'int'
  • @AccessToken это nVarchar (100)
  • @TokenExpiration это время данных (2)
  • @RefreshToken это nVarchar (100)

Но здесь я получаю сообщение об ошибке:

Приложение использует значение неправильного типа для текущей операции.

Может любойпомогите мне, пожалуйста.

Ответы [ 4 ]

7 голосов
/ 03 декабря 2011

У меня была такая же проблема всего несколько дней назад.Моя проблема была переполнена, как подсказывает Кул-Тигин ниже.

Я пытался вставить огромную строку длиной более 17 000 символов и получил точно такую ​​же ошибку, как и вы.Затем я решил сохранить строку в текстовом файле и использовал таблицу в качестве так называемого локатора файлов.

Проверьте длину значений в следующем:

  • @ UserID - это int типа dataType
  • @ UserTypeID - int '
  • @ AccessToken - nVarchar (100)
  • @ TokenExpiration - время данных (2)
  • @ RefreshToken - это nVarchar (100)
1 голос
/ 06 декабря 2011

Сегодня я решил аналогичную проблему, ограничив значение переменной размером столбца.

например. если один из столбцов имеет размер Varchar (500) и значение отображения содержит более 500 символов. это исключение будет выдано в ADODB (VB6.0)

Вы можете решить эту проблему, увеличив размер данных столбца или ограничив значение до 500 символов, в vb6.0 вы можете использовать Left ([variable_name], 500)

1 голос
/ 02 декабря 2011

Кажется, переполнение или неправильный тип.Например, длина AccessToken может превышать 100. Проверьте все из них.И если необходимо, конвертируйте переменные в их подтипы (особенно в строки).Некоторые сторонние компоненты могут возвращать варианты и вызывать это.то есть

... ("@AccessToken", 202, 1, 100, CStr(AccessToken))
... ("@UserID", 3, 1, 0, CLng(UserID))
..
0 голосов
/ 02 декабря 2011

Возможно, ваш фрагмент кода в вашем вопросе просто неполный, но я ожидаю увидеть эту строку и для вашего намеренного использования: -

 m_objCmd.CommandType = adCmdStoredProc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...