IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Erreur de conversion Varchar to Integer


Sujet :

Développement SQL Server

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 218
    Par défaut Erreur de conversion Varchar to Integer
    Bonjour,

    J'ai creee une procedure stockee sur SQLSERVER et j essaye de la lancer avec VBA sur MSACCESS.
    La procedure doit retourner la valeur de la cle primaire d'un champ nouvellement insere.
    Ca marche tres bien avec MS SQL management studio.

    Mais avec CBA, j'obtiens une erreur comme quoi SQLSERVER ne peut transformer un VARCHAR en integer, ce que je ne comprends pas parce qu'il ne devrait pas essayer de le faire.
    En tout cas je ne demande pas qu il le fasse.
    Ci-dessous la procedure stockee:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Create proc spSetLogonTime
    @logID int output,
    @UserId varchar(10),
    @logtime datetime
    as begin
       Insert into T_Log (User_Id,Log_on_Date) Values(@UserId ,@logtime)
       Select @logID=log_id from T_log where user_id = @userID and log_on_date = @logtime
    End
    Ca marche tres bien comme ca et la proecdure retourne la valeur attendue:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Declare @myID  int
    Execute spSetLogonTime @UserId='BZ', @logtime='2:30', @logID = @myID out
    print @myID
    Et le code VBA qui ne marche pas ( erreur de conversion Varchar to int)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
        Dim adoConn As New ADODB.Connection
        Dim adoCommSP As New ADODB.Command
        dim activeUser_ID  as string
        Dim user_Param As ADODB.Parameter
        Dim logOnTime_Param As ADODB.Parameter
        Dim logID_Param As ADODB.Parameter
     
        adoConn.ConnectionString = "Driver={SQL Server};Server=monServeur; Database=maBase; Trusted_Connection=yes;"
        adoConn.Open
        adoCommSP.ActiveConnection = adoConn
     
        adoCommSP.CommandType = adCmdStoredProc
        adoCommSP.CommandText = "maprocedure"
     
       logTime = Now() 
       activeUser_ID = "SuperUSER"
     
        Set user_Param = adoCommSP.CreateParameter("@userID", adVarChar, adParamInput, 10, activeUser_ID)
        Set logOnTime_Param = adoCommSP.CreateParameter("@logtime", adDBTimeStamp, adParamInput, 10, logTime)
        Set logID_Param = adoCommSP.CreateParameter("@logID", adInteger, adParamOutput, 200)
     
        adoCommSP.Parameters.Append user_Param 
        adoCommSP.Parameters.Append logOnTime_Param
        adoCommSP.Parameters.Append logID_Param
       adoCommSP.Execute

    Vous avez une idee de pourquoi j'obtiens mon erreur? J'ai beau chercher... Je m arrache les cheveux la...
    MERCI

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Récrivons d'abord votre procédure correctement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Create proc spSetLogonTime
    @logID int output,
    @UserId varchar(10),
    @logtime datetime
    as 
    begin
     
       SET NOCOUNT ON;
     
       Insert into T_Log (User_Id,Log_on_Date) Values(@UserId ,@logtime);
     
       SET @logID = SCOPE_IDENTITY();
     
    End
    La fonction SCOPE_IDENTITY() récupère l'auto incrément qui vient juste d'être généré dans l'étendue du code de la routine.

    Pour l'exécution Access, tracé la pile d'appel à l'aide du débogueur et vous trouverez ce qui ne vas pas. Sans doute une inversion des arguments....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 218
    Par défaut
    Merci pour la reecriture
    2 questions viennent a moi

    LA maniere dot je l ai ecrite pourrait elle poser un probleme plus tard?
    Et a quoi sert:

    MErci

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par anikeh Voir le message
    Merci pour la reecriture
    2 questions viennent a moi

    LA maniere dot je l ai ecrite pourrait elle poser un probleme plus tard?
    Oui, parce que le "logtime " ne peut garantir l'unicité.
    1) si deux utilisateurs distincts insère au même moment
    2) s'il y a insertion de plusieurs lignes en même temps

    Et a quoi sert:

    par défaut les procédures stockées sont en mode débogage ce qui signifie que SQL Server renvoie sans arrêt des messages concernant chaque opération relationnelle effectuée dans la procédure. Cela a un coût et pénalise les performances, et comme c'est très difficile à récupérer comme info en dehors de SSMS cela ne sert à rien....

    A +

    MErci
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur de conversion du type de données varchar en numeric.
    Par CodeWalker dans le forum QlikView
    Réponses: 6
    Dernier message: 12/12/2016, 16h57
  2. Erreur de conversion du type de données varchar en bigint
    Par lacigale dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/01/2013, 10h03
  3. Erreur de conversion de type, varchar vers datetime
    Par Marc_3 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/06/2012, 21h46
  4. [Débutant] Erreur de conversion du type de données varchar en float
    Par nanox dans le forum C#
    Réponses: 2
    Dernier message: 02/12/2011, 11h53
  5. Erreur conversion varchar en bigint dans un SUM
    Par bdtatr dans le forum Langage SQL
    Réponses: 1
    Dernier message: 05/11/2008, 14h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo