* * * *

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 19, 2024, 08:42:37 pm

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

460 Visitatori, 0 Utenti

Autore Topic: Primi esperimenti con Lazarus... e qualche dubbio  (Letto 1315 volte)

AlexM

  • Newbie
  • *
  • Post: 10
  • Karma: +0/-0
Primi esperimenti con Lazarus... e qualche dubbio
« il: Febbraio 06, 2022, 06:45:42 pm »
Ciao a tutti

Come ho scritto nel forum di presentazione sono un ex utilizzatore Delphi e sto facendo qualche prova per un nuovo progetto che dovrò portare avanti. Mi sto trovando decisamente bene, ma ho qualche piccolo problema per cui chiedo cortesemente il vostro supporto:
- L’oggetto TTable non esiste in lazarus? Per un rapido accesso ad una tabella è comunque necessario usare un oggetto SQL? Come lettura non è un grosso problema, invece di selezionare la tabella scrivo una piccola query, ma pur avendo attivato l’autoupdate e l’autocommit le insert non si scrivono nel db, e soprattutto le update vanno sempre in errore….
- Ho installato la versione 64bit sia di Lazarus che di MySql, copiato la libreria libmysql.dll in system32 e la connessione funziona correttamente, ma quando accendo e spengo l’oggetto TSQL ricevo un errore di “access violation”, solo nell’IDE per fortuna, non quando mando l’eseguibile in Run. Da cosa è causato?
- Ogni tanto vedo comportamenti strani dell’IDE: oggetti che sfarfallano quando muovo il mouse, cambiano di posizione e di dimensioni apparentemente da soli, ecc… sbaglio qualcosa?

Grazie in anticipo!

Alex

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1266
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:Primi esperimenti con Lazarus... e qualche dubbio
« Risposta #1 il: Febbraio 06, 2022, 07:07:42 pm »
Prova ad usare "ZEOS dbo". Lo trovi nei menu "Pacchetto" -> Online Packet Manager.

E' in pratica il FireDac della situazione, si usa esattamente come usavi i componenti SQL in Delphi.

Se cerchi nel forum (tramite la ricerca) parole come database, zeos, sql, troverai dei post (guarda gli ultimi) in cui ci sono anche dei progetti demo).

Però sono abbastanza sicuro che quando scaricherai ZEOS riuscirai immediatamente ad usarlo.
Quando sceglierai di installarlo da On Line (ma anche se installassi pacchetti non online), ti verrà chiesto di RICOMPILARE LAZARUS.
Accetta. Rispetto a Delphi, dove i componenti aggiuntivi non modificavano l'IDE, in Lazarus devi ricompilare l'IDE.

EDIT: Ti posto un demo db (vedi com'è che lo usavo per le prove) e usa SQLite, lo puoi adattare a MySQL....

Ciao
« Ultima modifica: Febbraio 06, 2022, 07:11:14 pm da DragoRosso »
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

nomorelogic

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2870
  • Karma: +20/-4
Re:Primi esperimenti con Lazarus... e qualche dubbio
« Risposta #2 il: Febbraio 06, 2022, 07:12:26 pm »
- Ho installato la versione 64bit sia di Lazarus che di MySql, copiato la libreria libmysql.dll in system32 e la connessione funziona correttamente, ma quando accendo e spengo l’oggetto TSQL ricevo un errore di “access violation”, solo nell’IDE per fortuna, non quando mando l’eseguibile in Run. Da cosa è causato?

Ciao Alex e benvenuto
per questo problema, prova a copiare le dll anche nella cartella dove c'è Lazarus.exe, in questo modo dovrebbe funzionare anche l'IDE.
Imagination is more important than knowledge (A.Einstein)

bonmario

  • Hero Member
  • *****
  • Post: 1300
  • Karma: +10/-1
Re:Primi esperimenti con Lazarus... e qualche dubbio
« Risposta #3 il: Febbraio 06, 2022, 07:56:49 pm »
Ciao,
non ho mai utilizzato Delphi, cosa sarebbe l'oggetto TTable?

Per provare comunque a rispondere alle tue domande, io  lavoro sui DB senza usare componenti esterni, e faccio tutto con gli oggetti messi a disposizione "nativamente" da Lazarus, e fino ad ora non sento la mancanza di altro !!!
Normalmente uso questi 4 oggetti per connettermi ai DB:
Codice: [Seleziona]
    DBGrid1: TDBGrid;
    SQLConnector1: TSQLConnector;
    SQLQuery1: TSQLQuery;
    SQLTransaction1: TSQLTransaction;

Attualmente ho un solo progetto in cui devo scrivere sul DB. Le varie scritture/cancellazioni, vengono fatte tramite l'oggetto DBNavigator.
In testa ho questo:
Codice: [Seleziona]
        //Per poter modificare i record tramite DBNavigator1, ho bisogno delle seguenti opzioni:
        SQLQuery1.ReadOnly:=False;
        SQLQuery1.UsePrimaryKeyAsKey:=True;
        SQLQuery1.PacketRecords:=-1; //https://wiki.freepascal.org/mssqlconn#Error_20019_:_Attempt_to_initiate_a_new_Adaptive_Server_operation_with_results_pending
        SQLQuery1.UpdateMode:=upWhereChanged;

Scritto prima di fare la
Codice: [Seleziona]
SQLQuery1.Open;

La scrittura vera e propria, viene fatta tramite la proprietà "AfterPost" dell'oggetto TSqlQuery.

Qui il codice che uso:
Codice: [Seleziona]
procedure TForm1.SQLQuery1AfterPost(DataSet: TDataSet);
begin
  //Usata quando (TipoApertDB = tadScrivi)
  try
    SQLQuery1.ApplyUpdates;
    if (1 = 2) then begin
      SQLTransaction1.Commit; //A differenza di CommitRetaining, chiude la conenssione subito dopo aver committato
      GestVislTabella(Self);  //Visto quanto scritto qui sopra, ricarico la tabella
    end else begin
      SQLTransaction1.CommitRetaining; //Fa la commit, e tiene attiva la connessione
    end;
  except
    on E: Exception do begin
      EmettiErrore(0, 'ERRORE: ' +
                      LineEnding +
                      E.Message);
      //Ricarico i dati della tabella.
      //Se non lo facessi, l'utente vedrebbe in griglia anche i valori che non sono stati salvati !!!
      GestVislTabella(Self);
    end;
  end;
end;


Ciao, Mario

AlexM

  • Newbie
  • *
  • Post: 10
  • Karma: +0/-0
Re:Primi esperimenti con Lazarus... e qualche dubbio
« Risposta #4 il: Febbraio 06, 2022, 08:33:19 pm »
grazie a tutti per le risposte!
L'oggetto TTable consentiva in maniera molto semplice di accedere a una tabella selezionando praticamente solo la connection ed il nome della tabella, e collegandolo poi ai vari oggetti tipo grid, navigator, ecc. le insert/update/delete erano già funzionanti senza nessun codice. Praticamente l'oggetto SQL serviva solo quando sulla tabella dovevano essere effettuate delle "where" complesse.
Continuerò a provare secondi i vostri consigli, ma non ho capito se è meglio usare le ZEOSLib (che già usavo in Delphi) oppure i componenti nativi. Preciso che l'"Access violation" mi saltava fuori quando attivavo gli oggetti db access in ide, ma comunque si attivavano correttamente, per questo penso sia un problema risolvibile......
Già una soluzione ai miei dubbi dovrebbe arrivare dal metodo CommitRetaining invece del Commit, anche se in teoria speravo che l'opzione "autocommit" li rendesse superflui

Grazie ancora e ..... ci sentiamo dopo le prossime prove  :)

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 1266
  • Karma: +43/-0
  • Prima ascoltare, poi decidere
Re:Primi esperimenti con Lazarus... e qualche dubbio
« Risposta #5 il: Febbraio 06, 2022, 09:12:41 pm »
Ciao,
non ho mai utilizzato Delphi, cosa sarebbe l'oggetto TTable?

E' un classe che rappresenta una tabella di un database. Con essa, come accennava @AlexM, accedi ad una tabella e puoi facilmente interagire con il DB senza nenache sapere cosa è SQL. In ZEOS l'equivalente è TZTable. Ha i metodi per navigare, inserire, modificare, cancellare, ordinare, filtrare, etc ...

Ciao
:) Ogni alba è un regalo, ogni tramonto è una conquista :)

tito_livio

  • Full Member
  • ***
  • Post: 146
  • Karma: +3/-0
Re:Primi esperimenti con Lazarus... e qualche dubbio
« Risposta #6 il: Febbraio 07, 2022, 01:31:14 am »
Ciao,
anche io lavoro con i componenti nativi, in Mysql e anch'io provengo da Delphi.
Per poter salvare devi soltanto:
Preso il campo chiave primaria della tsqlquery, devi settare, per la proprietà ProviderFlags, pfInKey=true, altrimenti non salva.
Per salvare le modifiche fatte:
Codice: [Seleziona]
tsqlquery1.applyupdates;
tmysql57connection1.Transaction.CommitRetaining;
Nell'Ide, anche a me raramente dà access violation all'apertura della query ma poi funziona tutto lo stesso, in esecuzione nessun problema. Ancora non ho capito il perché.
Se poi hai due tabelle in master-detail basta aggiornare la query della tabella detail "on change" del campo chiave della tabella master.
Spero di essere stato chiaro e di aiuto,
buon lavoro.

AlexM

  • Newbie
  • *
  • Post: 10
  • Karma: +0/-0
Re:Primi esperimenti con Lazarus... e qualche dubbio
« Risposta #7 il: Febbraio 07, 2022, 12:47:25 pm »
ciao a tutti

ho installato i componenti Zeoslib, e mi sembrano molto più veloci e stabili degli originali.....

ale

 

Recenti

How To

Utenti
  • Utenti in totale: 785
  • Latest: gmax
Stats
  • Post in totale: 18772
  • Topic in totale: 2233
  • Online Today: 578
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 460
Total: 460

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.