Bonjour,

Sur une forme, j'ai une table "Query".
Je charge les instructions SQL par programme, puis je l'active dans un contrôle "try/except"
J'intercepte bien toutes sortes d'erreur, mais quand je définit, dans le code de ma requete, un lecteur amovible et qu'il n'y a rien dans celui-ci, j'obtiens cette erreur, que je n'arrive pas à contrôler :

There is not disk in the drive. Please insert a disk into drive \Device\Harddisk3\DR15
Normal, puis le message :
Le projet SFMLS.exe a provoqué une classe d'exception EBDEngineError avec le message "Le lecteur n'est pas prêt Fichier: m:\Voitures.dbf" Processus stoppé. Utilisez pas à pas etc...
Et ensuite seulement, j'arrive dans mon except.

Cette erreur correspond au code erreur suivant ;

DbiErr_OsDriveNotReady (11061 $2B35)

Mais impossible de l'intercepter

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
begin
        try
          If Query1.Active then Query1.Active := False;
          Query1.SQL.Clear;
          Query1.SQL.LoadFromFile(WCheminDatabase + WSQL_Name);
          Query1.Active := True;
          Membres.Active := True;
          MbrWork.Active := True;
          MbrWork.BatchMove(Query1, batCopy);
          Query1.Active := False;
              // Ca plante juste après l'instruction ci-dessus
          Membres.Active := False;
          MbrWork.Active := True;
          Label3.Caption := IntToStr(MbrWork.RecordCount);
        except
          on E: Exception do
          begin
            MbrWork.Active:= False;  // efface le résultat de la précédente requête
            ShowMessage('Au moins une erreur empêche l''exécution de la requête'
            + #13 + #13 + ' --> ' + E.Message + #13 + #13
            + '   Corriger et relancer');
          end;
        end;