begin process at 2012 05 26 23:14:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive SQL

 > 

Archives

 > 

Problème avec une requête

 > 

Problème de lecture de base et d'affichage


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de lecture de base et d'affichage

mercredi 8 mars 2006 à 09:17:38 | Problème de lecture de base et d'affichage

goueg83460

bonjour, je fait un programme qui lit des informations dans une base de donnée. Je lance une requete SELECT et en condition je met la date rentré dans un formulaire.
Mon problème est que je veut faire afficher plusieurs lignes en dessous (dans la table) dans un string grid par rapport a ma requete de départ. Voici mon code

 // construction de la requete
      AnsiString sqlDispo = "SELECT * FROM ";
      sqlDispo += table;
      sqlDispo += " WHERE date ='";
      sqlDispo += date ;
      sqlDispo += "'";
      // on execute la requete
      int resultatDispo = bdd.executer(sqlDispo);
      if(resultatDispo != 0)
      {
         Application->MessageBoxA("Vérifier les renseignements rentré !","ERREUR SAISI", MB_OK);
      }
      else
      {
         // on recupere le nombre de ligne
         int ligne = bdd.nbLigne();
         short nb = EdtJr->Text.ToInt();
         for(unsigned int i = 0; i < nb ; i++) //ligne
         {
            for(unsigned int j = 0 ; j < 5 ; j++) //colonne
            {
               // on affiche toutes les informations dans le tableau
               //demander sur forum comment mettre les case en couleur suivant le resultat
               AnsiString nom = bdd.afficherNomChamps(j,i);
               //StringGrid1->Cells[j][i+1] = nom;
               if(nom == 0)
               {
                  StringGrid1->Cells[j][i+1] = "libre";
               }
               else  StringGrid1->Cells[j][i+1] = "pas libre";
            }
            //bdd.libererEspaceMemoire();
         }
      }


et voici les fonction appler-ci dessus :
//executer 
int C_Base::executer(AnsiString requete)
{
   int Reponse;
   Reponse = mysql_query(mysql,requete.c_str());
   return Reponse;
}
//nbligne
short C_Base::nbLigne()
{
   myres = mysql_store_result(mysql);
   return myres->row_count;
}
//afficher
AnsiString C_Base::afficherNomChamps(short j,short i)
{
      if(myres) //on verifie qu'il y est un résultat a la requete
      {
         //if (a > 0)
         //{
            //myres->row_count += 1;
            //myrow = mysql_fetch_row(myres);
         //}
               if (j == 0 && i<1)  // Au premier tour au lance la requete qui récuprer
                             // les valeurs lu dans les champs
                {
                        myrow = mysql_fetch_row(myres);
                        astr = myrow[j];
                }
                else  // Au deuxième tour on décale ce pointeur pour lire les
                      // champs.
                {
                        //myrow = mysql_fetch_row(myres);
                        astr = myrow[j];
                }
                return astr;
      }
      return 0;

Voila désolé pour la longueur du code. Mais je n'arrive pas à résoudre ce problème.
Merci pour votre aide.
mercredi 8 mars 2006 à 10:12:41 | Re : pbm de leLMcture de base et d'affichage

Mindiell

Bonjour, Ok, c'est super. Mais c'esqt quoi le problème ? ^^ Qu'est-ce qui ne marche pas ?
mercredi 8 mars 2006 à 15:10:30 | Re : pbm de leLMcture de base et d'affichage

goueg83460

et bien je veut me décaller une ligne dans la base de donnée pour récupérer les valeurs des champs et les afficher. Désolé de ne pas avoir bien expliquer mon problème.
mercredi 8 mars 2006 à 15:19:06 | Re : pbm de leLMcture de base et d'affichage

Mindiell

Vire ton test sur le nombre de lignes, fait un while sur une fonction qui relis ton row : myrow = mysql_fetch_row(myres); Tant que myrow est rempli, tu ecrit tes 5 champs. C'est plus simple, non ?
mercredi 8 mars 2006 à 16:34:41 | Re : pbm de leLMcture de base et d'affichage

goueg83460

heu.... je voit pas trop ce que tu ve dire deja je ne vois pas comment faire une fonction avec le while. Je le met dans ma classe C_Base ou la ou je fai afficher avec le string grid ????
jeudi 9 mars 2006 à 10:58:09 | Re : pbm de leLMcture de base et d'affichage

Mindiell

Ah la la ! Un truc du genre : AnsiString C_Base::afficherNomChamps(short i) { return myrow[i]; } AnsiString C_Base::Lireligne() { if (myrow = mysql_fetch_row(myres)) return true; return false; } et do while (bdd.Lireligne()) { for(i=0;i<5;j++) { AnsiString nom = bdd.afficherNomChamps(i); if(nom == 0) { StringGrid1->Cells[j][i+1] = "libre"; } else { StringGrid1->Cells[j][i+1] = "pas libre"; } } } un truc comme ca... vite fait...
jeudi 9 mars 2006 à 15:27:15 | Re : pbm de leLMcture de base et d'affichage

goueg83460

oé ok mais le problème c'est que ma fonction afficher je l'utilise a d'autre endroit et si je la met comme tu m'a dit ya plus rien qui vas. Je pense que cété une  bonne idée. Merci quand même. Je vais quand même continuer a chercher une solution. Merci encor.
jeudi 9 mars 2006 à 16:05:47 | Re : pbm de leLMcture de base et d'affichage

Mindiell

Euh, on a du mal se comprendre... :) Ta fonction "afficher" est horriblement à éviter. Elle se balade toute seule dans les enregistrements et ca c'est pas son role. Son role c'est d'afficher un champ d'un enregistrement. Fais une autre fonction qui parcourt les enregistrements, puis re-ecrit ta fonction afficher (i,j) en utilisant ces 2 nouvelles fonctions ! Ca decoupe, c'est plus propre, etc... :)
lundi 13 mars 2006 à 17:06:25 | Re : Problème de lecture de base et d'affichage

goueg83460

Réponse acceptée !
Bon c'est bon j'ai compris ce que tu voulais me dire( dsl il m'a fallu du temps lol  ) Voila ce que sa donne si un jour quelqu'un a le même problème :

// c'est la fonction qui me place sur la bonnr ligne
bool C_Base::Lireligne(short i)
{
   if(i>0)
   {
      myres->row_count+=1;
   }
   myrow = mysql_fetch_row(myres);
   if (myrow)
   {
      return 1;
   }
   else
   {
      return 0;
   }
}

// la fonction qui récupere les valeur des champs :
AnsiString C_Base::afficherNomChamps(short j)
{
      return myrow[j];
}

//et l'apelle de toutes ces fonctions pour faire une affichage dans un stringgrid
   bool ligne;
   short i,j;
   AnsiString sql = "SELECT * FROM tablecalendrierct";
   bdd.executer(sql);
   short nb = bdd.nbLigne();
   for(i=0;i<nb;i++)
   {
      ligne = bdd.Lireligne(i);
      for(j=0;j<9;j++)
      {
         AnsiString nom = bdd.afficherNomChamps(j);
         StringGrid1->Cells[j][i] = nom;
      }
   }

Voila merco beaucoup pour ton aide.


Cette discussion est classée dans : base, mysql, requete, sqldispo, myres


Répondre à ce message

Sujets en rapport avec ce message

Problème Mysql [ par fazerman6 ] Bonjour,j'ai deux problèmes et qui sont de taillele premier, c'est que je suis ce qu'il y a de plus mauvais en programmation. ( ce qui est ennuyeux qu sql server ou Mysql [ par snoopcool ] Bonjour tous le monde!!!Mon proleme est le suivant. J'ai une base de donnée que je ve mettre sur un serveur avec une vingtaine de poste à connecte et requete mySql en commande MsDos [ par DevDragon ] Hello everybodyJe suis en pleine galère car j'ai un beau scriptSQL qui me génére la totalité d'une base de donnée .Jusque là tout va bien. Le soucis é base de donné N°1 [ par xa4ke ] voila j aimerai créé une base de donnée pour un site la base de donné serai en Mysql le seul problèm est ... que je connais rien / que dalle / nada :s Nombre de session [ par cispo ] Bonjour,Je travaille sous Access 2003 et je voudrais savoir si il existe une requete pour savoir si quelqu'un est déja connecté à la base de données, Requete MySQL qui fonctionnerait sous windows et pas sous linux ? [ par TheSin ] Bonjour !J'ai un gros probleme.J'ai un serveur windows 2003 avec MySQL 4.1 d'installé.Là, la requete fonctionne.Mais sous ma mandrake linux 10.1 offic pb avec requete mysql [ par gregfly26 ] bonjourje suis etudiant en bts info indus et mon projet bts comporte une section sql !J'ai une base de données 'surface' qui contient 2 tables : 'fabr indexation mysql [ par dibouched ] bojour , j'ai une base de données mysql et je cherceh comment  indexer des colonne pour une recherche fulltext ensuite mon probleme est que j'ai besoi AU SECOURS !!!!!!!!!!!!!!!!! Requete en MySQL [ par emma1006 ] Salut à tous,J'ai un petit souci pour une requete en MySQL. Ca doit pas être bien compliquémais moi je sais pas comment faire pour compacter ma demand mySql => Exporter les scripts des tables d'une base [ par nitrique ] Bonjour @ tous, J'aimerais (comme le dit le titre) exporter les scripts des tables d'une base sous mySql (avoir les: insert into).Un peu comme le fait


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales