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

C Discussion :

Problème résultat requête SQL avec lien ODBC Access


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 17
    Points
    17
    Par défaut Problème résultat requête SQL avec lien ODBC Access
    Bonjour,

    J'ai un soucis avec une fonction d'un de mes programmes. En effet je n'arrive pas à récupérer le résultat d'une requête sql simple sous Access. J'essaie de récupérer un enregistrement de type texte sous Access dans un table de 4 colonnes (2ème colonne).

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
     
    string corresFour(string numFour)
    {
    //variables base de données
        static SQLHANDLE  hEnv;        //pointeur sur un environnement
        static SQLHANDLE  hDbc;        //pointeur sur une connexion
        int iOut;
        char strOut[256];
        //acces a la base de donnée
        char szDSN[256] = "driver={Microsoft Access Driver (*.mdb)};dbq=[CORRES_MFGPRO.mdb];";
        //ordres SQL
        char szSql[256];
        sprintf(szSql,"SELECT * FROM CORRES_FOUR where CODE_SITE_FOUR_ORACLE = \"%s\"",numFour.c_str());
        cout << "szSql = " << szSql << endl;
        system("PAUSE");
     
        long     ret1,ret2,ret3,ret4;
        char  corres1[128];
        char  corres2[128];
        char  corres3[128];
        char  corres4[128];
     
        // 1 - Connexion a la BDD Access
        SQLAllocEnv(&hEnv);
        SQLAllocConnect(hEnv, &hDbc);
        if((SQLDriverConnect(hDbc, NULL, (unsigned char*)szDSN, SQL_NTS, (unsigned char*)strOut, 255, (SQLSMALLINT*)&iOut, SQL_DRIVER_NOPROMPT))==SQL_SUCCESS)
            cout << endl << "CONNEXION ETABLIE ..." << endl;
        else
            cout << endl << " !!! ERREUR DE CONNEXION !!!" << endl;
     
        // 2 - Preparation de la requete
        HSTMT hStmt;//pointeur d'instruction ODBC.
        if(SQLAllocHandle(SQL_HANDLE_STMT,hDbc,&hStmt)==SQL_SUCCESS)
                cout << "SQLAllocHandle OK ..." << endl;
        if (SQLPrepare(hStmt, (unsigned char*)szSql, SQL_NTS)==SQL_SUCCESS)//Prépare l'ordre Sql 
                cout << "PREPARATION REQUETE OK ..." << endl;
     
        // 3 - Execution de la requete
        //SQLBindCol(hStmt,2,SQL_C_CHAR,corres,128,(SQLINTEGER*)&ret1);
        SQLBindCol(hStmt,1,SQL_C_CHAR,corres1,128,&ret1);
        SQLBindCol(hStmt,2,SQL_C_CHAR,corres2,128,&ret2);
        SQLBindCol(hStmt,3,SQL_C_CHAR,corres3,128,&ret3);
        SQLBindCol(hStmt,4,SQL_C_CHAR,corres4,128,&ret4);
     
        SQLExecute(hStmt);
     
        int retcode = SQLFetch(hStmt);
        cout << "RETCODE = " << retcode << endl;
        if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
        {
           cout << "ok";
        } 
        else
        {
            cout << "erreur"; 
        } 
        // 4 - Boucle pour afficher les resultats
        cout << "Le code site fournisseur Oracle " << numFour << "correspond dans MFGPRO au code " << corres2 << "." << endl;
     
        // 5 - Liberations et fermeture de la connection a la BDD
        SQLFreeStmt(hStmt, SQL_DROP);
        SQLDisconnect(hDbc);
        SQLFreeEnv(hEnv);
     
        system("PAUSE");
     
        return corres2;
    }
    Les retour sont des valeur erronées d'une style "*" ou alors des caractères incompréhensibles.

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Je suppose que la création des handles et la connexion à la base de données est correcte

    Dans le code MSDN donné en exemple ici (http://msdn2.microsoft.com/en-us/lib...10(VS.85).aspx), Microsoft fait d'abord le SqlExecute() et ensuite le SqlBindCol().

    Cela me parait logique car seulement après le SQLExecDirect() tu connais le nombre de colonnes retournées et alors ODBC peut faire des contrôles (numéro de colonne de SqlBindCol() plus grand que le nombre de colonnes retournées par exemple)

    D'accord, tu fais du SqlExecute() et l'exemple fait du SQLExecDirect() donc c'est peut être pas comparable.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    ok j'ai trouver mon problème.

    Une erreur bête, il faut mettre des simples côtes et non pas des doubles dans la requête.

    Merci à tous.

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

Discussions similaires

  1. [AJAX] Afficher résultat requête SQL avec ajax
    Par Kevfou dans le forum AJAX
    Réponses: 2
    Dernier message: 01/11/2011, 16h54
  2. Requête SQL avec lien hypertext en retour ?
    Par nono99 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/06/2010, 14h31
  3. Problème de requête SQL avec Firebird ?
    Par MaTHieU_ dans le forum SQL
    Réponses: 3
    Dernier message: 18/09/2008, 09h23
  4. Problème de requête SQL avec DISTINCT et COUNT ?
    Par [ZiP] dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/01/2007, 17h11
  5. Problème de requête SQL avec instruction TRANSFORM
    Par Nosper dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/06/2005, 16h15

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