Bonjour à tous,
Je suis désolé de revenir sur un problème déjà ressassé mais dont je n'arrive pas à trouver la solution bien que j'aie déjà fait ce genre de choses. Je cherche à entrer des données dans une base SQLITE3 (Lazarus version 1.6.4.- Windows10 -Zeos 1.7.4 Stable paquets mis à jour par GVasseur).
Je veux accéder à une base SQLITE3 pour y ajouter des enregistrements. La base a été créée auparavant par code sans problème. Pour cela je dispose de 3 composants :
un Composant TZConnection (ZC_InfoPromo), un composant TZ_QUERY (ZQ_InfoPromo) et un DataSource (DataSEcoPromo). Devant renseigner 3 tables de la base, j'ai construit, en faisant appel à un "RadioGroup" le code suivant :
Sachant que le DataSource correspondant à valeur Dataset à ZQ_EcoPromo
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 procedure TF_InfoPromo.Bt_OKEcolPromoClick(Sender: TObject); Var MessOuv : String ; Var TablTravail : String ; Var ChoixTablactiv : String ; Var FlagOuvTbl : String ; begin BaseActive := F_GestBase.Ed_BaseActive.Text ; Ed_FlagMsg.Text := 'Coucou !' ; FlagOuvTbl := 'OuvrNon' ; Try ; Case (RG_ChoixTbl1.ItemIndex) of 0: Begin ; // Instructions pour la table Ecole ChoixTablactiv := 'Select * From Ecole' ; TablTravail := 'Ecole' ; FlagOuvTbl := 'OuvrOui' ; End; 1: Begin ; // Instructions pour la table InfoPromo ChoixTablactiv := 'Select * From InfoPromo' ; TablTravail := 'Promo' ; FlagOuvTbl := 'OuvrOui' ; End; 2: Begin ; // Instructions pour la table Sections ChoixTablactiv := 'Select * From section' ; TablTravail := 'Sections' ; FlagOuvTbl := 'OuvrOui' ; End; End ; // *** Instructions d'accès à la Base à traiter if(FlagOuvTbl = 'OuvrOui') Then Begin // base à traiter ZC_EcoPromo.Connected:= False ; ZC_EcoPromo.Database:= BaseActive ; ZC_EcoPromo.Connected:= True ; Ed_FlagMsg.Text := TablTravail; // **** Accès aux tables ZQ_EcoPromo.Active := False ; ZQ_EcoPromo.Connection := ZC_EcoPromo; ZQ_EcoPromo.DataSource := DataSEcoPromo; ZQ_EcoPromo.Active := False ; ZQ_EcoPromo.SQL.Clear ; ZQ_EcoPromo.SQL.Text := ChoixTablActiv ; ZQ_EcoPromo.ExecSQL ; Ed_FlagMsg.Text := TablTravail ; F_GestBase.visible := False ; end; Except MessOuv := 'Problème d''accès à la table ' + TablTravail + ' de la base' + #13 + BaseActive ; ShowMessage (MessOuv) ; End; End;
A l’exécution de ce code, J'accède bien aux contrôles à renseigner mais aucune lise à jour des enregistrements n'est effectuée. Les datasets sont inactifs. SI au lieu d'utiliser
j'utilise
Code : Sélectionner tout - Visualiser dans une fenêtre à part ZQ_EcoPromo.ExecSQL;
j'ai une erreur SIGSEGV qui s'affiche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ZQ_EcoPromo.Open;
Je dois donc avoir omis de déclarer comme active la table à renseigner mais comment faire ?
Merci de vos réponses.
R.O.
Partager