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) :
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 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;
Quelqu'un peut-il me dire ce qui ne colle pas ?
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;
Merci par avance
R. O.
Partager