Italian community of Lazarus and Free Pascal

Programmazione => Databases => Topic aperto da: antoniog - Novembre 03, 2018, 01:07:30 am

Titolo: Operation cannot be performed on an inactive dataset.[RISOLTO]
Inserito da: antoniog - Novembre 03, 2018, 01:07:30 am
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.:
Codice: [Seleziona]
 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:
Codice: [Seleziona]
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.
Titolo: Re:Operation cannot be performed on an inactive dataset.[RISOLTO]
Inserito da: xinyiman - Novembre 03, 2018, 11:22:10 am
Grazie per la segnalazione