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++Builder Discussion :

probleme de selection avec access


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 188
    Par défaut probleme de selection avec access
    bonjour,

    voila mon probleme:
    avec BDE (cf:http://ricky81.developpez.com/tutoriel/bcb/bde/ ), j'ai fait une connexion a ma base mysql et aucun pb, ça marche .
    je fais la meme chose vers une base access2000, pas de pb apparent de connexion mais j'essaie diverses requetes (meme du select * from maTable, toutes testée avec access2000) et j'ai toujours Query1->RowAffected = -1

    Apres création de pls alias, avoir recommencé les operations de placement et definition des tsession, tdatabase, tquery sans resultat , je ne comprend vraiment pas d'ou cela peut venir (surtout que pas de pb avec mysql).

    merci de vos reponses
    a+

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 188
    Par défaut
    en passant par une ttable ca marche car je n'ai qu'un select de base a faire pour le moment.
    Mais comme a un moment ou un autre faudra une tquery, je reste ouvert a toute suggestion.

  3. #3
    Membre expérimenté
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Par défaut
    Bonjour,

    Peut tu donner un peu plus de code, comme la phase de connexion, la creation de la requete, l'affectation et l'execution ??

    lanonyme

    PS: attention dans ton lien, la parenthese est collé, sa crée un lien erroné

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 188
    Par défaut
    Pour la connexion je passe par un tsession, un tdatabase et je me sers seulement des proprietes de ces composants et pour cette partie aucun pb puisque apres avec un ttable ca marche, le lien est fait avec la base et il me propose la liste des tables de ma bd.

    la requete: j'utilise tquery et dans la prop "SQL" j'ai ma requete "select champ1,champ2,champ3 from table1"

    ensuite dans le code je me contente pour le moment de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Masession->open();
    MaDatabase->open();
    Marequete->open();
    Marequete->First();
    ShowMessage(Marequete->RowsAffected);
    puis je feme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Marequete->Close();
    MaDatabase->Close();
    Masession->Close();
    et ça marche tres bien avec mysql
    et comme ça marche aussi avec access et 1 ttable, je pige plus rien.

  5. #5
    Membre expérimenté
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Par défaut
    Bonjour,
    A la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Marequete->open();
    Marequete->First();
    mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       Marequete->SQL->Clear();
       Marequete->SQL->Add("select champ1,champ2,champ3 from table1");
       Marequete->Prepared = true;
       Marequete->ExecSQL() ;
    Si j'ai bien compris Marequete est un Query ...

    lanonyme

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 188
    Par défaut
    oui oui tu as tout compris.

    j'ai essayé avec ta solution mais j'obtiens tjrs un "-1" pour RowsAffected.

    Petite precision: avec la ttable ca marche mais c'est tres tres lent (pour 3500 lignes seulement). C'est pour ca que je voudrais ne prendre que les infos necessaires a l'aide d'une Query.

    En tout cas merci pour ton aide.
    Tu gagne a etre connu lanonyme

  7. #7
    Membre expérimenté
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Par défaut
    Bonjour,

    Citation Envoyé par mike600river
    Tu gagne a etre connu lanonyme
    euh ... pas sûr

    J'ai fait une boulette, pour la selection c'est :
    Le ExecSQL() c'est pour les autres type de requetes.

    Citation Envoyé par Aide Borland
    Consultez RowsAffected pour déterminer le nombre de lignes modifiées ou supprimées par la dernière exécution de la requête. Si aucune ligne n'a été modifiée ou supprimée, RowsAffected a la valeur zéro. RowsAffected a la valeur –1 si l'instruction SQL n'a pu être exécutée en raison d'une condition d'erreur. Cette situation devrait normalement suivre le déclenchement d'une exception.
    Ce qui me laisse penser que c'est normal que tu as -1, vu que tu ne modifie rien

    lanonyme

  8. #8
    Membre expérimenté
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Par défaut
    C'est pour ca que je voudrais ne prendre que les infos necessaires a l'aide d'une Query.
    Qu'est que tu attend exactement comme "infos necessaires"

    lanonyme

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 188
    Par défaut
    dsl, c vrai que c pas clair si on n'est pas a ma place : infos necessaires: la table de depart a 76 colonnes et je n'ai besoin d'en prendre que 4.

    Quand la requete s'execute, mon RowsAffected renvoi -1 mais je n'ai pas de message d'erreur.

  10. #10
    Membre expérimenté
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Par défaut
    Bonjour,

    La propriété RowsAffected est affecté si et seulement si tu execute une commande pour modifier ta bdd.
    En l'occurence, tu fait un select donc aucune modification ...

    Apres c'est a toi de parcourir ton Query :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     while(!Marequete->Eof)
     {
         Edit1->Text = Marequete->FieldByName("eventstatus);
         // Enregistrement suivant
         Marequete->Next();
     }
    Il est pas possible de savoir combien de ligne on été recupéré sans les avoir lu ...

    lanonyme

  11. #11
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 188
    Par défaut
    merci bcp l'anonyme ca marche mieux comme ca.

    La question que je me pose c'est qu'avec ma base mysql j'ai ce code la:
    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
    Query_select_orcad->Open();
      // on se positionne au début
      Query_select_orcad->First();
      //on redimensionne la stringgrid orcad 
      StringGrid_orcad->RowCount=Query_select_orcad->RowsAffected+1;
      //Création du vecteur  de taille : nb de lignes de la requete
      tableau = new String * [Query_select_orcad->RowsAffected];
      for (int ligne=0; ligne<Query_select_orcad->RowsAffected;ligne++)    {
        // pour chaque élément du vecteur création d'un nouveau vecteur    
        tableau[ligne]=new String [Query_select_orcad->FieldCount];
      } 
      for (int ligne = 0 ; ligne < Query_select_orcad->RowsAffected ; ligne++)
      {
        // on récupère les champs
        value = Query_select_orcad->FieldByName("value")->AsString;
        sourcepackage = Query_select_orcad->FieldByName("sourcepackage")->AsString;
        pcbfootprint = Query_select_orcad->FieldByName("pcbfootprint")->AsString;
        sourcelibrary = Query_select_orcad->FieldByName("sourcelibrary")->AsString;
        datasheet = Query_select_orcad->FieldByName("datasheet")->AsString;
        lien=Query_select_orcad->FieldByName("lien")->AsString;
        // on rempli la stringgrid
        StringGrid_orcad->Cells[0][ligne+1]= value ;
        StringGrid_orcad->Cells[1][ligne+1]= sourcepackage ;
        StringGrid_orcad->Cells[2][ligne+1]= pcbfootprint ;
        StringGrid_orcad->Cells[3][ligne+1]= sourcelibrary ;
        StringGrid_orcad->Cells[4][ligne+1]= datasheet ;
        //on rempli le tableau
        tableau[ligne][0]=value;
        tableau[ligne][1]=sourcepackage;
        tableau[ligne][2]=pcbfootprint;
        tableau[ligne][3]=sourcelibrary;
        tableau[ligne][4]=datasheet;
        // MessageDlg(tab_orcad[0][i-1], mtInformation, TMsgDlgButtons() << mbOK, 0);
        // on passe à la ligne suivante
        Query_select_orcad->Next();
      }  
      Query_select_orcad->Close();
    et que ca fonctionne, le RowsAffected me renvoie bien le nb de lignes de la table.

    encore merci pour ton aide.
    c'est un sacré coup de paluche que tu m'as donné.

  12. #12
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 188
    Par défaut
    je suis un

    Il y a un RecordCount qui fait exactement ce que je cherchais chez le RowsAffected.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ShowMessage(Query_local->RecordCount);

  13. #13
    Membre expérimenté
    Avatar de lanonyme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 229
    Par défaut
    Citation Envoyé par mike600river
    je suis un

    Il y a un RecordCount qui fait exactement ce que je cherchais chez le RowsAffected.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ShowMessage(Query_local->RecordCount);
    C'est normal, on cherche toujours a faire compliquer
    (Pour ne pas heurté la sensibilité, je parle surtout de moi )

    Enfin, on apprend c'est le principal

    lanonyme

  14. #14
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 188
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C'est normal, on cherche toujours a faire compliquer  
    (Pour ne pas heurté la sensibilité, je parle surtout de moi  )
    Je crois que c'est bien pareil pour moi.

    Merci de ton aide, ça marche et en plus j'ai appris plein de petites choses.

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

Discussions similaires

  1. probleme de compatibilité avec access
    Par levac dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 18/07/2007, 16h39
  2. probleme de SELECT avec VB6
    Par josémaria dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/02/2007, 19h12
  3. Réponses: 4
    Dernier message: 02/08/2006, 09h42
  4. [XSLT] Probleme de selection avec namespaces
    Par Ludo_xml dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 01/06/2005, 15h32
  5. probleme requete select avec 2 colonnes
    Par cricri45000 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/04/2005, 11h39

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