[HELP-URGENT] "Cannot perform this operation on an open dataset" * Mer

Neopheus Messages postés 21 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 25 novembre 2005 - 4 mai 2003 à 13:39
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 4 mai 2003 à 23:14
Bonjour à Tous,

Je suis en train de programmer une application marchant en réseau à l'aide de bases MySQL.

J'utilise les composants suivants :
SQLConnection: TSQLConnection;
SQLClientDataSet: TSQLClientDataSet;
DataSource: TDataSource;
SQLQuery: TSQLQuery;
DBGrid: TDBGrid;

Tout marche nickel sauf l'envoie de requêtes (ce qui est assez gênant :cry: ) qui m'affiche une erreur : "Cannot perform this operation on an open dataset"

Voici le code qui fait chier :
DataModuleMain.SQLQuery.Active := False;
DataModuleMain.SQLQuery.Close;
DataModuleMain.SQLQuery.SQL.Clear;
DataModuleMain.SQLQuery.SQL.Add('SELECT numero,Initiales,Clients FROM Clients ORDER BY numero');
DataModuleMain.SQLQuery.Active := True;
DataModuleMain.SQLQuery.Open;
DataModuleMain.SQLQuery.ExecSQL;


Si quelqu'un pourrait m'aider. Merci d'avance

VALENTIN Xavier
www.darkskull.net
xavier.valentin@freesbee.fr

1 réponse

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
4 mai 2003 à 23:14
Là c'est un festival :
DataModuleMain.SQLQuery.Active := True;
DataModuleMain.SQLQuery.Open;
DataModuleMain.SQLQuery.ExecSQL;

Mettre la propriété Active d'une requête à True revient exactement à la même chose que d'appeler la méthode Open.
Deuxièmement : une requête renvoyant un ensemble de données doit être appelée par Open et non pas pas un ExecSql. ExecSql doit employé quand on utilise insert, delete ou autres requêtes SQL ne renvoyant pas de données.
En résumé :
DataModuleMain.SQLQuery.Open;

suffit !
Ca ne déclenche pas d'erreur, mais ça ne fait pas "propre" non plus au début de ton code : mettre Active à False revient au même que d'appelr la méthode Close. Faut faire un choix.
May Delphi be with you
0
Rejoignez-nous