* * * *

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.
Settembre 27, 2022, 06:09:53 am

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

19 Visitatori, 0 Utenti

Autore Topic: Aiuto, perdo record  (Letto 655 volte)

tito_livio

  • Jr. Member
  • **
  • Post: 80
  • Karma: +0/-0
Re:Aiuto, perdo record
« Risposta #15 il: Agosto 18, 2022, 03:36:58 pm »
Dunque i valori che inserisci sarebbero validi
A me sembra un errore di valori duplicati su un campo indicizzato.
Ad esempio, per qualche motivo non hai usato i campi chiave autonumeranti e i client generano autonomamente delle chiavi per identificare i record, ma non hai un meccanismo che garantisca che queste chiavi siano effettivamente uniche nella tabella. Il meccanismo che usi funziona bene normalmente (al 99%) ma ogni tanto saltano fuori chiavi identiche su client diversi e l'append fallisce

La tabella ha due campi chiave, uno autoincrementante che però io non riempio e lascio fare al DBMS, l'altro non è unico. Credo quindi che non possanio essere fatti errori.

Intendevo per operazioni effettuate da un singolo client direttamente dall'applicativo. Lasciando per un attimo perdere i client su rete, già con un solo client puoi avere problemi se instauri più transazioni (ossia scritture multiple) contemporanee da più Thread: ovvio che dipende dal motore che scegli. Se usi Oracle o Microsoft con le versioni enterprise dei prodotti è certo che puoi fare più o meno quello che vuoi senza prestare bada ai Thread, ai client o ad altri dettagli.

Poi, pensando ad un sistema multiclient, le cose si fanno più complesse e occorre molto spesso migrare su database più performanti e sicuri.


Quindi se tu dovessi gestire un sistema multiclient scarteresti Mysql e Firebird. Cosa ne pensi di PostgreSql?
Comunque, da circa una settimana, ho eliminato l'accesso contemporaneo a due tabelle, da parte di un applicativo di un client.
Il rimedio sembra efficace anche se lo terrò ancora sotto controllo.
« Ultima modifica: Agosto 18, 2022, 03:40:16 pm da tito_livio »

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 686
  • Karma: +13/-0
  • Prima ascoltare, poi decidere
Re:Aiuto, perdo record
« Risposta #16 il: Agosto 18, 2022, 05:49:02 pm »
Quindi se tu dovessi gestire un sistema multiclient scarteresti Mysql e Firebird. Cosa ne pensi di PostgreSql?
Comunque, da circa una settimana, ho eliminato l'accesso contemporaneo a due tabelle, da parte di un applicativo di un client.
Il rimedio sembra efficace anche se lo terrò ancora sotto controllo.

Il rimedio sarà sicuramente efficace, tenuto conto delle specifiche MySQL.
Per il consiglio non saprei dirti, ho usato tantissimi Database ma nei tempi che furono e non per applicazioni gestionali multiutente. Poi ho sempre più usato (per scelta dei clienti) MSSql (versione free o quella server).

Per un periodo, legato alla difficoltà di trovare un DB compatibile con applicazioni e sistemi industriali, mi sono fatto un mio server "SIMIL SQL" che interfacciava i vari client e scriveva poi su un db SQLite.

In questo momento, dovessi scegliere un DB multiclient FREE (o quasi FREE) tra quelli disponibili mi troverei in difficoltà, dovrei studiarci sopra un attimo.

Forse, qualcuno del forum con una maggiore esperienza potrebbe darti qualche consiglio utile.

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

Mimmo

  • Jr. Member
  • **
  • Post: 53
  • Karma: +0/-0
Re:Aiuto, perdo record
« Risposta #17 il: Agosto 19, 2022, 09:13:26 am »
Io attualmente uso postgres per un'applicazione gestionale multi-utente utilizzata da una trentina di client qui in azienda e non ho mai avuto problemi. L'applicazione è fatta con lazarus e l'accesso utilizza la libreria di sistema sqldb/PQConnection. Lettura e scrittura però sono tutte gestite attraverso query sql (nessun componente grafico TDB-qualcosa che legga e scriva su db direttamente) e anche le transazioni sono gestite esplicitamente a codice.

Per quella che è la mia esperienza Postgresql è assolutamente utilizzabile come soluzione enterprise. Ad esempio ho visto il sistema di prenotazione CUP di diversi distretti lombardi e piemontesi e i sistemi di prenotazione di alcuni importanti ospedali milanesi usare pg come db del backend.

bonmario

  • Hero Member
  • *****
  • Post: 1125
  • Karma: +1/-1
Re:Aiuto, perdo record
« Risposta #18 il: Agosto 19, 2022, 10:55:35 am »
Io attualmente uso postgres per un'applicazione gestionale multi-utente utilizzata da una trentina di client qui in azienda e non ho mai avuto problemi

Scusami, vado un po' fuori tema, ma ne approfitto per chiederti una cosa che magari sai.
Al lavoro, abbiamo un applicativo che lavora su 3 DB: Microsoft SQL Server, Oracle, Postgre, ma è di una lentezza esasperante.

Ho fatto io un programma con Lazarus, che legge i dati dai vari DB, ma al momento lo uso solo io sul mio PC. Vorrei farlo usare anche dai colleghi, ma per funzionare ha bisogno delle dll dei vari DB. Per MSSql, ed Oracle, ho capito che ci sarebbero problemi di licenza, per quanto riguarda invece Postgre, credo di poter copiare tranquillamente su ogni PC in cui serve le dll che gli servono per poter funzionare, ma non ne sono sicuro al 100%. Tu ne sai qualcosa di più ?

Io, con queste licenze, vado sempre in paranoia, e ci capisco poco !!!!


Grazie, Mario

Mimmo

  • Jr. Member
  • **
  • Post: 53
  • Karma: +0/-0
Re:Aiuto, perdo record
« Risposta #19 il: Agosto 19, 2022, 12:40:33 pm »
Ciao Mario,
innanzitutto confesso che non mi sono posto il problema..  ::) quindi non so darti una risposta assolutamente certa.
Possiamo però cogliere l'occasione e fare un ragionamento assieme: Postgresql è rilasciato con la licenza PostgreSQL License https://www.postgresql.org/about/licence/ che è una licenza estremamente permissiva e il cui primo punto recita

Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies.

Inoltre nella documentazione della vecchia versione 8.2 di pg ho trovato scritto:

Normally you do not need to install any of the client files. You should place the libpq.dll file in the same directory as your applications .EXE-file.

La trovi qui https://www.postgresql.org/docs/8.2/install-win32.html.

Quindi non vedrei problemi a distribuire le dll necessarie a far funzionare il tuo applicativo insieme con l'applicativo stesso, salvo includere anche la licenza di pg e specificare nella documentazione la presenza di quei file così licenziati.

bonmario

  • Hero Member
  • *****
  • Post: 1125
  • Karma: +1/-1
Re:Aiuto, perdo record
« Risposta #20 il: Agosto 19, 2022, 04:49:26 pm »
Ok, grazie.

Mi hanno fatto spaventare qualche anno fa, e da allora vado sempre con i piedi di piombo su queste cose !!!

Ciao, Mario

DragoRosso

  • Scrittore
  • Hero Member
  • *****
  • Post: 686
  • Karma: +13/-0
  • Prima ascoltare, poi decidere
Re:Aiuto, perdo record
« Risposta #21 il: Agosto 19, 2022, 06:28:06 pm »
Ok, grazie.
Mi hanno fatto spaventare qualche anno fa, e da allora vado sempre con i piedi di piombo su queste cose !!!
Ciao, Mario

In genere, per il problema delle licenze soprattutto per i motori dei DB, non devi preoccuparti più tanto. Chi vuole limitare il funzionamento di un sistema adotta ben altri sistemi (oltre alle dichiarazione scritta di licenza) a maggior ragione se si parla di società come Microsoft o Oracle. Per MS SQL i driver sono già inclusi in tutte le distribuzioni di Windows, o sono eventualmente scaricabili in maniera gratuita. E' l'uso che è "blindato" a seconda delle licenza del server, per cui o ti connetti "presentando" tu una licenza oppure ti connetti con i limiti imposti dal server, ma comunque non violi licenze perchè al limite il server semplicemente non risponderà alle tue richieste.

Per Oracle non sò come funziona, ma ritengo adotti più o meno lo stesso sistema.

Certo, conoscere la tipologia d'uso di un servizio è fondamentale ma a meno che tu non sia il "distributore" dei sistemi server è sicuramente un fatto di cui non avere un timore innaturale.

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

 

Recenti

How To

Utenti
Stats
  • Post in totale: 16603
  • Topic in totale: 2022
  • Online Today: 24
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 19
Total: 19

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.