Linux Mint 19x64-Lazarus 1.8.4- Zeos 2.14 - sqlite
Può sembrare incredibile è forse lo è ma una semplice istruzione come:ZTable.Active:=False; o ZConnection.Connected := False;
Può generare un errore di : Operation cannot be performed on an inactive dataset
e a questo punto farci impazzire perchè il nostro codice è corretto, tutto giusto, niente di sbagliato ma la logica di questo errore è un mistero e mi è capitato sia usando Zeoslib che usando le semplici tabelle TSQLite3Dataset.Avevo dei campi di immissione in base ai quali calcolavo il campo successivo quindi avevo messo in OnExit del campo l'istruzione per il calcolo, es.: ZTable.Edit; ZTableIVA_T_IMPO.Value:=
ceiling(ZTableSpese_TEC.Value+
ZTableCNAP_IMP.Value)*
(ZTableIVA_TEC.Value/100);
ZTable.Post;
questa operazione mi generava l'errore chiudendo la ZTable con ZTable.Active:=False;. Dopo varie prove molto stressanti ho risolto. Innanzi tutto ho messo l'istruzioni in OnChange ed in OnExit (vuoto) il richiamo a OnChange, poi ho modificato l'istruzione come segue:procedure DBEdit66Change(Sender: TObject);var I, Code: Integer;begin
val(DBEdit64.Text, I, Code);
if Code=0 then //I > 0 then
begin
ZTable.Edit;
ZTableCNAP_IMP.Value:=
(ZTableCNAP_P.Value/100)*
ZTableSpese_TEC.Value;
ZTable.Post;
end;
end;
E NON mi genera più l'errore quindi ho risolto.