* * * *

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.
Aprile 18, 2024, 04:29:09 am

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

184 Visitatori, 0 Utenti

Autore Topic: efficacia del DBnavigator  (Letto 22164 volte)

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
efficacia del DBnavigator
« il: Febbraio 07, 2013, 08:56:38 pm »
non ho capito se il problema è legato all'SQLITE3 che uso per il db ,ma se per esempio uso il pulsante DELETE nel dbnavigator mi cancella il record corrente ; se però poi riavvio il programma mi ritrovo lo stesso record che avevo cancellato !!!

grazie e ciao
 p.s.: non è che forse mi tocca fare il commit e l'update ???

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:efficacia del DBnavigator
« Risposta #1 il: Febbraio 07, 2013, 09:12:47 pm »
Più che la commit ... hai fatto la post?
Nel senso che i componenti data aware tengono traccia dei cambiamenti, ma fino al post non vengono inviati al motore. In questo modo puoi fare anche la cancel senza rileggere da DB. (Operazione potenzialmente pesante se le query sono particolarmente complesse).
In generale il DBNavigator ti dovrebbe attivare e disattivare i bottoni in modalità gratis (post e cancel). Al massimo usa il refresh come pulsante subito dopo aver eseguito le operazioni che vuoi (edit, insert) fai il post e il refresh.
Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
Re:efficacia del DBnavigator
« Risposta #2 il: Febbraio 07, 2013, 10:51:33 pm »
ho fatto un bottone che salva mettendo così :

SQLQuery1.Edit;
  SQLQuery1.UpdateMode:=UpWhereChanged;
  SQLQuery1.ApplyUpdates;
  SQLTransaction1.Commit;
  SQLQuery1.Close;
  SQLQuery1.Open;                           

ma mi dà errore se successivamente clicco su edit ,sia da bottone che da dbNavigator!
per il delete proverò
ciao

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:efficacia del DBnavigator
« Risposta #3 il: Febbraio 08, 2013, 09:54:52 am »
Azz, ma fare semplicemente "SQLQuery1.Post" ... non hai il metodo?
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
Re:efficacia del DBnavigator
« Risposta #4 il: Febbraio 08, 2013, 10:10:42 pm »
il problema è che con sqlquery1.post l'unica cosa che fà è tornare col puntatore al primo record e basta !!!
non mi cancella proprio nulla!
e così :
                SQLquery1.Delete;
      SQLTransaction1.Commit;
   sqlQuery1.post;
   SQLQuery1.Close;
  SQLQuery1.Open;     
mi dice che non è in editMode
ed anche aggiungendolo prima di delete , stesso errore

ciao

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:efficacia del DBnavigator
« Risposta #5 il: Febbraio 09, 2013, 01:48:54 am »
Hai provato a NON fare la commit?
Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
Re:efficacia del DBnavigator
« Risposta #6 il: Febbraio 09, 2013, 03:01:21 pm »
ho provato a togliero ma mi dà lo stesso errore:sqlquery1 is not in edit or insert state!
e anche se aggiungo: sqlquery1.edit , mi ritorna lo stesso errore!


ciao
p.s.:
ovviamente provo con bottoni miei perchè col dbNavigator devo tenere le azioni standard senza poterle modificare !

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
Re:efficacia del DBnavigator
« Risposta #7 il: Febbraio 09, 2013, 07:48:54 pm »
ho provato anche col dbNavigator ma sia cliccando su edit che su delete funziona solo in apparenza ,cioè modifica e cancella i record durante il funzionamento del programma; se poi terminato e riavviato i record sono ancora quelli originarii ... anche cliccando su post dopo l'edit perchè dopo delete ,il POST risulta disabilitato!



ciao

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:efficacia del DBnavigator
« Risposta #8 il: Febbraio 09, 2013, 09:49:05 pm »
Ragazzo mio. A questo punto, visto che la cosa diventa un attimo fastidiosa, workaround, o come dicono dalle mie parti "femo el giro largo".
Codice: [Seleziona]
delete from table where condition1 and condition2.
Chiedi all'engine di ranzare la riga che ti interessa ;)

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

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
Re:efficacia del DBnavigator
« Risposta #9 il: Febbraio 10, 2013, 10:02:18 am »
Ma cosa intendi ?

brunello

  • Jr. Member
  • **
  • Post: 83
  • Karma: +0/-0
Re:efficacia del DBnavigator
« Risposta #10 il: Febbraio 10, 2013, 11:13:39 am »
sei sicuro che nella query non hai utilizzato un ordinamento non indicizzato della tabella che ti restituisce il dataset solo in lettura?

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:efficacia del DBnavigator
« Risposta #11 il: Febbraio 10, 2013, 12:15:55 pm »
Gianpa.
I componenti dataware non fanno altro che lanciare le "query" al posto tuo.
L'eliminazione di un record da un insieme, avviene in 2 fasi.
1) Eliminazione logica dal programma.
2) Eliminazione via engine su database.

Se la seconda operazione non avviene o da un errore che non emerge a programma, il record è cancellato temporaneamente. Al primo "refresh" dei dati viene pescato di nuovo.
Se contatti direttamente l'engine e lanci la cancellazione, al refresh non avviene il caricamento del record in questione.

Poi c'è da considerare che questo regionamento ha senso solo per query del tipo "Select * FROM Tabella1".
Nel caso di "Select * from Tabella1, Tabella2 WHERE Tabella2.campo1=tabella1.Chiave1" non è detto che l'engine riceva una "delete" sensata.
Esempio di problemi da risolvere:
1) Da quale tabella deve cancellare?
2) Quale tabella deve lasciare inaterata?

Per questi problemi, in genere si usa un'altro componente. Uno di Aggiornamento. (Update qualche cosa).
Il primo componente (quello della lettura dei dati) contatta il secondo per le modifiche.
Se ricordo bene, puoi impostare tutte queste cose (updata, insert etc etc etciù) dal componente di lettura dei dati che hai usato.
Cerca DeleteSQL (se ricordo bene) nell'ObjectInspector.
Fammi sapere.
Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
Re:efficacia del DBnavigator
« Risposta #12 il: Febbraio 10, 2013, 02:56:09 pm »
ho riprovato facendo prove diverse per ogni azione:
con bottoni miei sono riuscito a inserire nuovi record e a modificarli ,ma mai a cancellarli!
però il dbNavigator non ha in questi casi alcuna validità perchè cliccando sui suoi bottoni standard sembra solo simulazione e basta !!!

possibile ?

ciao

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
Re:efficacia del DBnavigator
« Risposta #13 il: Febbraio 12, 2013, 10:14:45 am »
usando sqliteAdmin ho modificato un po' i dati dalla scheda "modifica dati" e tutto funziona perfettamente !
quello che vorrei fare è passare il controllo del db al dbnavigator di Lazarus ,non mi sembra di chiedere troppo!!!
nei controlli non ho trovato alcuna restrizione:non ci sono settaggi di sola lettura dei dati !!!

 :'(

ciao

gianpa

  • Full Member
  • ***
  • Post: 180
  • Karma: +0/-0
Re:efficacia del DBnavigator
« Risposta #14 il: Febbraio 12, 2013, 03:49:51 pm »
forzando la cancellazione del record con questi comandi:
SQLQuery1.Close;
  SQLQuery1.SQL.Text:='DELETE FROM munizione WHERE copalle= :stid;';
  SQLQuery1.Params.ParamByName('stid').AsString:=dbedit1.text;
  SQLQuery1.ExecSQL;
  SQLTransaction1.commit;   

mi ritorna l'errore :"database is locked" !!!!
allora il db è bloccato !? da dove si può rendere UNLOCKED ?

ciao e GRAZIE!               

 

Recenti

How To

Utenti
  • Utenti in totale: 785
  • Latest: gmax
Stats
  • Post in totale: 18769
  • Topic in totale: 2232
  • Online Today: 219
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 184
Total: 184

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.