SQL/C++Builder

Résolu
silent1969 Messages postés 9 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 13 août 2006 - 12 août 2006 à 20:34
silent1969 Messages postés 9 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 13 août 2006 - 13 août 2006 à 13:32
Peut-on? et si oui comment? modifier la valeur "SQL.Strings" (la requete quoi) d'une variable de type TQuery?.

Autre chose comment résoudre l'erreur "Erreur à la création du handle de curseur"?

voici le code principal:

void __fastcall TForm1::afficherReq()
{
AnsiString nom = "";
AnsiString prenom = "";
AnsiString filiere = "";
Memo1->Clear();

// ouverture connexion, bdd et requête
Session1->Open();
Database1->Open();
Query1->Open();

// on se positionne au début
Query1->First();

/*// on parcourt le résultat de la requête
while(!Query1->Eof)
{
// on récupère les champs nom et prénom
nom = Query1->FieldByName("nom")->AsString;
prenom = Query1->FieldByName("prenom")->AsString;
filiere = Query1->FieldByName("filiere")->AsString;

// on ajoute une ligne à notre mémo
Memo1->Lines->Add(nom+" "+prenom+" - "+filiere);

// on passe à la ligne suivante
Query1->Next();
}
*/
// on ferme connexion, bdd et requête
Query1->Close();
Database1->Close();
Session1->Close();
}

et ma requete est la suivante:

UPDATE Etudiant AS e SET e.[option] = e.[option]*1.2;

Si il vous faut plus de renseignements n'hésitez-pas.

A bientot.

7 réponses

silent1969 Messages postés 9 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 13 août 2006
13 août 2006 à 13:05
J'ai résolu le probléme du handle.

Il faut utiliser Query1->ExecSQL(); au lieu de Open();

Mais il me reste le probléme du changement de valeur SQL.
3
silent1969 Messages postés 9 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 13 août 2006
13 août 2006 à 13:32
C'est bon il faut utiliser: Query1->SQL->Add("SELECT a.Prenom FROM Anim a WHERE a.ID = 2");
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
12 août 2006 à 20:42
Pourrait tu mettre quelque retour chariot s'il te plait?

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation
0
cs_Bidou Messages postés 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
12 août 2006 à 21:26
Je pense que c'est parce qu'il utilise Opéra ;-)

<hr size="2" />VC# forever
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
12 août 2006 à 21:30
opéra oublie les retours chariots? Et ben, tout un browser.

C++ (@++)
___________________________________________
Les plus grands esprits trouvent toujours une solution
Forum de débats sur la programmation
< body>
0
silent1969 Messages postés 9 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 13 août 2006
12 août 2006 à 22:29
Peut-on? et si oui comment? modifier la valeur "SQL.Strings" (la requete quoi) d'une variable de type TQuery?

Autre chose comment résoudre l'erreur "Erreur à la création du handle de curseur"?

voici le code principal:

//On accede a cette fonction en clikant sur un simple bouton

void __fastcall TForm1::afficherReq()
{
   AnsiString nom = "";
   AnsiString prenom = "";
   AnsiString filiere = "";
   Memo1->Clear();


   // ouverture connexion, bdd et requête
   Session1->Open();
   Database1->Open();
   Query1->Open();


   // on se positionne au début
   Query1->First();


   // on parcourt le résultat de la requête
   while(!Query1->Eof)
   {
      // on récupère les champs nom et prénom
      nom = Query1->FieldByName("nom")->AsString;
      prenom = Query1->FieldByName("prenom")->AsString;
      filiere = Query1->FieldByName("filiere")->AsString;


      // on ajoute une ligne à notre mémo
      Memo1->Lines->Add(nom+" "+prenom+" - "+filiere);
     
      // on passe à la ligne suivante
      Query1->Next();
   }
  
   // on ferme connexion, bdd et requête
   Query1->Close();
   Database1->Close();
   Session1->Close();
}

et ma requete est la suivante:

UPDATE Etudiant AS e SET e.[option] = e.[option]*1.2;
//Sous Access la requete marche ainsi qu'en executant le prog' malgré l'erreur du handle...

Si il vous faut plus de renseignements n'hésitez-pas. A bientot.
0
silent1969 Messages postés 9 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 13 août 2006
13 août 2006 à 12:34
Meme en procedant comme ceci:


void __fastcall TForm1::afficherReq()
{
   /*AnsiString nom = "";
   AnsiString prenom = "";
   AnsiString filiere = "";
   Memo1->Clear();*/


   // ouverture connexion, bdd et requête
   Session1->Open();
   Database1->Open();
   Query1->Open();


   // on se positionne au début
   /*Query1->First();


   // on parcourt le résultat de la requête
   while(!Query1->Eof)
   {
      // on récupère les champs nom et prénom
      nom = Query1->FieldByName("nom")->AsString;
      prenom = Query1->FieldByName("prenom")->AsString;
      filiere = Query1->FieldByName("filiere")->AsString;


      // on ajoute une ligne à notre mémo
      Memo1->Lines->Add(nom+" "+prenom+" - "+filiere);
     
      // on passe à la ligne suivante
      Query1->Next();
   }
   */
   // on ferme connexion, bdd et requête
   Query1->Close();
   Database1->Close();
   Session1->Close();
}


Ca ne marche pas. Je ne vois pas d'ou viens l'erreur car un simple SELECT en enlevant les "/*...*/" marche parfaitement.


Et je n'ai toujours pas trouvé comment changer la valeur SQL d'un composant TQuery. Je n'ai pas envie de créer 35000 composants au vus des requetes que je voudrai faire. Merci d'avance.
0
Rejoignez-nous