* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

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

Inserisci il nome utente, la password e la durata della sessione.

100 Visitatori, 0 Utenti

Autore Topic: problemi con sqlite 3 e zeos  (Letto 55349 volte)

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:problemi con sqlite 3 e zeos
« Risposta #45 il: Aprile 23, 2013, 07:17:02 pm »
PathDelim, grazie, ottimo suggerimento.
non riesco a capire, lancio una routine e mi dà errore, la rilancio senza modificare nulla e funziona, forse cè un bug in zeos 7.0.3?
la routine utilizza due datamoduli contenenti le stesse Ztable stessi nomi, stessi campi ma collegate a directory diverse, l'elaborazione viene fatta sulle tabelle di appoggio e i risultati vengono memorizzati sulle tabelle principali per poi stamparli. Queste routine con delphi4 e DBF funziona perfettamente e velocemente, con lazarus, zeos e sqlite3 e lenta e non senpre funziona.
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:problemi con sqlite 3 e zeos
« Risposta #46 il: Aprile 23, 2013, 08:15:43 pm »
questo è l'errore che mi perseguita:
0 record(s) updated. Only one record should have been updated.
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2389
  • Karma: +10/-0
Re:problemi con sqlite 3 e zeos
« Risposta #47 il: Aprile 23, 2013, 10:49:28 pm »
Per le tabella di appoggio ... usi tabelle "in memory" o tabelle su disco?
Per il fatto che vengano aggiornati 0 record, non so se questo è un problema o meno ...
il db non ha trovato nulla da aggiornare ....
per queste operazioni batch l'uso dei dataaware non so se è il massimo ... ma poi sta a te decidere, personamente elaboro decine di record senza problemi di performance.
Codice: [Seleziona]
procedure TMainModel.RicreaCodici;

var
  statemnt, updateStatement: string;
  stmt: IZStatement;
  updStmt: IZPreparedStatement;
  rs: IZResultSet;
  numeroRecord: longint;
  node, aNode, root: TDOMElement;
  doc: TXMLDocument;
  indice, indiceIdRef: longint;
  rsMt: IZResultSetMetadata;

  function GetElementById(root: TDOMElement; id: integer): TDOMElement;
  var
    idx: integer;
  begin
    Result := nil;
    if root.GetAttribute('id') = TSystem.valueOf(id) then
      Result := root
    else
    begin
      idx := 0;
      while (idx < root.ChildNodes.Count) and isNull(Result) do
        Result := GetElementById(TDomElement(root.ChildNodes[postInc(idx)]), id);
    end;
  end;

  procedure InsertTree(stmt: IZPreparedStatement; root: TDOMElement);
  var
    idx: integer;
  begin
    for idx := 0 to root.ChildNodes.Count - 1 do
    begin
      try
        with TDOMElement(root.ChildNodes[idx]) do
        begin
          stmt.SetString(1, GetAttribute('id'));
          stmt.SetString(2, root.GetAttribute('id'));
          stmt.SetString(3, GetAttribute('codice'));
          stmt.SetString(4, GetAttribute('descrizione'));
          stmt.ExecutePrepared;
          InsertTree(updStmt, TDOMElement(root.ChildNodes[idx]));
        end;
      except
      end;
    end;
  end;

  function getCodiceElemento(root: TDOMElement): string;
  begin
    Result := root.GetAttribute('id');
    if isAssigned(root.ParentNode) then
      Result := getCodiceElemento(root.ParentNode as TDOMElement) + '.' + Result;
  end;

  procedure RicordificaTree(root: TDOMElement);
  var
    idx: integer;
    idx1, idx2: string;
  begin
    for idx := 1 to root.ChildNodes.Count do
    begin
      try
        idx1 := root.GetAttribute('id');
        if length(idx1) = 1 then
          idx1 := '0' + idx1;
        idx2 := TSystem.valueOf(idx);
        if idx < 10 then
          idx2 := '0' + idx2;

        TDOMElement(root.ChildNodes[idx - 1]).SetAttribute('id',
          TSystem.valueOf(TSystem.parseInt(idx1 + idx2)));

        TDOMElement(root.ChildNodes[idx - 1]).SetAttribute('codice', idx1 + '.' + idx2);

        TDOMElement(root.ChildNodes[idx - 1]).SetAttribute('idRef',
          root.GetAttribute('id'));
        RicordificaTree(TDOMElement(root.ChildNodes[idx - 1]));
      except
      end;
    end;
  end;

begin
  numeroRecord := getConteggioRighe('tabella');
  doc := TXMLDocument.Create;
  root := doc.CreateElement('root');
  root.SetAttribute('id', '0');
  doc.AppendChild(root);

  stmt := connessione.DbcConnection.CreateStatement;

  statemnt := defaultMapper.getItem('getTabellaByIndice');

  updateStatement := defaultMapper.getItem('insertRecord);
  updStmt := connessione.DbcConnection.PrepareStatement(updateStatement);

  try
    try
      rs := stmt.ExecuteQuery(statemnt);
      rsMt := rs.GetMetadata;
      indiceIdRef := -1;
      for indice := 1 to rsMt.GetColumnCount do
      begin
        if rsMt.GetColumnName(indice) = 'idRef' then
          indiceIdRef := indice;
      end;
      indice := 1;
      while rs.Next do
      begin
        node := doc.CreateElement('CAUSALE');
        node.SetAttribute('id', rs.GetStringByName('id'));
        node.SetAttribute('idRef', rs.GetStringByName('idRef'));
        node.SetAttribute('codice', rs.GetStringByName('codice'));
        node.SetAttribute('descrizione', rs.GetStringByName('descrizione'));
        aNode := GetElementById(doc.DocumentElement, rs.GetInt(indiceIdRef));
        if isNull(aNode) then
        begin
          aNode := root;
        end;
        aNode.AppendChild(node);
      end;
    except
      on e: Exception do
      begin
      end;
    end;
  finally
    rs := nil;
    stmt := nil;
  end;
  XMLWrite.WriteXMLFile(doc, 'file.xml');
  doc.Free;

  doc := TXMLDocument.Create;
  XMLRead.ReadXMLFile(doc, 'file.xml');
  try
    RicordificaTree(doc.DocumentElement);
    stmt.Execute('delete from tabella');
    stmt.Execute('update sqlite_sequence set seq=0');
    InsertTree(updStmt, doc.DocumentElement);
    stmt.Execute('update sqlite_sequence set seq=10000');

    XMLWrite.WriteXMLFile(doc, 'file.xml');
  except
  end;
  tabellaAware.Refresh;
  doc.Free;
end;

Questa è una mia routine che legge una tabella. La trasforma in un albero (XML per comodità di lettura su file).
Fa le trasformazioni che mi servono.
Pulisce la tabella, ripristina i contatori delle autokey e reinserisce tutto da zero.
Questo mi serve per evitare buchi logici.
Essendo un albero, quello che elaboro, c'è molta ricorsione tra i nodi.
Poi vedi tu cosa preferisci fare ;)
Stilgar
« Ultima modifica: Aprile 23, 2013, 10:55:11 pm da Stilgar »
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:problemi con sqlite 3 e zeos
« Risposta #48 il: Aprile 24, 2013, 01:53:52 am »
appoggio i dati su tabelle su disco. Il codice che hai postato fa capire le tue conoscenze informatiche. Io non sono ai tuoi livelli. Ho iniziato agli inizi degli anni '80 col basic e poi sempre con linguaggi interpretati. Quello che si impara in gioventù ci segue nella vita. L'informatica non è la mia prima attività anche se miei programmi hanno girato, ai tempi del dos, in alcune pubbliche amministrazioni, con ottimi risultati.  Questo lo dico affinchè tu non denigri troppo il codice che allego. il mondo è cambiato, ora l'interfaccia è indipendente dalla gestione dei dati, due realtà autonome ma il programmatore deve avere coscenza di entrambe. ahime! io non conosco le istruzioni SQL nè l'assembler. il codice che allego serve a stampare il bilancio provvisorio di un'azienda ad una tale date. Come ho già detto i calcoli vengono fatti e scritti su disco su tabelle di appoggio, a calcolo ultimato i risultati vengono scritti su disco nella tabella principale e poi stampati. Ti sarei grato se tu riuscissi a evitarmi a tempi alterni:
0 record(s) updated. Only one record should have been updated.
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2389
  • Karma: +10/-0
Re:problemi con sqlite 3 e zeos
« Risposta #49 il: Aprile 24, 2013, 02:00:16 am »
Quale procedura da il problema?
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:problemi con sqlite 3 e zeos
« Risposta #50 il: Aprile 24, 2013, 02:18:00 am »
a tempi alterni, non ho capito cosa non piace a zeos. Forse le routine sono troppo vecchie.
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:problemi con sqlite 3 e zeos
« Risposta #51 il: Aprile 24, 2013, 02:22:04 am »
ad occhio penso che il problema stia nello not.EOF e nel not.BOF che a secondo dei dati non viene intercettato, mi succedeva anche con delete che ho risolto con le istruzioni SQL.
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:problemi con sqlite 3 e zeos
« Risposta #52 il: Aprile 24, 2013, 02:24:48 am »
se ci fosse la possibilità di posizionarsi sulla line che ha causato l'errore al posto di aprire il debug assembler, che non capisco, forse riuscirei a dare una risposta.
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2389
  • Karma: +10/-0
Re:problemi con sqlite 3 e zeos
« Risposta #53 il: Aprile 24, 2013, 09:24:51 am »
Visto così errori macroscopici non ci sono.
Se vuoi il log delle attività, controlla tra i componenti di Zeos il Monitor.
Fa tutto in automatico (registrazione presso il driver manager e altre cosine).
Gli devi solo impostare il nome del file dove mettere il testo del logo e dirgli che è attivo all'inizio delle tue routine di calcolo, e lo disattivi alla fine.
Questo per focalizzare l'attenzione del log solo sulla parte in analisi.
.Active := true e .Active:=False nulla di difficile.

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

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:problemi con sqlite 3 e zeos
« Risposta #54 il: Aprile 24, 2013, 10:57:56 pm »
grazie, ho attivato il monitor e ho capito molte cose. Non dà più l'errore.
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:problemi con sqlite 3 e zeos
« Risposta #55 il: Aprile 24, 2013, 11:17:27 pm »
l'errore non è nelle procedure ma nelle istruzioni all'interno del report - fortereport- ora devo cercare dove.
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:problemi con sqlite 3 e zeos
« Risposta #56 il: Maggio 02, 2013, 03:25:37 pm »
il problema è risolto era un'istruzione all'interno del report. Fortes report è davvero forte! lo tradotto in italiano, a qualcuno può interessare?
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

Legolas

  • Global Moderator
  • Sr. Member
  • *****
  • Post: 366
  • Karma: +3/-0
Re:problemi con sqlite 3 e zeos
« Risposta #57 il: Maggio 02, 2013, 03:55:17 pm »
Come no? C'è il repository della community che mi sembra il posto ideale per una release della traduzione ;)

antoniog

  • Scrittore
  • Sr. Member
  • *****
  • Post: 257
  • Karma: +0/-0
    • Informatica Utile
Re:problemi con sqlite 3 e zeos
« Risposta #58 il: Maggio 02, 2013, 04:43:44 pm »
mi spieghi per favore come caricarlo nel repository della community, grazie.
avrai solo la libertà che riuscirai a conquistarti e anche questa sarà incerta.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2389
  • Karma: +10/-0
Re:problemi con sqlite 3 e zeos
« Risposta #59 il: Maggio 02, 2013, 10:47:54 pm »
Dovresti avere un utente sourceforge.
Se non lo hai, puoi mettere nel forum un file compresso ;)
Poi ci pensa Legolas a committare nel repository :D

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

 

Recenti

How To

Utenti
  • Utenti in totale: 803
  • Latest: maXim.FI
Stats
  • Post in totale: 19169
  • Topic in totale: 2286
  • Online Today: 117
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 100
Total: 100

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.