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 :

Acces à une base de données


Sujet :

C++Builder

  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2008
    Messages : 24
    Par défaut
    "Je ne comprend pas pk on m'a supprimé mon premier message !!!!!
    tous les details et les explications étaient dedans"

    Bref, ce n'est pas grave !!!!!!!!!!!!!!!!!!!!!!!!!!!
    Je vais essayer de REexpliker le probleme;
    En faite le probleme ds
    Mon programme est que je n'arrive pas a acceder aux champs de ma base de donnees quand il s'ont tapé ainsi :
    '0.4/5+.056/6'
    Ma base de donnée je l'ai edité en paradox;
    Tous mes champs sont de type AlphaNumerique;
    il y a des champs qui representent des entier des réel ou des distributions de possibilités
    ce dernier champs pri dans lexemple représente une distrbution de possibilité!!!
    je dois recuperer les 4 valeurs dans un tableau, mais je n'arrive meme pas a acceder a ce type de champ(distribution de possibilité)!!!!!


    Fonction qui renvoit le type de la chaine de caractère, entier, réel ou distribution de possibilités
    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
    int type_chaine (char *t)
    {  bool trouve=false  ;
        char *nptr;
        nptr=t;
    
        while (*nptr!='\0' && !trouve )
    	{
           if (*nptr=='/')
               trouve =true ;
           nptr++;
    	}
    	if (trouve)
    		return (2); //Si c'est une distribution de possibilité alors elle renvoit 2
    	else
    	{    nptr=t;
             while (*nptr!='\0' && !trouve)
    		 {
    		   if (*nptr==',')
    			   trouve =true ;
               nptr++;
    		 }
    
    	    if (trouve)	    return (1); //Si c'est un réel elle renvoit 1
    
    	    else 	     return (0); // si c'est un entier c'est 0
    	}
    };
    *********************************************************
    ********************************************************Fonction de conversion dans le cas d'une distribution de possibilités
    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
    float * convert_POSS(const string &item)
    {
         float *resultat = (float*)calloc(20,sizeof(float));
         char c;
         istringstream donnees;
         int i = 0;
     
         donnees.str(item);
         while (donnees >> resultat[i++])
         {
                donnees >> c;
         }
     
         return resultat;
    }
    ********************************************************
    Fonction qui charge les champs des attributs choisits dans Le tableau
    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
    void TA::remplir()
    {
      int l;
      tab =new char [50];
      Table1->First();
      for(l=0; l<nb_enrg; l++) // nb-enrg est le nombre d'enregistrements de la BD que je récupère au debut
      {
          *tab= Table1->FieldValues[ptr_at->nom]; //"ptr_at->nom" contient le nom de l'attribut que j'ai choisit de traiter 
          typ=type_chaine(tab);
          if ((typ==0)||(typ==1))
          don [l]=Table1->FieldValues[ptr_at->nom];
                else
                   don[l]=-1;// si c'est un distributon de possibilité alors mettre un -1 dans ce tableau
    
                        // Normalement je dois ensuite remplir les chiffre de cet distr de poss dans un autre tableau de tableaux
                        // Mais je ne l'ai pas encore fais, car je ne sais pas comment!!!!!
    
                            /* if (i< nb_poss)
                               for (int j=0; j<20; j++)
                                    {
                                    tab1[i].possibilites = convert_POSS(tab) ;
                                     i++;
                                     }         */
    
          }
        Table1->Next();
      }
     }
    Puis dans un boutton j'ai ecris cett fonction "remplir()";
    et c'est quand j'appuis dessus, comme je l'ai précisé en haut, que j'ai le message d'erreur Impossible de convertir le variant de type (string) en type (integer) ,quand le champs contient un nombre qui n'est pas un entier ou un réel.

    Car quand il s'agit d'un champs qui contien un nombre réel ou entier, ca ne bug pas, et ca marche.

    SVP SVP SVP, aidez moi a resoudre ce probleme, j'ai vraiment une contrainte de temps qui me presse, et il faut que je termine mon appliction, car ca ce n'est que le debut. c'est mon projet de fin d'etudes et je bloque vraiment dessus...

    Merci d'avance de m'aider.

  2. #2
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2008
    Messages : 24
    Par défaut
    Voila; j'ai effectué quelques petits changement dans les programmes precedants, car, pour les réels, au lieu que ca soit des point il fallait que ca soit des virgules.
    J'ai tapé directement les changement dans les codes precedants!!!
    et j'ai effectué des changements dans ma BD

    mais quand il s'agit d'une distribution de possibilité je n'arrive tjrs pas a acceder a ce champs

    Donc je ne sais pas pourquoi je n'ai recu aucune reponse, est ce que c parceke personne n'a d'idee pour le regler ????

    Si c le cas j'aimeré beaucoup qu'on me le dise, comme ca je vais voir si je peux faire autement!!!

    Donc est ce que vous pensez que mon probleme n'a pas de solution, ou bien qu'il faut prendre un autre chemin pour le resoudre

    Merci de m'aider

Discussions similaires

  1. [C#] Accés à une base de données AS400
    Par Green Hornet dans le forum Accès aux données
    Réponses: 8
    Dernier message: 14/11/2011, 11h26
  2. Réponses: 4
    Dernier message: 15/01/2005, 16h05
  3. Accès à une base de données ACCESS
    Par Invité dans le forum C++Builder
    Réponses: 3
    Dernier message: 07/01/2005, 08h23
  4. [JDBC]acces à une base de données mysql
    Par sehaba dans le forum JDBC
    Réponses: 13
    Dernier message: 07/12/2004, 00h39
  5. Réponses: 2
    Dernier message: 01/10/2004, 15h13

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