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

MFC Discussion :

[VC6][URGENT] SQLRowCount retourne un rowcount de -1


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Vow
    Vow est déconnecté
    Membre éprouvé Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Par défaut [VC6][URGENT] SQLRowCount retourne un rowcount de -1
    Bonjour,

    Je cherche depuis hier pourquoi ma variable nLignes retourne -1 à chaque fois que je fais une requête SELECT (même toute simple) via la fonction SQLExecDirect :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iErrCode = SQLRowCount(hStmt, &nLignes);
    Certains sites disent que ça vient du driver ODBC.
    Je fais mes tests sur une base SQL Server. Hors je pense pas que le driver de base {SQL Server} (sur Windows 2000 Pro) soit dépourvu de cette fonctionnalité.

    Vous avez une idée ?
    Merci

  2. #2
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut
    c'est peut-être une remarque con mais tu as essayé ta requête dans l'interface de SQL server et est-ce qu'elle marche ?
    Si oui, est-ce que ton login à les droits de faire des SELECT, UPDATE sur cette base ?

  3. #3
    Vow
    Vow est déconnecté
    Membre éprouvé Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Par défaut
    Oui pour les deux

  4. #4
    Membre chevronné
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Par défaut
    ben dans la MSDN ils disent ça :
    RowCountPtr

    Points to a buffer in which to return a row count. For UPDATE, INSERT, and DELETE statements, for the SQL_ADD, SQL_UPDATE_BY_BOOKMARK, and SQL_DELETE_BY_BOOKMARK operations in SQLBulkOperations, and for the SQL_UPDATE or SQL_DELETE operations in SQLSetPos, the value returned in *RowCountPtr is the number of rows affected by the request or –1 if the number of affected rows is not available.
    ...donc effectivment je pense que t'on hypothèse est la bonne.
    J'imagine que t'as essayé de chercher un update du Driver, et du system.

    Si c'est le cas, je t'avoue que je vois pas...

  5. #5
    Vow
    Vow est déconnecté
    Membre éprouvé Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Par défaut
    J'avoue ne pas avoir pensé à regarder un update du driver. Je regarderai ça à mon retour.
    Merci encore.
    @++

  6. #6
    Vow
    Vow est déconnecté
    Membre éprouvé Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Par défaut
    Bon, un peu de retard mais voilà le résultat : la mise à jour ne change rien, j'ai toujours -1 ...

  7. #7
    mat.M
    Invité(e)
    Par défaut
    Il faut tester iErr , code retour , et non pas le nombre de lignes nLignes !

    Si nLignes vaut -1 c'est qu'il ya un problème cela va de soit
    Or toujours selon le MSDN il ya différent codes d'erreur :

    Returns

    SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, or SQL_INVALID_HANDLE.

    Diagnostics

    When SQLRowCount returns SQL_ERROR or SQL_SUCCESS_WITH_INFO, an associated SQLSTATE value can be obtained by calling SQLGetDiagRec with a HandleType of SQL_HANDLE_STMT and a Handle of StatementHandle. The following table lists the SQLSTATE values commonly returned by SQLRowCount and explains each one in the context of this function; the notation "(DM)" precedes the descriptions of SQLSTATEs returned by the Driver Manager. The return code associated with each SQLSTATE value is SQL_ERROR, unless noted otherwise.

    SQLSTATE Error Description
    01000 General warning Driver-specific informational message. (Function returns SQL_SUCCESS_WITH_INFO.)
    HY000 General error An error occurred for which there was no specific SQLSTATE and for which no implementation-specific SQLSTATE was defined. The error message returned by SQLGetDiagRec in the *MessageText buffer describes the error and its cause.
    HY001 Memory allocation error The driver was unable to allocate memory required to support execution or completion of the function.
    HY010 Function sequence error (DM) The function was called prior to calling SQLExecute, SQLExecDirect, SQLBulkOperations, or SQLSetPos for the StatementHandle.
    (DM) An asynchronously executing function was called for the StatementHandle and was still executing when this function was called.

    (DM) SQLExecute, SQLExecDirect, SQLBulkOperations, or SQLSetPos was called for the StatementHandle and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

    HY013 Memory management error The function call could not be processed because the underlying memory objects could not be accessed, possibly because of low memory conditions.
    HYT01 Connection timeout expired The connection timeout period expired before the data source responded to the request. The connection timeout period is set through SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
    IM001 Driver does not support this function (DM) The driver associated with the StatementHandle does not support the function.

    Soit c'est la version de MDAC qui est à mettre en cause soit c'est un problème SQL -SERVER

    Sinon chercher sur le disque d'installation de VC++ catégories SAMPLES il ya des exemples d'utilisation de SQLRowCount et des API ODBC

  8. #8
    Vow
    Vow est déconnecté
    Membre éprouvé Avatar de Vow
    Inscrit en
    Janvier 2003
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 259
    Par défaut
    Je ne suis pas débile quand même
    iErrCode est égal à SQL_SUCCESS (soit la valeur 0).

    Quant à la mise à jour MDAC, ça n'a rien changé

  9. #9
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par Vow
    Je ne suis pas débile quand même
    iErrCode est égal à SQL_SUCCESS (soit la valeur 0).

    Quant à la mise à jour MDAC, ça n'a rien changé
    alors à ce moment -là examiner les exemples du MSDN dont j'ai parlé

Discussions similaires

  1. Retourner un talbeau
    Par taupin dans le forum C
    Réponses: 7
    Dernier message: 19/01/2003, 04h22
  2. [Manip de fichiers] Fonction retournant des infos
    Par sans_atouts dans le forum C
    Réponses: 3
    Dernier message: 24/07/2002, 14h16
  3. URGENT: retour de string
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 09h47
  4. Réponses: 5
    Dernier message: 12/06/2002, 15h12
  5. URGENT : Zoom et changement de repère
    Par poca10 dans le forum MFC
    Réponses: 5
    Dernier message: 28/05/2002, 13h32

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