SQL/C++Builder

Résolu
Signaler
Messages postés
9
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
13 août 2006
-
Messages postés
9
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
13 août 2006
-
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

Messages postés
9
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
13 août 2006

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.
Messages postés
9
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
13 août 2006

C'est bon il faut utiliser: Query1->SQL->Add("SELECT a.Prenom FROM Anim a WHERE a.ID = 2");
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
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
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Membre
Dernière intervention
20 juin 2013
59
Je pense que c'est parce qu'il utilise Opéra ;-)

<hr size="2" />VC# forever
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
16
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>
Messages postés
9
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
13 août 2006

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.
Messages postés
9
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
13 août 2006

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.