8
votes

L'application utilise une valeur du type incorrect pour l'opération en cours dans l'ASP classique

J'appelle une procédure stockée à l'aide du code suivant: xxx

ci-dessus:

  • @userid est un type "INT 'DataType
  • @usertapeid est "INT '
  • @accessToken est Nvarchar (100)
  • @tokenexpiration est le genre (2)
  • @refreshToken est Nvarchar (100)

    Mais ici, je reçois l'erreur:

    application utilise une valeur du type incorrect pour l'opération actuelle.

    Quelqu'un peut-il m'aider s'il vous plaît?


5 commentaires

Pourriez-vous également publier les valeurs dans chacune des variables que vous utilisez dans la procédure stockée et le numéro de ligne sur lequel l'erreur se produit.


Bonjour Rory, j'ai trouvé ici que, après avoir appelé la procédure stockée: les enregistrements sont insérés dans la base de données. Mais après cela, je reçois Err.Number = 3421. Je ne sais pas pourquoi cela se produit? Pouvez-vous s'il vous plaît aidez-moi.


Veuillez poster le code de la procédure stockée et nous allons essayer de voir si quelque chose peut causer une telle erreur.


Salut Rory, résolu mon problème. Ici, j'envoie @ Tokenexpiration- DateTime2 est une valeur vide. C'est pourquoi, j'ai eu cette erreur. Ici, je envoie la date d'envoi comme (). Ensuite, il exécute sans erreur. tout comment merci d'avoir aidé.


Pour référence à d'autres personnes qui peuvent atterrir ici: Si vous utilisez un paramètre d'une instruction préparée, vous devez réinterviser la propriété .Size du paramètre Objet à la valeur appropriée pour les nouvelles données avant vous modifiez la propriété .value , sinon cette erreur sera émise lorsque vous essayez de définir .value Avec des données plus grandes que la valeur précédente de .Size .


4 Réponses :


0
votes

Il est peut-être que votre extrait de code dans votre question est simplement incomplet, mais je m'attendrais à voir cette ligne présente également pour votre usage d'intention: -

 m_objCmd.CommandType = adCmdStoredProc


0 commentaires

1
votes

semble qu'il y a du débordement ou du mauvais type. Par exemple, la longueur du AccessToken code> pourrait plus de 100 ans. Vérifiez tous. Et si elle est nécessaire, convertissez des variables vers leurs sous-types (en particulier des cordes). Certains composants tiers pourraient renvoyer des variantes et la cause. I.e.

... ("@AccessToken", 202, 1, 100, CStr(AccessToken))
... ("@UserID", 3, 1, 0, CLng(UserID))
..


1 commentaires

J'ai trouvé ici que, après avoir appelé la procédure stockée: les enregistrements sont insérés dans la base de données. Mais après cela, je reçois Err.Number = 3421. Je ne sais pas pourquoi cela se produit? Quelqu'un peut-il s'il vous plaît expliquer à ce sujet?



9
votes

J'ai eu ce même problème à peine quelques jours à peine. Mon problème était débordement comme Kul-Tigin suggère ci-dessous.

J'essayais d'insérer une énorme chaîne de plus de 17 000 caractères et j'ai reçu exactement la même erreur que vous. J'ai ensuite choisi de sauvegarder la chaîne dans un fichier texte et j'ai utilisé la table en tant que localisateur de fichiers de manière à parler.

Vérifiez la longueur des valeurs ci-dessous:

  • @userid est un type de type "INT '
  • @usertapeid est 'int'
  • @accessToken est Nvarchar (100)
  • @tokenexpiration est DATATIME (2)
  • @refreshToken est Nvarchar (100)

2 commentaires

J'ai trouvé ici que, après avoir appelé la procédure stockée: les enregistrements sont insérés dans la base de données. Mais après cela, je reçois Err.Number = 3421. Je ne sais pas pourquoi cela se produit? Pouvez-vous s'il vous plaît aidez-moi.


Ne fera probablement pas beaucoup de différence, mais vous pouvez essayer de déclarer la longueur réelle de l'entrée. Au lieu de [m_objcmd.parameters.append M_OBJCMD.Creatparamètre ("@ USERTypeID", 3, 1, 0, UserTypeID)] Vous pouvez essayer [m_objcmd.parameters.append m_objcmd.createparamètre ("@ Usertypeid", 3, 1, Len ( Usertypeid) +1, UsertypeID)]



1
votes

Aujourd'hui, j'ai résolu un problème similaire en limitant la valeur de variable à la saisie d'une colonne.

E.g. Si l'une des tailles de colonne est Varcharchar (500) et la valeur de mappage contient plus de 500 caractères. Il lancera cette exception dans Adodb (VB6.0)

Vous pouvez résoudre ce problème en augmentant la taille des données de colonne ou en limitant la valeur à 500 caractères, dans VB6.0 u peut utiliser la gauche ([Nom de la variable], 500)


0 commentaires