* * * *
10 Visitatori, 0 Utenti

Autore Topic: errore zeoslib sqlite (RISOLTO)  (Letto 184 volte)

antoniog

  • Scrittore
  • Full Member
  • *****
  • Post: 113
  • Karma: +0/-0
    • Informatica Utile
errore zeoslib sqlite (RISOLTO)
« il: Settembre 19, 2017, 04:21:49 pm »

Buongiorno a tutti, qualcuno sa dirmi cosa significa questo messaggio:


Il progetto Gescomp ha sollevato una eccezione di classe 'External: SIGSEGV'.
All'indirizzo 43207F
sto provando ad utilizzare Lazarus 1.6.4x64 e Zeoflib 7.1.4, il progetto ha 3 datamodule con molte Ztable collegate a vari database, es. /listini/1 ,  /listini/12 ecc. - e es. /progetti/1 /progetti/2 + un datamodule di sistema con Zconnection collegato al database nella cartella /Bin.
quindi da programma scelgo, quando occorre, quale progetto e quale listino attivare. sul listino nessun problema, cambio database senza alcun errore mentre sul progetto questa istruzione: DataProge.ZConproge.Connected:=False; crea un'eccezione di access violation, le istruzioni sono identiche su tutti i moduli, cosi come quelle per l'apertura e la chiusura dei database ma l'errore lo da solo uno:progetti. stò impazzendo.Grazie in anticipo dell'aiuto.
« Ultima modifica: Ottobre 01, 2017, 01:11:46 am da antoniog »
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Full Member
  • *****
  • Post: 113
  • Karma: +0/-0
    • Informatica Utile
Re:errore zeoslib sqlite
« Risposta #1 il: Settembre 19, 2017, 07:11:14 pm »
l'errore che mi da adesso è questo:

Operation cannot be performed on an inactive dataset.


Press OK to ignore and risk data corruption.
Press Cancel to kill the program.
se premo ok tutto funziona correttamente
se premo annulla mi da questo errore:

Error : EAccessViolation
Access violation
e il programma si pianta

avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1508
  • Karma: +2/-0
Re:errore zeoslib sqlite
« Risposta #2 il: Settembre 20, 2017, 03:58:49 pm »
Ciao Antonio.
Chiudi anche tutti i dataset o ne lasci qualcuno aperto?
Non è che stai provando a scorrere il cursore di un dataset mai aperto?

In debug quando si incasta tutto?

Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

antoniog

  • Scrittore
  • Full Member
  • *****
  • Post: 113
  • Karma: +0/-0
    • Informatica Utile
Re:errore zeoslib sqlite
« Risposta #3 il: Settembre 21, 2017, 03:57:18 am »
Ciao Stilgar,
per tutti e tre i dataset le istruzioni solo simili:

procedure TGescompF.SpeedButton36Click(Sender: TObject);
var
mperco : string;
F : Textfile;
Codice, Path, nome, modi,maschL, maschG, C : String;
begin
    try
     {$IFDEF LINUX}
        mperco:= Application.Location+'Progetti/'+DataSistema.ProgettiCod.Text+'/progetto.sdb';
     {$ENDIF$}
     {$IFDEF WINDOWS}
        mperco:= Application.Location+'Progetti\'+DataSistema.ProgettiCod.Text+'\progetto.sdb';
     {$ENDIF$}
     if  DataSistema.ProgettiPerco.Text <> mperco then        //***********
       begin
         DataSistema.Progetti.Edit;
         DataSistema.ProgettiPerco.Text:=mperco;
         DataSistema.Progetti.Post;
         //informa('progetti post');
       end;
            DataProge.ZConproge.Connected:=False;   //informa('2');
           DataProge.ZConproge.Database:=mPerco; //   informa('3');
           DataProge.ZConproge.Connected:=True;
         ApriTabProge;
         nome := DataSistema.Progetticod.text;
     GetDir(0, C);
         AssignFile(F,'Progetto.mem');
         Rewrite(F);
         Writeln(F, nome);
         Writeln(F, mperco);
         CloseFile(F);
     ShowMessage('Progetto attivato')
     except
          on E: Exception do
          ShowMessage( 'Error : '+ E.ClassName + #13#10 + E.Message );
          on E:EDatabaseError do
          Avverti('Si è verificato il seguente errore'#13#10+ E.Message+ #13+
             'è necessario riconvertire gli archivi'#13#10+
             'se l''errore persiste contattare il fornitore '+
             'del programma!!!!')
          else
          Avverti('Errore');


       end;
end;


procedure ApritabProge;
 var
 I  : integer;
 TTempZ : TZTable;
 begin
 //informa('Apri Tabproge');
   with DataProge do
     begin
      try
       I:= 0;
       while I < (ComponentCount) do
         begin
           if Components is TZTable then
             begin
               TTempz:= Components as TZTable;
               //Informa('TabProge   :'+TTempz.Name);
               TTempZ.Active:=False;
               TTempZ.Active:=True;
             end;
           I:= I+1;
         end;
 except
    on E:EDatabaseError do
          Avverti('In :'+TTempz.Name+ '  si è verificato il seguente errore'#13#10+ E.Message+ #13+
             'è necessario riconvertire gli archivi'#13#10+
             'se l''errore persiste contattare il fornitore '+
             'del programma!!!!')
 end;
    end;
end;
da l'errore solo qui:

DataProge.ZConproge.Connected:=False;
e poi naturalmente se si prosegue da altri errori
« Ultima modifica: Settembre 21, 2017, 04:04:54 am da antoniog »
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Full Member
  • *****
  • Post: 113
  • Karma: +0/-0
    • Informatica Utile
Re:errore zeoslib sqlite
« Risposta #4 il: Settembre 29, 2017, 11:15:09 pm »
dopo vari tentativi ho il fondato sospetto che rendendo il database shared si possa risolvere il problema, come rendere condiviso un database sqlite?
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Full Member
  • *****
  • Post: 113
  • Karma: +0/-0
    • Informatica Utile
Re:errore zeoslib sqlite (RISOLTO)
« Risposta #5 il: Ottobre 01, 2017, 01:11:18 am »
Credo di avere trovato il problema , ho messo nello stesso datamodule diverse ZTable con la stessa -tablename- perchè mi serviva avere nella stessa finestra vari dati della stessa tabella ma filtrati in modo diverso. Tutte queste ZTable erano collegate allo stesso ZConnection e questo determinava l'errore di "access violation"  a volte per: "Dataset is Locked" altre volte con altri messaggi. Verificato che i database SQLite sono shared  ho provato a fare un altro Datamodule dove ho messo le ZTable doppie con filtri diversi collegate ad un atro ZConnenction e in questo modo funziona e non da più errori. Qundi a questo punto penso di avere risolto il problema per cui metto "risolto".
« Ultima modifica: Ottobre 01, 2017, 01:13:26 am da antoniog »
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 2210
  • Karma: +6/-0
Re:errore zeoslib sqlite (RISOLTO)
« Risposta #6 il: Ottobre 01, 2017, 08:46:31 am »
Molto bene, ricordate solo una cosa. Quando avete bisogno d'aiuto sarebbe bene che allegaste un piccolo esempio che replica il problema. Così si riesce a circoscrivere lo stesso con tempistiche più ridotte.
Ieri è passato, domani è futuro, oggi è un dono...

antoniog

  • Scrittore
  • Full Member
  • *****
  • Post: 113
  • Karma: +0/-0
    • Informatica Utile
Re:errore zeoslib sqlite (RISOLTO)
« Risposta #7 il: Ottobre 01, 2017, 10:57:58 pm »
questa innocente istruzione provocava l'errore di "access violation" : Datamodule1.ZConnection1.Connected:=False;
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Full Member
  • *****
  • Post: 113
  • Karma: +0/-0
    • Informatica Utile
Re:errore zeoslib sqlite (RISOLTO)
« Risposta #8 il: Ottobre 07, 2017, 03:17:01 am »

L'avere risolto con un sotterfugio l'errore mi lasciava perplesso e non mi convinceva ad andare avanti, perchè togliendo la connessione a ZConnection con False in Connected, con conseguente disattivazione di tutte le ZTable nel Datamodule, generasse un errore di "Access violation" e a volte proseguendo di "Operation cannot be performed on an inactive dataset"?
per cui ho continuato col debug e con la ricerca dell'arcano. Alla fine ho trovato questa istruzione che poteva essere la causa del secondo messaggio di errore
Codice: [Seleziona]
  
procedure TGescompF.DBEdit100Change(Sender: TObject);
begin
     DataProge.Progetto.Edit;
     DataProge.ProgettoImprevisti.Value:=
     (DataProge.ProgettoTOT_PROG.Value-DataProge.ProgettoTOTALE2.Value);
     DataProge.ProgettoTOTLETTERE.Value:= NumLettere(DataProge.ProgettoTOT_PROG.Value);
end;
ho provato a sostituirla con la seguente
Codice: [Seleziona]
procedure TGescompF.DBEdit100Change(Sender: TObject);
begin
 if  DataProge.Progetto.Active then
   begin
     DataProge.Progetto.Edit;
     DataProge.ProgettoImprevisti.Value:=
     (DataProge.ProgettoTOT_PROG.Value-DataProge.ProgettoTOTALE2.Value);
     DataProge.ProgettoTOTLETTERE.Value:= NumLettere(DataProge.ProgettoTOT_PROG.Value);
   end;
end;   
e tutto si è risolto, con l'istruzione OnChange andavo a scrivere su una tabella che non era attiva!
Effettuata la modifica il cambio degli archivi a runtime funziona perfettamente ma ho perso quasi un mese nella ricerca dell'errore.
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

 

Recenti

How To

Trascinare un file nel programma da xinyiman
DB concetti fondamentali e ZeosLib da xinyiman
Recuperare codice HTML da pagina web da xinyiman
Mandare mail con Lazarus da xinyiman
Stabilire il sistema operativo da xinyiman
Esempio lista in pascal da xinyiman
File INI da xinyiman
Codice di attivazione da xinyiman
Realizzare programmi multilingua da xinyiman
Lavorare con le directory da xinyiman
Utilizzare Unità esterne da Loryea
TTreeView da xinyiman
TTreeview e Menu da xinyiman
Generare controlli RUN-TIME da xinyiman
LazReport, PDF ed immagini da xinyiman
Intercettare tasti premuti da xinyiman
Ampliare Lazarus da xinyiman
Lazarus e la crittografia da xinyiman
System Tray con Lazarus da xinyiman
UIB: Unified Interbase da Microges2000
Il file: questo sconosciuto da Microges2000
Conferma di chiusura di un applicazione da xinyiman
Liste e puntatori da Microges2000
Overload di funzioni da Microges2000
Funzioni a parametri variabili da Microges2000
Proprietà da Microges2000
Conversione numerica da Microges2000
TImage su Form e Panel da Maverich
Indy gestiore server FTP lato Client da Maverich
PopUpMenu sotto Pulsante (TSpeedButton) da Maverich
Direttiva $macro da Microges2000
Toolbar da xinyiman
Evidenziare voci TreeView da Maverich
Visualizzare un file Html esterno da Maverich
StatusBar - aggirare l'errore variabile duplicata da Maverich
Da DataSource a Excel da xinyiman
Le permutazioni da xinyiman
Brute force da xinyiman
Indy 10 - Invio email con allegati da Maverich
La gestione degli errori in Lazarus da xinyiman
Pascal Script da xinyiman
Linux + Zeos + Firebird da xinyiman
Dataset virtuale da xinyiman
Overload di operatori da Microges2000
Lavorare con file in formato JSON con Lazarus da nomorelogic
Zeos ... dietro le quinte (prima parte) da Stilgar
Disporre le finestre in un blocco unico (come Delphi) da Maverich
Aspetto retrò (Cmd Line) da xinyiman
Come interfacciare periferica twain da Narciso
Ubuntu - aggiornare free pascal e lazarus da xinyiman
fpcup: installazioni parallele di lazarus e fpc da nomorelogic
Free Pascal e Lazarus sul Raspberry Pi da nomorelogic
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal. da nomorelogic
Creare un server multithread da xinyiman
guida all'installazione di fpc trunk da subversion in linux gentoo da nomorelogic
Indice da nomorelogic
DB concetti fondamentali e connessioni standard da xinyiman
Advanced Record Syntax da nomorelogic
DB concetti fondamentali e DBGrid da xinyiman
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText da xinyiman
Advanced Record Syntax: un esempio pratico da nomorelogic
Superclasse form base per programmi gestionali (e non) da nomorelogic
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox da nomorelogic
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form da nomorelogic
Superclasse form base per programmi gestionali (e non) #4 - wait animation da nomorelogic
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog da nomorelogic
Installare lazarus su mac osx sierra da xinyiman
Utenti
Stats
  • Post in totale: 10562
  • Topic in totale: 1343
  • Online Today: 15
  • Online Ever: 74
  • (Luglio 09, 2012, 11:05:53 am)
Utenti Online
Users: 0
Guests: 10
Total: 10

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.