Bonjour,

Je dispose d'une base de données Access que je ne peux pas ouvrir !
Le module de données est défini comme suit :
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
26
27
28
29
30
type
  TBDM = class(TDataModule)
    ADOConnection1: TADOConnection;
    qry: TADOQuery;
    ADOTable: TADOTable;
    ADOCommand1: TADOCommand;
    ADOStoredProc1: TADOStoredProc;
  private
    { Déclarations privées }
  public
    // Autorisation d'ouverture de la base de données à un oprérateur
    function OperatorOk( const Login,WordPass: string ): boolean;
 
.............
  end;
 
const
  _ConnString =
  'Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;' +
  'User ID=%s;Password=%s;Data Source=%s;' +
  'Mode=Share Deny None;Extended Properties="";' +
  'Jet OLEDB:Engine Type=5;';
  _UserName = 'admin';
  _PassWord = '';
  _BD_LOCALE = 0;
  _BD_DISTANTE = 1;
 
 
var
  BDM: TBDM;
Dans la Form principale j'ouvre la base de données en reconnaissant le nom et le mot de passe d'un opérateur par l'ouverture d'une fenêtre PassForm qui contient deux Tedit pour saisir le nom Login et le mot de passe WordPass de l'opérateur qui sont contenus dans une table OPERATOR de la DB
La fonction OperatorOk() dans PassForm est codée comme suit :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Autorisation d'ouverture de la base de données à un oprérateur
function TBDM.OperatorOk( const Login,WordPass: string ): boolean;
begin
  if (length(Login)<=3) or (Length(WordPass)<=3) then exit;
  begin
    ADOConnection1.Close;
    ADOConnection1.ConnectionString := Format(_ConnString,[_UserName,_PassWord,CurDBPath]);
    ADOConnection1.LoginPrompt := False;
    try
      ADOConnection1.Connected := True;
    except
      on e: EADOError do
      begin
        MessageDlg('Error while connecting', mtError,[mbOK], 0);
        Exit;
      end;
    end;
    qry.Connection := ADOConnection1;
    qry.Close;
    qry.SQL.Clear;
    qry.SQL.text:='SELECT * FROM OPERATOR WHERE OperName="'+Trim(Login)+'"';
    qry.Prepared := true;
    try
      qry.Open;
    except
      on e: EADOError do
      begin
        MessageDlg('Error while doing query', mtError,[mbOK], 0);
        Exit;
      end;
    end;
    CurOperator.Name:= qry.FieldbyName('OperName').AsString;
    CurOperator.Pass:= qry.FieldbyName('Pass').AsInteger;
    CurOperator.Rights:= qry.FieldbyName('Rights').AsInteger;
    CurOperator.RecNo:= qry.FieldbyName('OpNo').AsInteger;
    CurOperator.UseNo:= qry.FieldbyName('UserNo').AsInteger;
    result:= PassWordToInteger(Trim(WordPass))=CurOperator.Pass;
    if not result then
    begin
      showMessage('Identifiant ou mot de passe erroné');
      result:= false;
      exit;
    end;
  end;
end;
L'appel à la fonction OperatorOk() se solde par une erreur "Le moteur de la base de données Microsoft Jet ne peut pas trouver la table OPERATOR..."

Quelle erreur ai-je commis ?