Bonjour à vous,
J'utilise le composant TSQLQuery pour attaquer une BDD MySQL.
Je veux mettre une table à jour via:
Cette section est dans une boucle:
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 procedure UpdateTableTroncons(const TR: TCanalTroncon); var Rq: String; begin try try Rq := Format('UPDATE %s ', [TABLE_TRONCONS]) + Format('SET LongueurTroncon=%.2f, TempsParcoursOptimal=%.2f ', [TR.LongueurTroncon, TR.TempsOptimal]) + Format('WHERE NomTroncon="%s" LIMIT %d;', [TR.NomTroncon, 1]); AfficherMessage(Rq); FSQLQuery.Open; FSQLQuery.SQL.Clear; FSQLQuery.SQL.Text := Trim(Rq); FSQLQuery.ExecSQL(); FSQLQuery.ApplyUpdates(666); FSQLTransaction.Commit; // indispensable sinon çà ne marche pas except on E: Exception do AfficherMessage(E.Message); end; finally FSQLQuery.Close; end; end;
Commande MySQL:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 //FSQLTransaction.StartTransaction; for i := 0 to GetNbTroncons - 1 do begin; myTroncon := GetTroncon(i); UpdateTableTroncons(myTroncon); end;
UPDATE troncons_new SET LongueurTroncon=615.36, TempsParcoursOptimal=24.61 WHERE NomTroncon="Tr_5742.00 2" LIMIT 1;
Dès le deuxième tour de boucle, le message d'erreur suivant est envoyé:
SQLQuery1 : Cannot open a non-select statement
J'ai beau individualiser les requêtes, rien n'y fait.
Je ne sais que faire et çà fait deux heures que je galère avec çà.
Bien entendu, chaque requête est ouverte et fermée correctement.
L'équipe Lazarus, qui fait du très bon travail, gagnerait à améliorer le contrôle qualité des composants fondamentaux comme ceux d'interrogation de BDD. A mon avis, il n'est pas normal qu'un composant fonctionne une fois sur deux. Ceci occasionne d'énormes pertes de temps pour résoudre des problèmes qui n'ont pas lieu d'être.
On comprend pourquoi Embarcadero et consorts peuvent vendre très cher leurs produits: en milieu professionnel et institutionnel, le coût de la licence est souvent très largement compensé par la qualité des composants et de la documentation.
Partager