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 :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
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;
La fonction OperatorOk() dans PassForm est codée comme suit :
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..."
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;
Quelle erreur ai-je commis ?
Partager