TeDeum
Messages postés21Date d'inscriptionmercredi 8 mai 2002StatutMembreDernière intervention 8 janvier 2008
-
4 oct. 2002 à 12:06
dalz
Messages postés4Date d'inscriptionmardi 31 octobre 2000StatutMembreDernière intervention31 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;
A voir également:
Bof ou eof est égal à true ou l'enregistrement actuel a été supprimé
TeDeum
Messages postés21Date d'inscriptionmercredi 8 mai 2002StatutMembreDernière intervention 8 janvier 20081 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;
dalz
Messages postés4Date d'inscriptionmardi 31 octobre 2000StatutMembreDernière intervention31 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 ...
TeDeum
Messages postés21Date d'inscriptionmercredi 8 mai 2002StatutMembreDernière intervention 8 janvier 20081 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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
dalz
Messages postés4Date d'inscriptionmardi 31 octobre 2000StatutMembreDernière intervention31 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)