Bonjour,

J'utilise pour gérer une base de données SQLITE le couple "ensemble de DBEdit" - "DBNavigator". Si je parcours les enregistrements ou si j'ajoute un enregistrement à la base : (click sur + , entrée des données puis click sur Post) la création d'un nouvel enregistrement ne pose pas de problèmes. Dés que je veux soit effacer soit modifier un enregistrement existant ( Click sur edit puis sur post j'ai un message d'erreur : " LE Projet ... a levé une classe d'exception avec le message : Operation is not allowed in READ ONLY Mode".
J'ai vérifié et aucun des composants ou contrôles utilisés n'ont de propriété "Read Only" à " True" dans l'ensemble utilisé et, pire, j'ai déjà dans une autre base utilisé exactement le même type de syntaxe et de composants et tout fonctionne bien.
Le code qui pourrait être mis en cause est le suivant :
1 - la partie qui permet la connection à la base de données ( l'interface est contenue dans un Tpanel) :
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
  if BR_Promo.Checked = True then
             Begin
             Pan_Promo.caption := '';
             EdNomPromo.Text := '' ;
             EdNumPromo.Text := '';
             Pan_Promo.Height := 195 ;
             Pan_Promo.Width := 475 ;
             Pan_Promo.visible := True;
             // Préparation de la connection à la table NomPromo
             ZC_MaPromo.Database := Dnombase ;
             ZC_Mapromo.Connected := True ;
             SQLOuvPromo := 'Select * From Nompromo' ;
             ZQ_Ecole.SQL.Clear ;
             ZQ_Ecole.SQL.Text := SQLOuvPromo ;
             ZQ_Ecole.ExecSQL ;
             ZQ_Ecole.active := True ;
             end;
2 -puis la partie utilisation du DBNavigator :

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
46
47
48
49
50
51
52
53
54
55
procedure TForm_Ecole.DBNavPromoClick(Sender: TObject; Button: TDBNavButtonType
  );
Var Flag1 : String ;
Var Nbenr : String;
Var NumEnr : String;
Var NomPromo1 : String ;
Var NumPromo1 : String;
Var Period1 : String;
begin
 NomPromo1:= DBNomPromo.text;   // récupération des valeurs par défauts dans la base
 NumPromo1 := DBNumPromo.text;
 Period1 := DBPeriod.text;
 EDNomPromo.Text := NomPromo1 ; // affectation des valeurs aux contrôles ED
 EDNumPromo.Text := NumPromo1 ;
 MEDPeriod.Text := Period1 ;
Case Button of
     NbPost  : Flag1 := 'OK1' ;  // Types d'actions à réaliser par le DBNavigator
     NbRefresh : Flag1 := 'OK2' ;
     Nbfirst : Flag1 := 'OK3' ;
     NbPrior : Flag1 := 'OK3' ;
     NbNext  : Flag1 := 'OK3' ;
     NbLast  : Flag1 := 'OK3' ;
end;
// ************************* ajout ou rafraichissement de la table Promo
 
if Flag1 = 'OK1' Then
Begin
     Nbenr:= intToStr(ZQ_Ecole.recordcount) ;
     Lb_Enr.caption := Nbenr + ' Enr.' ;
     DBPeriod.Text := MedPeriod.Text ; //affectation des invariants aux champs de la table Promo
     DBNomPromo.text := EDNomPromo.text ;
     DBNumPromo.Text := EDNumPromo.text ;
     showmessage ('Enregistrement ajouté avec succès') ;
End ;
if Flag1 = 'OK2' Then
   Begin
   Try
   Nbenr:= intToStr(ZQ_Ecole.recordcount) ;  // affichage Position et Nb d'enregistrements
   NumEnr := intToStr(ZQ_Ecole.RecNo) ;
   Lb_Enr.caption := NumEnr + ' / ' + NbEnr + ' Enr.' ;
   DBPeriod.Text := MedPeriod.Text ; //affectation des invariants aux champs de la table Promo
   DBNomPromo.text := EDNomPromo.text ;
   DBNumPromo.Text := EDNumPromo.text ;
   showmessage ('Enregistrement modifié avec succès') ;
   Except
   showmessage ('Verifiez  vos entrées');
if Flag1 = 'OK3' Then
   Begin
   Nbenr:= intToStr(ZQ_Ecole.recordcount) ;
   NumEnr := intToStr(ZQ_Ecole.RecNo) ;
   Lb_Enr.caption := NumEnr + ' / ' + NbEnr + ' Enr.' ;
End ;
end;
end ;
end;
Quelqu'un peut-il me dire ce qui ne colle pas ?

Merci par avance


R. O.