Erreur de base de donnée

TeDeum Messages postés 21 Date d'inscription mercredi 8 mai 2002 Statut Membre Dernière intervention 8 janvier 2008 - 4 oct. 2002 à 12:06
dalz Messages postés 4 Date d'inscription mardi 31 octobre 2000 Statut Membre Dernière intervention 31 mars 2009 - 8 oct. 2002 à 11:28
Salut à tous,

Problème :
Avec le code ci-dessous, j'ai une erreur qd j'essaye de fermer ma base : "BOF ou EOF égal à True ou l'enregistrement actuel a été suprimé. L'opération demandée nécessite un enregistrement actuel"
J'ai donc essayé de testé EOF et la je n'ai plus cette erreur. Mais la c'est une autre erreur qui apparait lorsque je veux relancer une requête sur ma base : "ADOQueryResa: Cannot perform this operation on an open dataset."

Code(ce code essaye de fermer la base sans tester EOF) :
// Construction de la requête
with ADOQueryResa.SQL do
begin
Clear;
Add('SELECT * FROM RESA WHERE ');
if not bSupprime then
if bExport then
Add('export=true and ')
else
Add('export=false and ');
if bSupprime then
Add(' supprime=true')
else
Add(' supprime=false');
Add('ORDER BY DATEIMPORT DESC');
end;
try
ADOQueryResa.Open;
// Vide la liste
LVBox.Items.Clear;
// Parcours des réservation
If not ADOQueryResa.eof Then
begin
ADOQueryResa.First;
while ADOQueryResa.eof = false do
begin
NewItem := LVBox.Items.Add;
if ADOQueryResa.Fieldvalues['export'] = true then
NewItem.ImageIndex := 1
else
NewItem.ImageIndex := 3;
NewItem.Caption := ADOQueryResa.Fieldvalues['idresa'];
// Reçue le
NewItem.SubItems.Add(ADOQueryResa.Fieldvalues['dateimport']);
// Suivant
ADOQueryResa.Next;
end;
end;
ADOQueryResa.Close;

5 réponses

cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
5 oct. 2002 à 01:44
Sur quelle ligne l'erreur "ADOQueryResa: Cannot perform this operation on an open dataset."
est-elle signalée ?

--- :sleepy) Nono du Moulin :sleepy) ---
0
TeDeum Messages postés 21 Date d'inscription mercredi 8 mai 2002 Statut Membre Dernière intervention 8 janvier 2008 1
7 oct. 2002 à 10:43
Donc le message apparait sur la ligne :
ADOQueryResa.Open;

Qd "ADOQueryResa.Close;" se trouve juste avant le "end;" du "If not ADOQueryResa.eof Then"

Merci de m'aider si tu le peux.

// Construction de la requête
with ADOQueryResa.SQL do
begin
Clear;
Add('SELECT * FROM RESA WHERE ');
if not bSupprime then
if bExport then
Add('export=true and ')
else
Add('export=false and ');
if bSupprime then
Add(' supprime=true')
else
Add(' supprime=false');
Add('ORDER BY DATEIMPORT DESC');
end;
try
ADOQueryResa.Open;
// Vide la liste
LVBox.Items.Clear;
// Parcours des réservation
If not ADOQueryResa.eof Then
begin
ADOQueryResa.First;
while ADOQueryResa.eof = false do
begin
NewItem := LVBox.Items.Add;
if ADOQueryResa.Fieldvalues['export'] = true then
NewItem.ImageIndex := 1
else
NewItem.ImageIndex := 3;
NewItem.Caption := ADOQueryResa.Fieldvalues['idresa'];
// Reçue le
NewItem.SubItems.Add(ADOQueryResa.Fieldvalues['dateimport']);
// Suivant
ADOQueryResa.Next;
end;
ADOQueryResa.Close;
end;
0
dalz Messages postés 4 Date d'inscription mardi 31 octobre 2000 Statut Membre Dernière intervention 31 mars 2009
7 oct. 2002 à 16:36
Salut,

Généralement, Delphi génère une erreur quand on change les propriétés des descendants de composants source de données pendant qu'elles sont connectées (Active=True).

Essaie donc de fermer la base avant de changer le texte SQL comme suit (ligne avant CLEAR)

// Construction de la requête
with ADOQueryResa.SQL do
begin
Close; // <<<<<<<<<<==== Ligne à insérer
Clear;
Add('SELECT * FROM RESA WHERE ');
if not bSupprime then
if bExport then
Add('export=true and ')
else
etc ...
0
TeDeum Messages postés 21 Date d'inscription mercredi 8 mai 2002 Statut Membre Dernière intervention 8 janvier 2008 1
7 oct. 2002 à 16:52
Salut,
Déjà merci de ton aide. Mais j'ai le regret de t'annoncer que mon erreur apparait maintenant sur la ligne avec "Clear;", juste derrière le "Close;"

Voici le message que j'ai : "ADOQueryResa: Cannot perform this operation on an open dataset."

Merci à tous de votre aide...
0

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

Posez votre question
dalz Messages postés 4 Date d'inscription mardi 31 octobre 2000 Statut Membre Dernière intervention 31 mars 2009
8 oct. 2002 à 11:28
ReSalut,

Essaie de voir si le CLOSE est plutôt envoyé à la fenêtre qui contient ADOQueryResa mais pas à ADOQueryResa lui-même (si celui-ci n'est pas dans un DataModule)

Bon courage
0
Rejoignez-nous