Gambas-it

Gambas3 => Programmazione => Topic aperto da: Gianluigi - 19 Ottobre 2015, 00:51:11

Titolo: Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 19 Ottobre 2015, 00:51:11
Prosegue il discorso sulle finestre incorporate iniziato qui (http://www.gambas-it.org/smf/index.php?topic=4418.msg36819#msg36819) da Tornu.
Come vi dicevo ho buttato giù un'idea di database ordinativi minimale,  all'inizio ancora più minimale, non riesco a decidermi come farlo mi sembra sempre che manchi qualcosa ma voglio farlo piccolo.
L'idea sarebbe quella di dare un aiuto iniziale alla comprensione dei database relazionali senza esagerare nel voler andare troppo nello specifico degli ordini, ma senza neanche arrivare agli inutili esempi che si vedono in giro nei libri.
Ho pensato a un database ordinativi perché anche se stringato dovrebbe permette di affrontare i principali aspetti che normalmente si presentano al programmatore.
Si lo so è un po presuntuoso da parte mia metterla così in fin dei conti io non ne so molto o meglio ne so poco, ma confiderei molto nel vostro aiuto, pertanto sono a chiedervi se gentilmente potete dare un occhio al progetto che per ora prevede solo le tabelle e l'organizzazione della finestra crea ordini, la più complessa e importante.
Allego un foglio di calcolo con tre pagine la prima spiega un po cosa significa, cosa so o credo di sapere di database ordinativi e che cosa c'ho messo.
Il secondo foglio è l'organizzazione del database e il terzo riguarda la finestra crea ordinativi.
Vi prego di darmi una mano a sciogliere i miei dubbi, cosa inserireste che io non ho messo o non ho neanche pensato? Altrimenti qui rimango nell'altalena e non cavo un ragno dal buco.
Grazie
 :ciao:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: tornu - 19 Ottobre 2015, 12:37:31
Ciao Gianluigi,
spero che tu sia guarito, vedo che ti sei messo a studiare.... :)
Veniamo al dunque facendo la stessa premessa da me fatta nella discussione da cui tu hai fatto nascere
questo nuovo topic:
se il tuo intento è solo dare una dimostrazione di uso dei database in ambito gestionale come mi pare di capire,
diciamo che ci sono solo alcune cose (sempre secondo il mio modesto parere) da aggiungere e/o migliorare, nel
caso contrario l'approccio che hai dato alla costruzione del database andrà modificato implementando altre
tabelle e modificando quelle che tu hai previsto anche se il tuo intento è creare solo un programma di ordini.
Ti espongo alcune mie considerazioni:
1) secondo me non si può prescindere da una tabella Fornitori, in quanto nella mia esperienza ho visto che capita
   spesso che due o più fornitori utilizzino lo stesso codice per articoli completamente diversi fra loro. Come fai a
   scindere in fase di ordine quale articolo inserire se non sai a quale fornitore appartiene?
2) Anagrafica clienti, ai inserito solo tre campi per identificare il cliente (nome, cognome, città) e se ti capita
   una completa omonomia nella stessa città, a chi inputi l'ordine?
3) Non hai previsto dei listini di vendita, quindi sei costretto ogni volta che inserisci un'articolo nell'ordine a
   calcolarti il prezzo di vendita a mano con il margine da te desiderato.
Ci sarebbe tanto altro da dire, ma andiamo a piccoli passi, dipende a quale livello di funzionalità vuoi arrivare,
ma un minimo ci vuole anche in semplici programmi. Ti allego alcune modifiche (evidenziate in giallo) su tuo
documento descrittivo. Fammi sapere che ne pensi in attesa che magari qualcun'altro del Forum dica la sua.
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 19 Ottobre 2015, 19:11:00
Ciao tornu,
grazie dell'attenzione, si sono guarito più o meno. Ci avrei giurato che non t'andava bene :D
Scherzi a parte, sapevo di certe lacune nei campi delle tabelle, ma pensavo che fosse sufficiente dare l'idea, magari spiegando alla fine quali lacune.
Mi scuso per non essermi spiegato meglio già ieri ma è così difficile anticipare quello che si vuol fare quando noi stessi non lo abbiamo ancora capito.
Forse non dovevo scegliere come database la sola parte ordine di un gestionale, ma nella mia ignoranza mi sembrava che essa rappresentasse bene i vari aspetti essenziali utili a spiegare cosa sono le relazioni e cioè i dati aggregati (tabelle) e le varie relazioni fra le aggregazioni e nell'aggregazione stessa.
Forse qui sbaglio ed è appunto per questo che ho chiesto aiuto proprio a voi che ne masticate, se non essenziali alla dimostrazione certi particolari mi parevano superflui, ma ripeto è da un po di giorni che metto e tolgo e allora...

Via, cap, provincia ecc. mi sembravano ovvi è per questo che non li ho inseriti, anche la scelta degli idraulici l'ho fatta proprio per semplificare e nell'immaginario non abbisognano di grandi attrezzature anche se poi non è così vero.

Rimanendo alla tabella clienti, se volessimo farla nei canoni allora non dovremmo scartare il sistema di inserire le colonne tel1 e tel2, perché nei gestionali “veri” forse sarebbe più utile mettere una tabella a parte per i contatti e un'altra per i dispositivi di contatto in quanto a priori non possiamo sapere se un nostro contatto ha più addetti agli acquisti e quanti telefoni e telefonini fax e-mail siti e le prossime diavolerie che si inventeranno ecc.
Ci sarà il cliente che ha un solo telefono niente telefonini mail fax e quello che avrà 10 addetti con 5 dispositivi l'uno e allora se prevediamo troppo avremo troppi campi vuoti e viceversa non basteranno e non potremmo  estrarre una valida rubrica.

Testata, Righe ci avevo pensato anch'io ma poi mi sono chiesto se non sia troppo specifica degli ordini e quindi che invece di agevolare la comprensione del rapporto molti a molti non finisca invece per ostacolarla, ma ti ringrazio di averla citata perché comunque sia devo farlo anche io, due spiegazioni sono meglio di una.

Nella tabella ordini mi aggiungi il numero di ordine ma non si usa dare all'ordine il suo numero come chiave primaria? Per quale motivo due numeri?

Sempre nella Ordini metti il totale e pure in Righe Ordini, ma questo non è un errore da matita rossa?  Per quanto ne so io nessun campo calcolato va inserito in tabella. Così almeno mi avevano insegnato.
Non comprendo a cosa serva hai le quantità, i prezzi e gli sconti non è un'inutile ridondanza?

In Righe Ordini metti riga omaggio perché, non basta sconto 100% al limite sconto omaggio?

UM l'avevo prevista all'interno della descrizione (es. centimetro. tubo rame diam. 10) ma hai fatto bene a ricordarla va messa, che tu sappia è obbligatoria per legge, o potrebbe anche bastare la citazione in descrizione?

Vedo che fai distinzione fra Articoli e Listino Articoli io qui intendevo usarlo nella seconda accezione.

Hai ragione comunque il prezzo articoli è troppo semplificato non va bene, ma penso che occorra ci sia la colonna del prezzo di costo alla produzione e la colonna ricarico ma niente campi calcolati.

Anche in Articoli mi aggiungi codice articoli se ho capito bene qui lo fai per via dei codici uguali dei fornitori.
Tieni conto che io ho ipotizzato un piccolo produttore di articoli per idraulica pertanto non ha problemi di inserire codici altrui i codici sono i suoi.
Nel libro avrei intenzione di suggerire qualche trucco per favorire i propri utenti nell'importazione dei dati da altri database e/o fogli di calcolo.
Di solito, o meglio ai miei tempi i fornitori inviavano i listini su fogli di calcolo (Excel), per importare senza problemi i codici senza incorrere nel problema che hai indicato, anteponevo tre lettere iniziali più un trattino (per favorirne la lettura) al codice dei fornitori, queste tre lettere erano nella tabella fornitori subito dopo la ragione sociale, le devi aggiungere sempre anche agli eventuali prodotti fatti dall'utente tre lettere e trattino altrimenti non funziona.
È semplice e a mio parere lavora bene. Le lettere sono estrapolate dalle ragioni sociali.
Tu che sistema usi, dei due codici, che vantaggi porta?

Sono d'accordo dire nome articolo suona ridicolo, ma se stai studiando da zero cosa è un database forse distrae meno, suona più facile insieme a nome cliente (ragione sociale), sarò scemo ma a me queste semplificazioni mi hanno sempre aiutato nello studio delle cose difficili.
Alla fine del capitolo su database e SQL era mia intenzione correggere tutte le semplificazioni usate, sempre ch'io mi ricordi che lo devo fare.

Carissimo tornu se non sei morto sotto il peso di questo mattone, sei indistruttibile.

Spero vorrai continuare a supportarmi. È la prima volta che confronto quello che credo di sapere sui database con uno esperto, te ne sono grato.
 :ciao:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: tornu - 19 Ottobre 2015, 21:12:24
Ti supporto molto volentieri (sempre entro i miei limiti che sono molti) e non hai niente
di cui scusarti. Esperto  ???
La premessa fatta all'inizio della mia precedente risposta era per capire se doveva essere un'esempio per il tuo libro,
e nel caso secondo me sarebbe stato sufficente il classico esempio della rubrica telefonica arrichita magari da funzioni
che non trovi negli esempi in giro che tentano di spiegare un database, anche per differenziarti da quelli che tu chiami
"banali" (tua citazione post di apertura).
Ti semplificherebbe la vita nel parlare di relazioni una a uno o uno a molti, chiavi primarie, indici, ecc... volendo spiegare
un database (questo vuoi ottenere, giusto?), avendo scelto come esempio un "piccolo gestionale" secondo me ti sei un
pochino complicato la vita, nel senso che non puoi prescindere dall'inserire certe informazioni e certe relazioni per renderlo
un minimo funzionale, anche se poi parli di importare listini e altre funzioni che non sono proprio minimali.
Rispondendo alle tue osservazioni:
Tabella clienti - per quanto riguarda le informazioni di contatto (telefoni, email, fax, ecc...) per me vanno inserite in questa
tabella essendo quelle di base per avere un minimo di informazioni del cliente, eventuali altre figure da contattare (magazzino,
ufficio acquisti, ecc...) dovresti prevedere una rubrica contatti legata ai clienti/fornitori, ma penso che esuli dal tuo intento.
Ti assicuro che questo è il minimo, il gestionale che uso nell'azienda in cui lavoro solo l'anagrafica clienti è composta da dieci
form di informazioni da compilare, ma prevede un sistema di semplificazione quando si codifica un nuovo cliente.

Tabella ordini - a me hanno sempre insegnato che non va usato l'ID se non in certi casi, presumo tu faccia riferimento a questo
quando parli di numero e chiave primaria. Uno è l'ID che identifica in modo univoco l'ordine, ma nell'uso pratico dei gestionali si
usa una numerazione "personale" o se vuoi convenzionale, per esempio tipo questa 15/0056 che identifica anno e numero ordine.

Il totale inserito in testata è il totale dell'intero ordine, quello nelle righe è il totale della singola riga.

Non è una ridondanza il totale riga singola e dato da prezzo_unitarioxscontoxquantità_venduta. Senza la quantità come
fai a calcolare i totali?

Per qunto riguarda i campi calcolati il discorso è lungo se inserirli o meno in una tabella.

Le righe omaggio sono di due tipi "Sconto Merce" è l'iva te la paghi tu o "Omaggio" è l'iva la paga il cliente.

Unità di Misura all'interno della descrizione? Non ho capito.

Per quanto riguarda l'identificazione del fornitore, quello che tu hai citato è lo stesso sistema che utilizziamo in azienda da noi
 e che io ho adottato.Il fornitore è identificato da tre lettere prese dalla ragione sociale dello stesso, per esempio:
Ragione Sociale = Fornitore Beni
Abbrevazione Fornitore = FOB
il campo noi lo chiamiamo Abbrevazione Fornitore ed è conposto da quattro caratteri, ma ne usiamo normalmente tre.
Con questo sistema Abbreviazione Fornitore+Riferimento Articolo (o Codice Articolo) identifichi in modo univoco
l'articolo.
A proposito di database...finisco qui o rischiamo di essere sbattuti fuori per intasamento del database del Forum... ;D
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 19 Ottobre 2015, 22:32:04
Ti supporto molto volentieri (sempre entro i miei limiti che sono molti) e non hai niente
di cui scusarti. Esperto  ???
Niente false modestie, si capisce che ne sai e mi fa piacere discuterne con te  :D
Mi farebbe ancora più piacere se anche altri trovassero stimolo nella conversazione.
Citazione
La premessa fatta all'inizio della mia precedente risposta era per capire se doveva essere un'esempio per il tuo libro,
e nel caso secondo me sarebbe stato sufficente il classico esempio della rubrica telefonica arrichita magari da funzioni
che non trovi negli esempi in giro che tentano di spiegare un database, anche per differenziarti da quelli che tu chiami
"banali" (tua citazione post di apertura).
Ti semplificherebbe la vita nel parlare di relazioni una a uno o uno a molti, chiavi primarie, indici, ecc... volendo spiegare
un database (questo vuoi ottenere, giusto?), avendo scelto come esempio un "piccolo gestionale" secondo me ti sei un
pochino complicato la vita, nel senso che non puoi prescindere dall'inserire certe informazioni e certe relazioni per renderlo
un minimo funzionale, anche se poi parli di importare listini e altre funzioni che non sono proprio minimali.
Mi sono espresso male intendevo dare qualche spunto, indicazione ma non inserirlo nell'esempio di database, il database deve essere funzionale alla spiegazione degli aspetti più importanti.
Parli di rubrica, ma già esiste un esempio in tal senso fatto dal bravo Golia, io vorrei ... complicarmi la vita e renderla un poco più facile a chi ci leggerà.
Citazione
Rispondendo alle tue osservazioni:
Tabella clienti - per quanto riguarda le informazioni di contatto (telefoni, email, fax, ecc...) per me vanno inserite in questa
tabella essendo quelle di base per avere un minimo di informazioni del cliente, eventuali altre figure da contattare (magazzino,
ufficio acquisti, ecc...) dovresti prevedere una rubrica contatti legata ai clienti/fornitori, ma penso che esuli dal tuo intento.
Ti assicuro che questo è il minimo, il gestionale che uso nell'azienda in cui lavoro solo l'anagrafica clienti è composta da dieci
form di informazioni da compilare, ma prevede un sistema di semplificazione quando si codifica un nuovo cliente.

Non far finta di non capire per farti contento potrei inserire il  cap ma dimmi a cosa servirebbe ai fini della spiegazione e degli esempi come detto anche da te la gestione dei contatti è molto più complessa che mettere qualche numero di telefono e poi scusa inserire campi con dicitura telefono1, telefono2 è contrario si o no alla buona progettazione di database relazionali? Questo è proprio un classico di quello che non si deve fare.
E tu me lo consigli? Non ti vergogni  >:(

Citazione
Tabella ordini - a me hanno sempre insegnato che non va usato l'ID se non in certi casi, presumo tu faccia riferimento a questo
quando parli di numero e chiave primaria. Uno è l'ID che identifica in modo univoco l'ordine, ma nell'uso pratico dei gestionali si
usa una numerazione "personale" o se vuoi convenzionale, per esempio tipo questa 15/0056 che identifica anno e numero ordine.
Giuro che non l'ho mai visto io ho sempre visto il "numero" (text) di ordine che era anche chiave primaria (PK)

Citazione
Il totale inserito in testata è il totale dell'intero ordine, quello nelle righe è il totale della singola riga.

Non è una ridondanza il totale riga singola e dato da prezzo_unitarioxscontoxquantità_venduta. Senza la quantità come
fai a calcolare i totali?
Ridondante non c'entra, mi sono espresso male anche qui, devo stare più attento a quello che scrivo altrimenti se non riesco a farmi capire da te che ne sai figurati da chi non ne sa  :rolleyes:
Intendevo dire che non capisco a cosa ti serve avere il totale sia generale che di riga visto che lo puoi calcolare agevolmente con una interrogazione. Ripeto a me hanno insegnato così.
Citazione
Per qunto riguarda i campi calcolati il discorso è lungo se inserirli o meno in una tabella.
E no questa non te la abbuono, non te la puoi cavare così  :violent:  Spiegati
Citazione
Le righe omaggio sono di due tipi "Sconto Merce" è l'iva te la paghi tu o "Omaggio" è l'iva la paga il cliente.
Giusto non ho pensato che se hai un campo REAL non puoi infilarci TEXT (in realtà SQLite fa proprio così ma noi dobbiamo insegnare...)
Citazione
Unità di Misura all'interno della descrizione? Non ho capito.
Ma se ti ho fatto l'esempio...
Perché UM deve essere inserito anche nella tabella Righe Ordini (ma che rimarrà ArtOrd)?
Citazione
Per quanto riguarda l'identificazione del fornitore, quello che tu hai citato è lo stesso sistema che utilizziamo in azienda da noi
 e che io ho adottato.Il fornitore è identificato da tre lettere prese dalla ragione sociale dello stesso, per esempio:
Ragione Sociale = Fornitore Beni
Abbrevazione Fornitore = FOB
il campo noi lo chiamiamo Abbrevazione Fornitore ed è conposto da quattro caratteri, ma ne usiamo normalmente tre.
Con questo sistema Abbreviazione Fornitore+Riferimento Articolo (o Codice Articolo) identifichi in modo univoco
l'articolo.
A proposito di database...finisco qui o rischiamo di essere sbattuti fuori per intasamento del database del Forum... ;D
Ohhh finalmente qualcosa che combacia, anche se vedo che manca il trattino  :rotfl:

Mi spieghi allora il raddoppio del codice articolo?

Proseguiamo: Tabella fornitori ma nel mio esempio del produttore di articoli per l'idraulica i fornitori sono di materia prima questo discorso sul codice non serve giusto? Devo cambiare esempio?
Piuttosto Magazzino, Bolle, Fatture ma serve ai fini della spiegazione cosa aggiunge di particolarmente importante da spiegare a un novizio?
Per il libro serve vedere i vari aspetti principali di SQL mica puoi far vedere tutto.

Altra cosa è intraprendere un percorso per costruire noi del forum "Il Gestionale" dei gamberi, ma questa è un'altra storia, una storia affascinante però  :D
 :ciao:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 20 Ottobre 2015, 11:36:37
Ciao tornu,  :-[  :-[  :-[
accidenti se vado avanti così, o peggio se vado indietro così mi sa tanto che devrò smettere anch'io di “rompere” come ha già detto qualcuno il quale però al contrario di me non rompe.
Il gravissimo errore, non da matita rossa bensì da bacchettata sulle dita, capello d'asino e dietro la lavagna dopo averci scritto sopra cento volte “scusa Tornu”,  in ginocchio sui ceci per tutta l'ora (o due?) di progettazione database, l'ho fatto io e malgrado mi sia stato segnalato con ben 3 dicasi 3 punti interrogativi, io non l'ho visto e ho continuato a straparlare.
Una chiave primaria in una tabella di collegamento con già le chiavi composite  :'(
E adesso? Come disse quel cinese a sua moglie “ora chi sa sa che non so cara San su si”.
Lascio perdere? Scrivo un giallo?  :'(  :'(
Dalla scorsa settimana è come minimo la seconda volta che non colgo il significato di quello che mi dicono  :'(  :'(  :'(
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 21 Ottobre 2015, 18:37:02
Adesso mi rendo conto di essermi comportato in modo troppo semplicistico nell'affrontare il problema, quindi chiedo perdono e un po di tempo per pensarci e riproporre uno schema, spero, meglio studiato.
Comunque continuo a credere che uno “stralcio” di gestionale sia più idoneo di altro per affrontare i più importanti aspetti della progettazione e scrittura di un database doverosamente ridotto visto chi scrive ma anche a chi è rivolto il libro.
Il principale problema come giustamente ha ricordato tornu è che un forum per sua natura deve affrontare un aspetto di un problema alla volta e quindi non è adatto a discutere un'intera strategia.
Lo schema pertanto sarà un file allegato, spero meglio congegnato. Sperando che voi esperti non lasciate il solo gentilissimo tornu ad avere a che fare con me, che cosa vi ha fatto di male, per punirlo così?  :evil:
L'idea è quella di creare un vero e proprio piccolo progetto, mi porterà via un po di tempo ma credo di non potermelo evitare.
Purtroppo io questo capitolo lo avrei dovuto scrivere molto più avanti (non abbiamo ancora scritto una riga di codice e siamo a pagina 102), ma sono incapace a scrivere sul portatile avendo imparato, si fa per dire, su una macchina da scrivere portatile meccanica tedesca.
So solo pigiare con somma violenza e con solo due dita sulla  tastiera e quelle delicate dei portatili mi ripagano saltando una marea di lettere, è più il tempo che uso per correggere che quello che dedico alla scrittura, così questa estate il poco tempo che ho dedicato a Gambas oltre a seguirvi è stato quello di scrivere qualche piccola applicazione e tirare giù lo schema- ciofeca per ordinativi.
 :ciao:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: tornu - 21 Ottobre 2015, 21:39:15
Ciao Gianluigi,
ti vedo un pò giù di morale... :)...scherzo, apprezzo la tua volontà di arrivare alla fine di un obiettivo che ti sei posto.
Tornando al tema di questa discussione, intanto mi scuso se magari non rispondo in tempi brevi, ma purtroppo
(o per fortuna) il lavoro in questo periodo mi impegna molto. Quello che posso dirti per quanto mi ha insegnato non tanto la
teoria (che ormai si è persa nel tempo) ma la pratica quotidiana, è che non ci sono delle regole scritte ben precise per quanto
riguarda la costruzione di un database, specialmente quelli per uso gestionale, sicuramente contesterai questa mia affermazione,
ma avendo visto un buon numero di programmi gestionali  di livello "altamente" professionale ti assicuro di aver visto campi
denominati "tel1, tel2, ecc.." che tanto ti hanno fatto rabbrividire. La costruzione di un database fatto bene e con tutti i crismi
secondo me non è una passeggiata di salute, salvo che non lo fai per professione ho hai un' esperienza così vasta che ti permette
di buttarlo giù al primo approccio rispetto al progetto che devi eseguire.Sicuramente qualcuno c'è anche qui nel Forum, a me il primo
che viene in mente è md9237 sicuramente persona preparata e capace di fare ciò. Quindi non ti demoralizzare, se vuoi ricomnciare da
capo diponibile a darti una mano, come ti ho già detto per quel che posso. Se trovo un pò di tempo magari butto giù un database
secondo il mio punto di vista per un programma rivolto ad ordinativi merce.  :ciao:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 21 Ottobre 2015, 23:02:54
Ciao tornu,
apprezzo tantissimo il tuo aiuto e ti sono veramente grato del sostegno che mi offri, non ti scusare altrimenti mi fai sentire in colpa anche per quello che ho scritto agli altri, so benissimo che voi giovani dovete lavorate (concordo con te nel dire che è una fortuna) io scherzo è più forte di me, anche quando parlo seriamente devo dire qualcosa che alleggerisca il discorso.
Si hai ragione mi sono un po demoralizzato per l'errore clamoroso che è li da mesi, forse ho capito da dove deriva e se è così allora è un pochino meno grave (per me), ma devo verificare.
Hai ragione anche per quanto concerne telefono1, 2 ecc. anch'io i pochi database che ho potuto vedere avevano tabelle così congegnate una di una ditta metalmeccanica aveva dieci campi e mischiati fornitori e clienti (un campo sigla li differenziava).
A questo punto mi viene da pensare che la regola che ricordo (e messo anche in pratica) l'ho sognata di notte anche perché sul libro dove mi pareva di averla letta (Progettazione database di M. J. Ernandez) non l'ho trovata, anzi lo schema di esempio Ordinativi del libro assomiglia al tuo suggerito.  :D
Sempre compatibilmente col tuo tempo, se mi puoi dare una mano così importante come quella di tirare giù il progetto te ne sarei molto grato, però a me basta già il fatto che mi sostieni con la tua esperienza e credimi che per me vuol dire moltissimo.
  :ciao:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Picavbg - 21 Ottobre 2015, 23:18:06
@ Gianluigi
Ho letto, passo dopo passo, tutta la discussione svolta fino ad oggi ed ho resistito a parteciparvi. Dopo l'uiltima lettura non ce l'ho fatta più ed eccomi qua.
Anche se non mi sento ferrato in materia di DB, penso di dire ugualmente la mia, poi deciderai tu. Il libro infatti è tuo e tu solo sai come dovrà essere organizzato.
La mia esperienza sulla strutturazione dei DB ha impattato qualche anno fa con i DB SQLite, perchè quello non è un vero e proprio globo da DB. Ho cercato all'epoca di applicare tante delle nozioni conosciute per costruire il mio DB in ContabFam e ricordo di avere preso tanti pesci in  faccia che ancora, odorandomi, ne sento le maleodoranti esalazioni.
Ho dovuto rinunciare a chiavi primarie e secondarie, nonchè a indici. Ho dovuto per forza di cose impiantare una chiave univoca per singola tabella coincidente col codice ID della stessa. L'unica organizzazione che ho potuto dare è stata quella della relazionalità, legando le tabelle fra di loro soltanto concettualmente: richiamando di volta in volta quelle colonne che mi interessavano.
A parte SQLite, pensando ad ambienti operativi legati a singoli pc, non mi pare che fino ad oggi, ne siano consentiti altri. Diversamente, in ambienti operativi di tipo Server, le cose cambiano perchè esistono anche  MySQL, PostgreSQL, Firebird, ODBC.
Quindi, se permetti, ti esorterei a valutare a quale ambiente operativo tu voglia destinare il tuo libro e poi decidere sul tipo di struttura di DB a cui orientarti. Purtroppo se il tuo indirizzamento dovesse rimanere sull'ambiente operativo di singolo pc, allora l'unica bestia strutturale che ti rimane è quell'idecoroso SQLite3.
Perchè indecoroso? Perchè a parte le citazioni riportate sopra, gestisce tutte le colonne di una tabella nel formato String; ciò significa che quando andrai a  definire una colonna nel formato integer o boolean, o byte o short o Float, il software incaricato a leggere/scrivere un DB, procederà di sua sponte a trasformare i vari dati nell'unico formato accettato e cioè nel formato String.
Saputo ciò, puoi procedere ad organizzare il tuo DB minimale esattamente come lo vuoi pensare TU, tanto per scrivere un esempio di DB non è necessario dare vita ad una struttura complicata con tutte le tabelle professionalmente necessarie, ma solamente a quelle tabelle che serviranno per costruire l'esempio campione che renda l'idea di come pensare un DB relazionale. L'imporatnte è tenere conto a non ripetere, se non che per la o le colonne chiave, dati che occuperebbero solo spazio inutile e di memoria di disco e di programma, ma anche comporterebbero lungaggini procedurali.
Detto questo ti lascio, perchè, fuori dalla mia quarantena, sto prendendo freddo. :)
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 22 Ottobre 2015, 20:48:00
@ Gianluigi
Ho letto, passo dopo passo, tutta la discussione svolta fino ad oggi ed ho resistito a parteciparvi. Dopo l'uiltima lettura non ce l'ho fatta più ed eccomi qua.
Anche se non mi sento ferrato in materia di DB, penso di dire ugualmente la mia, poi deciderai tu. Il libro infatti è tuo e tu solo sai come dovrà essere organizzato.
La mia esperienza sulla strutturazione dei DB ha impattato qualche anno fa con i DB SQLite, perchè quello non è un vero e proprio globo da DB. Ho cercato all'epoca di applicare tante delle nozioni conosciute per costruire il mio DB in ContabFam e ricordo di avere preso tanti pesci in  faccia che ancora, odorandomi, ne sento le maleodoranti esalazioni.

 :rotfl:

Citazione
Ho dovuto rinunciare a chiavi primarie e secondarie, nonchè a indici. Ho dovuto per forza di cose impiantare una chiave univoca per singola tabella coincidente col codice ID della stessa. L'unica organizzazione che ho potuto dare è stata quella della relazionalità, legando le tabelle fra di loro soltanto concettualmente: richiamando di volta in volta quelle colonne che mi interessavano.
A parte SQLite, pensando ad ambienti operativi legati a singoli pc, non mi pare che fino ad oggi, ne siano consentiti altri. Diversamente, in ambienti operativi di tipo Server, le cose cambiano perchè esistono anche  MySQL, PostgreSQL, Firebird, ODBC.
Quindi, se permetti, ti esorterei a valutare a quale ambiente operativo tu voglia destinare il tuo libro e poi decidere sul tipo di struttura di DB a cui orientarti. Purtroppo se il tuo indirizzamento dovesse rimanere sull'ambiente operativo di singolo pc, allora l'unica bestia strutturale che ti rimane è quell'idecoroso SQLite3.
Perchè indecoroso? Perchè a parte le citazioni riportate sopra, gestisce tutte le colonne di una tabella nel formato String; ciò significa che quando andrai a  definire una colonna nel formato integer o boolean, o byte o short o Float, il software incaricato a leggere/scrivere un DB, procederà di sua sponte a trasformare i vari dati nell'unico formato accettato e cioè nel formato String.
Saputo ciò, puoi procedere ad organizzare il tuo DB minimale esattamente come lo vuoi pensare TU, tanto per scrivere un esempio di DB non è necessario dare vita ad una struttura complicata con tutte le tabelle professionalmente necessarie, ma solamente a quelle tabelle che serviranno per costruire l'esempio campione che renda l'idea di come pensare un DB relazionale. L'imporatnte è tenere conto a non ripetere, se non che per la o le colonne chiave, dati che occuperebbero solo spazio inutile e di memoria di disco e di programma, ma anche comporterebbero lungaggini procedurali.
Detto questo ti lascio, perchè, fuori dalla mia quarantena, sto prendendo freddo. :)

Ti allego un piccolo esempio che ti dovrebbe chiarire un po le idee rispetto alle nuove funzioni di SQLite che d'accordo che non sarà il massimo, ma per trattare i dati di un applicazione non server va benissimo e ancora meglio come supporto a un libro che voglia introdurre un neofita alla programmazione.
Smettila di stare in quarantena tu di SQL e di Gambas ne capisci potresti dare una mano a me e Top Fuel con suggerimenti e qualche piccola applicazione che spiega un piccolo aspetto della programmazione in Gambas.
Se ti va naturalmente, ti saluto in fiduciosa attesa di un tuo contributo
 :ciao:

Ti sei dimenticato di Base o come si chiama il db do Open-Libre-Office c'ha anche le macro come Access  ;D
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: tornu - 22 Ottobre 2015, 22:30:47
Mi ha fatto piacere l'intervento di Picavbg, un'altro utente che secondo me la sa "lunga" su DB e Gambas, il quale
mi ha fatto riflettere sui miei discorsi fatti con Gianluigi, nel senso che non avevo pensato come a fatto Picavbg a
quale DB Gianluigi si rivolgesse, mentre io per scontato davo "suggerimenti" pensando a MySql che è il DB che uso
normalmente anche per programmi standalone. Io non conosco assolutamente SQLite e la sua struttura, e non mi
ha mai incuriosito, al momento sto curiosando anche su MariaDb e i database NoSql. A Gianluigi voglio dire che se il
suo progetto che vuole inserire nel libro è basato su SQLite sul forum ci sono molte persone che lo usano e conoscono
bene, comunque il mio apporto dove fossi in grado di intervenire non lo farò certo mancare.  :)
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 23 Ottobre 2015, 14:44:52
Ciao tornu,
io non ho mai preso in considerazione MySql e tanto meno PostgreSQL di cui so... praticamente niente.
Sono interessatissimo a questi database (sinceramente più a PostgreSQL anche se deve essere tostissimo avendo una logica diversa rispetto ai database relazionali classici) ma non trovi che per introdurre una persona che nulla sa di programmazione e database a questi tipi nati per servire dei client, ci voglia gente con...  :-[
Ti ricordo, nel caso te lo fossi scordato  :) , io sono un novizio alle prime armi della programmazione e mi permetto di scrivere un libro insieme a Top Fuel (e aperto a chi voglia darci una mano) solo perché tale libro non esiste già, questo come ben sai nello spirito open.
Naturalmente questo libro non può che essere rivolto a gente che nulla sa o molto poco, pertanto se te la senti di guidarmi, io che di server e client non so niente, sono disponibilissimo a introdurre insieme a me stesso i novizi in questo favoloso mondo.  :D
Per rimanere nell'ambito  del noviziato ci potremmo indirizzare su MariaDB che ha licenza GNU 2.  :D :D
in effetti avevo intenzione di dedicarmi allo studio di PostgreSQL dopo aver concluso l'avventura del libro e dopo aver compreso cosa vuol dire programmare ad oggetti. ;D
Se ci stai tu che di MySQL sei pratico io ti seguo volentierissimo, ultra volentierissimo. :D :D :D
Tu metti la mente e io il braccio, per l'esattezza due dita.  ;D
 :ciao:

PS. Mi puoi togliere una curiosità? Cosa intendi per standalone?
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: tornu - 23 Ottobre 2015, 21:26:36
Ciao Gianluigi,
ho usato l'aggettivo standalone (ma è un aggettivo  ???) senza manco accorgermi di averlo fatto.
Questo il suo significato
Citazione
Caratteristica di un software che può eseguire i compiti per cui è preposto senza che siano richiesti altri componenti.

Standalone, la cui traduzione letterale dall'inglese è autonomo, indica generalmente qualcosa in grado di funzionare "da solo".

Per questo motivo, un programma è detto standalone quando è in grado di avviarsi senza necessitare della procedura di installazione.
Ho usato questo termine in modo improprio per dirti semplicemente che uso MySql anche per programmi che girano solo su un
pc e indipendentemente dalla complessità/quantità di dati da gestire, anche se la natura del DB è client/server.
E' ovvio (spero di non averti dato un' impressione diversa) che l'utilizzo che io ne faccio nelle mie piccole/medie applicazioni che
sviluppo (non per lucro) per amici o piccole attività principalmente artigiane (nel mio piccolo nell'intento di far conoscere Linux)
non comporta  obbligatoriamnte la costruzione di un DB con tutte le impostazione (molte non le uso proprio) spinte al massimo
delle performance, quando evito ridondanza di dati, query eseguite in tempi accettabili e tabelle costruite con un minimo di logica,
salvo casi eccezionali mi fermo a questo. Tutte le altre funzionalità che un DB di questo tipo o altri ha in dotazione le provo/studio
per mia curiosità/formazione personale. Forse semplifico molto e non è certamente da "esperto" dire che è un DB con cui mi trovo
a mio agio e fino ad ora non mi è mai capitato di non trovare una soluzione per estrapolare dati interconnessi tra loro anche da
tabelle magari non costruite nei migliore dei modi.
Devo dirti però in tutta sincerità che mettere su carta o su un post le mie "minime" conoscenze in merito mi mette in difficoltà,
questo è stato ed è purtroppo un mio limite. Comunque come ti ho già detto disponibile per quel che posso.  :ciao:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Picavbg - 23 Ottobre 2015, 23:31:06
ho usato l'aggettivo standalone (ma è un aggettivo  ???) senza manco accorgermi di averlo fatto.
Questo il suo significato
Citazione
Caratteristica di un software che può eseguire i compiti per cui è preposto senza che siano richiesti altri componenti.

Standalone, la cui traduzione letterale dall'inglese è autonomo, indica generalmente qualcosa in grado di funzionare "da solo".

Per questo motivo, un programma è detto standalone quando è in grado di avviarsi senza necessitare della procedura di installazione.

Dal mio "Dizionario di informatica" cartaceo leggo testualmente (grassetto compreso):
Citazione
stand-alone : da solo, automatico. Si dice di un sistema informatico funzionante in modo autonomo, non essendo connesso o dipendente da un
computer principale.
In definitiva un pc non attaccato informaticamente ad una rete  locale o intranet ,  è un pc stand-alone, mentre un sistema con due o più pc di cui il principale è un server, mentre  tutti  gli altri, logicamente connessi ad esso, sono chiamati client a costituiscono il cosiddetto mmodello client/server.
Scusate se non sono stato sufficientemente tecnico nell'esposizione di un concetto per me planetario, ma meglio non ho saputo fare.  :-\
Ciao a tutti e due.
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: sotema - 24 Ottobre 2015, 17:01:33
Ciao a tutti.
Caspita, da un semplice esercizio sulle finestre incorporate siamo giunti alla progettazione di un database per gestire un sistema di ordini...Thing is changing direbbero oltre oceano.
Bene!!!

Tanto per aggiungere un poco di carne al fuoco e per sollecitare ulteriormente la discussione, si potrebbe dire che nell'ambito di Database Relazionali il concetto di Client/Server non si riferisce alle macchine, ma al software. PostgreSQL, MySQL, MariaDB ed altri sono Client/Server perché costituiti da due distinte entità ciascuna delle quali svolge il proprio compito, l'una senza l'altra sono perfettamente inutili. Il Server si occupa di mantenere e gestire, semplificando molto, i dati sotto forma di tabelle, indici, viste ecc. ecc. il Client si rivolge al Server, tramite interrogazioni SQL, per ottenere i dati e restituirli all'utente. In tutto questo non trovo nulla che implichi l'utilizzo di più computer. Le due entità possono essere ospitate dalla stessa macchina.
Personalmente credo che se devi progettare un database per la gestione di dati uniformi come una rubrica telefonica, una collezione musicale o catalogare le foto delle vacanze SQLite sia perfetto, Firefox e Thunderbird lo utilizzano per gestire Segnalibri e Contatti. Ma laddove i dati siano disomogenei, correlati tra loro e magari ad accesso concorrenziale, la scelta cade inesorabilmente su un RDBMS, volevo scrivere PostgreSQL, ma voglio concedere qualche possibilità anche ad altri, anche se utilizzi un solo computer.

Passando alla struttura del DB concordo con le osservazioni fatte da Tornu, alle quali aggiungerei che relativamente agli articoli bisognerebbe prevedere la gestione delle confezioni e delle promozioni. Ti faccio un esempio pratico.
Le fascette metalliche che si utilizzano per fissare i raccordi in gomma, possono essere vendute singolarmente, in confezioni da 10 da 20 o da 100; in pratica lo stesso articolo (la fascetta) diventa più articoli differenti (x10, x20, x100).

Tabella Articoli: 
includerei un campo per il codice a barre.
il campo Art_Iva lo trasformerei in FK sulla tabella Aliquote che contiene le aliquote iva.

Tabella Testata Ordini:
introdurrei i campi Data_Creazione e Data_Evasione

Tabella Clienti:
non userei il campo Cli_Sconto in quanto la percentuale di sconto può variare in base all'articolo; una minuteria può godere di uno sconto diverso rispetto ad un utensile o un macchinario. Bisognerebbe prevedere una struttura di tabelle per gestire le scontistiche dei clienti in base alle categorie merceologiche.

io non ho mai preso in considerazione MySql e tanto meno PostgreSQL di cui so... praticamente niente.
Sono interessatissimo a questi database (sinceramente più a PostgreSQL anche se deve essere tostissimo avendo una logica diversa rispetto ai database relazionali classici) ma non trovi che per introdurre una persona che nulla sa di programmazione e database a questi tipi nati per servire dei client, ci voglia gente con...

No. Non credo tu voglia scrivere la Bibbia della progettazione database, materia complessa ed il cui studio non finisce mai, sono però convinto che sia meglio iniziare con gli strumenti giusti.

Il progetto mi interessa e sicuramente nei limiti delle mie conoscenze e del tempo disponibili parteciperò.
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 24 Ottobre 2015, 21:23:51
Codice: [Seleziona]
  Dim i As Integer  
  For i = 1 To 10000000 ' :)))))))))
    Print "Hurrà";; "Bene";; "Viva"
  Next

Carissimo sotema,
ho scelto di risponderti iniziando dal mio stato d'animo.  :D
Però al contempo sono anche preoccupatissimo, non mi sento affatto adeguato al compito, io di database ne so veramente poco il minimo indispensabile per fare qualche ciofeca con SQLite.
Per dire; nell'esempio che ho postato per Picavbg ho usato (un po anche per scherzo) una istruzione o una costruzione SQL come minimo imbarazzante, impossibile da usare in concorrenza. Il mio SQL magari non è così scarso, anche se non ci giurerei e certo è che non brilla. E il fatto di essere stato fermo quasi sei anni non mi ha proprio giovato.
Intendiamoci se tu ci supporti allora le cose cambiano decisamente.  :D :D
Sono partito con l'idea che se avessi avuto un po di supporto dal forum, malgrado la mia inadeguatezza qualcosa sarei riuscito a spiegare.
Ma adesso si inizia a parlare di cose decisamente più invitanti e interessanti, sono veramente felice.  :D :D :D
Allora, bando alle ciance e veniamo a bomba:
Quale database? Io visto che ti sei offerto volontario  ;D ne vorrei subito approfittare per proporre PostgreSQL, abbiamo la possibilità di guidare una Ferrari e ci accontentiamo di una berlina? Però prima di installarlo aspetto l'OK anche di tornu, intanto inizio a studiare come si fa.
Vado anche col progetto tenendo conto dei tuoi suggerimenti, meno male che a tornu avevo già chiesto scusa.
La faccenda delle fascette l'avevo pensata, cioè non delle fascette ma per far vedere come funziona una relazione molti a molti all'interno della stessa relazione-tabella avevo ipotizzato una cassetta degli attrezzi con... e poi mi sono dimenticato di disegnare la tabella.  :'(
A proposito esiste già che tu sappia qualche repository di dati inventati per database di prova?
Hai qualche suggerimento per l'utente da ipotizzare, il mio produttore di articoli idraulici (ma io di idraulica ci capisco poco) può andare?

Sono così contento che non riuscivo neanche a scrivere queste quattro frasi...
 :ciao:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: sotema - 25 Ottobre 2015, 19:48:50
Caro Gianluigi, premesso che non sono assolutamente un esperto, semmai un eterno principiante, innanzitutto apprezzo il tuo entusiasmo ed in secondo luogo il desiderio di scrivere questo manuale. Il progetto, oltre che propedeutico rappresenta un'occasione di collaborazione ed aggregazione del forum.


Veniamo all'oggetto della discussione.
PostgreSQL, se opterai per questo DB, lo puoi installare quasi certamente da gestore dei pacchetti, semmai dovremo spenderere qualche riga (nel manuale) circa la configurazione degli accessi, che risulta appena un poco più complicata rispetto MySQL.

La scelta dell' utente la trovo molto valida, un campo molto vasto e di articoli diversificati. Perlomeno non è la solita biblioteca o concessionaria di auto...

Per quanto riguarda la struttura del DB procederei per passi; partendo da una molto semplice, magari anche con qualche errore o carenze, per poi svilupparla passo passo, introducendo le migliorie e le correzzioni necessarie alla compressione dei concetti espressi.
Per meglio capirci, inizialmente per introdurre il concetto di relazione una tabella Cliente con i soli campi: Id, Ragione Sociale, Indirizzo, Comune, Cap e Telefono potrebbe bastare. In seguito la completermo aggiungendo i campi necessari (PartitaIva, CodiceFiscale, ...)

Coraggio Capitano parti alla guida della tua truppa...
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: tornu - 26 Ottobre 2015, 20:17:05
.....In definitiva un pc non attaccato informaticamente ad una rete  locale o intranet ,  è un pc stand-alone, mentre un sistema con due o più pc di cui il principale è un server, mentre  tutti  gli altri, logicamente connessi ad esso, sono chiamati client a costituiscono il cosiddetto mmodello client/server.
Scusate se non sono stato sufficientemente tecnico nell'esposizione di un concetto per me planetario, ma meglio non ho saputo fare.  :-\
Ciao a tutti e due.
Nell' accezione hardware e come dici tu.

Passando alla struttura del DB concordo con le osservazioni fatte da Tornu, alle quali aggiungerei che relativamente agli articoli bisognerebbe prevedere la gestione delle confezioni e delle promozioni. Ti faccio un esempio pratico.
Le fascette metalliche che si utilizzano per fissare i raccordi in gomma, possono essere vendute singolarmente, in confezioni da 10 da 20 o da 100; in pratica lo stesso articolo (la fascetta) diventa più articoli differenti (x10, x20, x100).
Con Gianluigi non sono andato molto in profondità visto il suo intento, ma se c'è la volontà..., a quello che hai detto con cui sono pienemente d'accordo, aggiungo che hai introdotto il concetto di "confezione" che può avere vari aspetti sia in fase di vendita ma
anche in fase di acquisto. Uno per esempio è questo: acquisto in confezioni da 100 Pz. (confezione minima di acquisto) a seconda
del fornitore può avere il prezzo per confezione oppure per unità della stessa, e io vendo a pezzi singoli.
Non sono d'accordo sul discorso che l'articolo se è in confezioni (imballo) diverse diventi più articoli, in questo caso siccome l'articolo
è sempre lo stesso anche se in imballi diversi il discorso si può gestire implementando l'uso di funzioni come il moltiplicatore quantità o il fattore di conversione.

Citazione
Tabella Articoli: 
includerei un campo per il codice a barre.
il campo Art_Iva lo trasformerei in FK sulla tabella Aliquote che contiene le aliquote iva.
Anche più di uno, è la possibilità di generarne uno automaticamente da programma se il fornitore non lo prevvede.
Che significa FK ?

Citazione
Tabella Testata Ordini:
introdurrei i campi Data_Creazione e Data_Evasione
:ok:

Citazione
Tabella Clienti:
non userei il campo Cli_Sconto in quanto la percentuale di sconto può variare in base all'articolo; una minuteria può godere di uno sconto diverso rispetto ad un utensile o un macchinario. Bisognerebbe prevedere una struttura di tabelle per gestire le scontistiche dei clienti in base alle categorie merceologiche.
Sono d'accorto con te, era per semplificare, in questo caso bisogna introdurre una gestione di politiche di acquisto e vendita legate alle categorie merceologiche.

Citazione
No. Non credo tu voglia scrivere la Bibbia della progettazione database, materia complessa ed il cui studio non finisce mai, sono però convinto che sia meglio iniziare con gli strumenti giusti.
La penso come te. Credo che Gianluigi abbia capito cosa intendevo con le mie varie risposte alle sue perplessità, perchè avvolte volendo
semplificare troppo (è capisco il suo intento) ci si complica la vita.

Citazione
Il progetto mi interessa e sicuramente nei limiti delle mie conoscenze e del tempo disponibili parteciperò.
Io non sò se per un progetto tale con tutti i limiti che possiamo avere, ma comunque cercando di realizzarlo al meglio delle nostre
conoscenze si possa fare con SQLite, che come ho detto io non conosco, altrimenti il primo passo è quello di decidere su quale
database, ed in ogni caso potrebbe essere una discussione molto interessante (almeno per me) da cui Gianluigi in ogni caso
potrebbe trarre spunti da una "applicazione reale" per i suoi esempi da riportare sul libro.
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: tornu - 26 Ottobre 2015, 20:21:48
Caro Gianluigi, premesso che non sono assolutamente un esperto, semmai un eterno principiante, innanzitutto apprezzo il tuo entusiasmo ed in secondo luogo il desiderio di scrivere questo manuale. Il progetto, oltre che propedeutico rappresenta un'occasione di collaborazione ed aggregazione del forum.


Veniamo all'oggetto della discussione.
PostgreSQL, se opterai per questo DB, lo puoi installare quasi certamente da gestore dei pacchetti, semmai dovremo spenderere qualche riga (nel manuale) circa la configurazione degli accessi, che risulta appena un poco più complicata rispetto MySQL.

La scelta dell' utente la trovo molto valida, un campo molto vasto e di articoli diversificati. Perlomeno non è la solita biblioteca o concessionaria di auto...

Per quanto riguarda la struttura del DB procederei per passi; partendo da una molto semplice, magari anche con qualche errore o carenze, per poi svilupparla passo passo, introducendo le migliorie e le correzzioni necessarie alla compressione dei concetti espressi.
Per meglio capirci, inizialmente per introdurre il concetto di relazione una tabella Cliente con i soli campi: Id, Ragione Sociale, Indirizzo, Comune, Cap e Telefono potrebbe bastare. In seguito la completermo aggiungendo i campi necessari (PartitaIva, CodiceFiscale, ...)

Coraggio Capitano parti alla guida della tua truppa... 

 :ok:  :ok:  :ok:   :coder:   :hatecomputer:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: sotema - 26 Ottobre 2015, 22:20:53
Scusate se soono conciso ma ho poco tempo e sto rispondendo da cellulare (a proposito Ubuntu Phone, pur non essendo a mio parere pronto per la distribuzione di massa, mi piace assai).
Sono contento della sintonia con Tornu, significa che non ho detto delle cavolate. Per quanto riguarda il DB opterei per PGSQL  ma solo perché lo conosco meglio. Se decidi per MYsql sarà l'opportunità di studiarlo.

@Tornu FK=Foreign Key
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 26 Ottobre 2015, 23:34:52
Ciao tornu,
vedo che approvi PostgreSQL  :D :D :D
Aggiungo PK = Primary Key, CPK = Composite Primary Key, CPK/FK Composite Primary Key/Foreign Key
Per disegnare i database io uso 1 lato UNO e M lato MOLTI ma è errato occorrerebbe usare N. I più tanti usano disegnare una riga che unisce le chiavi con una forchetta a tre punte lato molti e una barra che interseca la riga lato uno.

Ciao sotema,
prima di tutto ti ringrazio delle bellissime parole di incoraggiamento però “Capitano”... forse di lungo sorso :) ma una volta, adesso sono stato relegato alla moderazione.  :'(

Tornando al nostro bellissimo problema; malgrado sia subito partito a testa bassa dopo il tuo primo intervento e abbia già tirato giù un elenco provvisorio di tabelle da paura che ti elenco così ti spaventi anche tu :)
Clienti, Vettori, Fornitori, Addetti, Impiegati, TestataOrdini, RigheOrdini, Articoli, MagazzinoArticoli, Destinazioni, DDT, Misure, TipiTrasporto, Pagamenti, IvaCodici, IvaEsenzioni, Depositi, Banche e stavo ragionando su cosa ancora inserirvi, quali tabelle di raccordo ci volessero, se non fosse il caso di considerare anche le offerte e mi ero già preparato parecchie domande ecco che tu giustamente mi riporti alla realtà, bene.

Se l'obbiettivo rimane quello iniziale e cioè aiutarmi a scriverne nel libro per instradare un neofita alla comprensione dei database va benissimo iniziare così, ma io intravedo in questa discussione l'embrione di qualcosa di più ampio e potremmo provare a coltivarlo, alla mal parata nulla ci vieta di riprendere la vecchia via pardon, rotta.

Se è vero come ami scrivere che non si finisce mai di imparare ed è vero, allora questa potrebbe essere l'occasione per sviscerare quello che crediamo di sapere su come si costruisce per benino un database per una piccola azienda.
Questo chiaramente non può stare in un libro i cui obbiettivi sono necessariamente, visto chi lo scrive, limitatissimi.

Date queste premesse se volessimo proseguire il discorso direi che potremmo partire dall'esigenza primaria e cioè: Di cosa ha bisogno l'azienda che ci ha contattati?

Come ricorda tornu anche qui siamo governati da un database e pertanto per non esagerare allego un file Writer, con allegati due pdf, che analizza un po più a fondo le nuove esigenze aziendali, cosa ne pensate se invece di iniziare con un po di tabelle stringate da ampliare via via, iniziassimo con un passo passo metodologico che possa insegnarci come si affrontano questi problemi?
La tiro giù un po così:
Prima capire le esigenze del cliente. Ad esempio cosa mi sono dimenticato di chiedere?
In base a queste esigenze fissare gli obiettivi del database.
Scomporre le informazioni e raggrupparle in relazioni.
Disegnare le tabelle cercando le chiavi primarie
Cercare le relazioni fra tabelle e le chiavi esterne
Disegnare le tabelle di raccordo
Installare PostgreSQL
Installare pgAdmin III per poter controllare le interrogazioni?
Capire come far dialogare Gambas col database
Creare finalmente con Gambas il database e popolarne le tabelle.
Creare l'interfaccia grafica
A questo punto sarò ancora vivo?
Altre ed eventuali
Inutile per ora proseguire oltre col discorso attendo un vostro riscontro.
Guardate, non so esprimervi tutta la gratitudine che provo per voi in questo momento  :-*  :-*
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 27 Ottobre 2015, 00:10:47

Passando alla struttura del DB concordo con le osservazioni fatte da Tornu, alle quali aggiungerei che relativamente agli articoli bisognerebbe prevedere la gestione delle confezioni e delle promozioni. Ti faccio un esempio pratico.
Le fascette metalliche che si utilizzano per fissare i raccordi in gomma, possono essere vendute singolarmente, in confezioni da 10 da 20 o da 100; in pratica lo stesso articolo (la fascetta) diventa più articoli differenti (x10, x20, x100).
Con Gianluigi non sono andato molto in profondità visto il suo intento, ma se c'è la volontà..., a quello che hai detto con cui sono pienemente d'accordo, aggiungo che hai introdotto il concetto di "confezione" che può avere vari aspetti sia in fase di vendita ma
anche in fase di acquisto. Uno per esempio è questo: acquisto in confezioni da 100 Pz. (confezione minima di acquisto) a seconda
del fornitore può avere il prezzo per confezione oppure per unità della stessa, e io vendo a pezzi singoli.
Non sono d'accordo sul discorso che l'articolo se è in confezioni (imballo) diverse diventi più articoli, in questo caso siccome l'articolo
è sempre lo stesso anche se in imballi diversi il discorso si può gestire implementando l'uso di funzioni come il moltiplicatore quantità o il fattore di conversione.

Io da quanto dite capisco questo e spero sia corretto: Siccome un articolo in un database deve apparire una sola volta in un punto e poi richiamato in ridondanza dove serve solo e unicamente attraverso la sua chiave primaria, allora occorre richiamarlo così anche nello stesso listino prezzi se appare altre volte perché presente in kit o imballaggi diversi. È questo che mi volevate suggerire? Se è così sono perfettamente d'accordo con voi.

Citazione
Citazione
Il progetto mi interessa e sicuramente nei limiti delle mie conoscenze e del tempo disponibili parteciperò.
Io non sò se per un progetto tale con tutti i limiti che possiamo avere, ma comunque cercando di realizzarlo al meglio delle nostre
conoscenze si possa fare con SQLite, che come ho detto io non conosco, altrimenti il primo passo è quello di decidere su quale
database, ed in ogni caso potrebbe essere una discussione molto interessante (almeno per me) da cui Gianluigi in ogni caso
potrebbe trarre spunti da una "applicazione reale" per i suoi esempi da riportare sul libro.
Siamo d'accordo no si usa la Ferrari (PostgreSQL).
La discussione è interessantissima in qualsiasi modo, certo è che se accettate di partecipare ad una costruzione che parte dall'esigenza del cliente e che prima di fare il passo successivo analizza il problema attraverso le vostre esperienze (io metto tutte le idee che mi passano per la testa e buona volontà  :-[), credo che faremmo qualcosa di valido per tutti gli appassionati a queste cose.
 :ciao:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: tornu - 27 Ottobre 2015, 00:58:42
Ciao tornu,
vedo che approvi PostgreSQL  :D :D :D
Aggiungo PK = Primary Key, CPK = Composite Primary Key, CPK/FK Composite Primary Key/Foreign Key
Per disegnare i database io uso 1 lato UNO e M lato MOLTI ma è errato occorrerebbe usare N. I più tanti usano disegnare una
riga che unisce le chiavi con una forchetta a tre punte lato molti e una barra che interseca la riga lato uno.
Grazie per le spiegazioni, non ho detto che approvo PostgreSQL, ma come ha detto sotema visto che ognuno di noi conosce un database diverso, nessun problema, non l'ho mai provato con Gambas leggo ogni tanto documentazione che lo riguarda come
per altri, ma mi intressa conoscerlo, quindi se si decide per questo disponibile a studiarlo. Quindi se sotema o chiunque vuole
partecipare è d'accordo decidi tu.
L'elenco di tabelle che hai indicato sono già un buon punto di partenza, ma come tu stesso hai detto  andiamo per gradi, quindi teniamole presenti e le esaminiamo più avanti. Io direi se siete d'accordo per prima cosa installiamo il DB scelto, proviamolo con
Gambas anche con un piccolo progetto test, scambiamoci documentazione a riguardo se qualcuno già ne possiede e andiamo
avanti, che ne pensate?
Caspita  :o Gianluigi, se già arrivato ai modelli di DDT e Fattura... ;)


Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: sotema - 27 Ottobre 2015, 07:35:01
Caspita  :o Gianluigi, se già arrivato ai modelli di DDT e Fattura... ;)
[/quote

Cavolicchio, mi viene il dubbio che Gianluigi voglia scrivere il gestionale per un suo cliente e ci stia sfruttando... ;D
Scherzi a parte, propongo di fare una pausa e focalizzare l'obiettivo. Sono cose completamente diverse scrivere un manuale per lo studio dei DB e progettare un gestionale.

In qualità di Team Leader ti spetta la responsabilità di guidare le scelte e decidere la strategia.  :P
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 27 Ottobre 2015, 13:24:30
Caspita  :o Gianluigi, se già arrivato ai modelli di DDT e Fattura... ;)

Cavolicchio, mi viene il dubbio che Gianluigi voglia scrivere il gestionale per un suo cliente e ci stia sfruttando... ;D

Ahi, lo sapevo, me lo sentivo che prima o poi avreste scoperto il mio subdolo gioco  :rotfl:
Devi sapere che sto sfruttando indegnamente i lontani ricordi della mia dolce metà che ha lavorato una vita come segretaria d'ufficio in una piccola azienda, da quando è iniziata questa storia ho notato che ha sempre qualcosa da fare in città.
Io nel mio trascorso lavorativo ho anche 26 anni da rappresentante di commercio...

Avete presente quei comandati che dicono: “Armiamoci e partite” oppure quegli altri “Avanti miei prodi!” poi si volta e non c'è più nessuno?
Rammento che usa dire: “Patti chiari amicizia lunga”, tranquilli ho finito i modi di dire :)
Citazione

In qualità di Team Leader ti spetta la responsabilità di guidare le scelte e decidere la strategia.  :P

In  qualità di Cheer Leader avrei anche deciso (PostgreSQL e passo passo metodologico), ma non volendo fare la fine dell'ultimo comandante, vorrei capire bene se siete d'accordo nel provare la nuova rotta.

È vero, ho chiesto aiuto al forum per il libro; poi però tornu ha detto cose che mi hanno fatto capire che c'era la possibilità di discutere più approfonditamente.
Questo mi ha fatto riflettere, guardando le discussioni sul forum riguardo la materia ci si rende conto che spessissimo non ci si comprende, perché ognuno di noi vede il database in modo diverso.
Normale, penserete, trattasi di materia così ampia, vero.

Citazione
Scherzi a parte, propongo di fare una pausa e focalizzare l'obiettivo. Sono cose completamente diverse scrivere un manuale per lo studio dei DB e progettare un gestionale.


Guarda con Top Fuel, che ahimè di database non sa, stiamo scrivendo un libro per neofiti che nulla sanno di programmazione, il capitolo dedicato al database voleva essere, come tutto il resto, solo uno spunto di introduzione con Gambas e SQL con un piccolo esempio pratico, nessun manuale all'uso del database per carità che in rete già ci sono e io poi...

Concordo con te si tratta di un'altra cosa, di qualcosa di decisamente più intrigante e affascinante.  :D
Capisco anche che ci possano essere delle perplessità sullo sviscerare tutto quello che sappiamo sull'argomento (io ho poche viscere  :-[), so che ci sono persone contrarie al fatto che si vada troppo nel particolare e si finisca per far male anziché bene, io non sono fra quelle io credo che senza il confronto su tutto, materie così difficili mai saranno capite a fondo da persone come me.

Devo dire una cosa è chiaro che da questo tipo di confronto chi ne ha più da guadagnare sono io, e credete non mi offendo se volete tornare al libro, che ogni aiuto è benedetto.

Caro sotema tu sei quello che praticamente ci rimette usi già PostgreSQL, sei tu che devi benedire la nuova rotta, se la benedici salpiamo verso i nuovi lidi.
 :ciao:

Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 27 Ottobre 2015, 19:14:21

Grazie per le spiegazioni, non ho detto che approvo PostgreSQL
...
 ma come tu stesso hai detto  andiamo per gradi, quindi teniamole presenti e le esaminiamo più avanti. Io direi se siete d'accordo per prima cosa installiamo il DB scelto, proviamolo con
Gambas anche con un piccolo progetto test, scambiamoci documentazione a riguardo se qualcuno già ne possiede e andiamo
avanti, che ne pensate?
Sono d'accordo con te.  :ok:

Io per installare PostgreSQL su Ubuntu 14.04 in internet ho trovato  questo:

Da terminale:

sudo apt-get install postgresql

Per l'nterfaccia grafica:

sudo apt-get install pgadmin3

Creare la password per l'user:

sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'LA_TUA_PASSWORD'"

Aprire l'interfaccia grafica iniziando a digitare pdad... nella dash

Nella finestra che si apre di pgAdmin andare su File>Adserver

si apre una finestra Properties dove digiteremo:

Address = 127.0.0.1
Description = Database prova
Service = db_Prova
Port = 5432
SSL =
Maintenance DB = postgres
Username = postgres
Password = LA_TUA_PASSWORD

Le cose stanno ancora così? Perché questo sito sembrava obsoleto tipo anno 2008

E poi? Il database db_Prova è aperto? Ci posso ravanare dentro?

Oppure devo aprirlo da terminale con sudo /etc/init.d/postgresql-n.n start ?
Ma poi scusate per lavorarci devo essere root? Non ho creato una password per l'user proprio per non operare come utente postgres che per PostgreSQL è come dire sudo in Ubuntu?
 ???  ???  ???
Prima di fare "paciughi" aspetto guru-dritte.

Citazione
Caspita  :o Gianluigi, se già arrivato ai modelli di DDT e Fattura... ;)

È il cliente che mi ha detto che vuole quella roba lì. ;)
 :ciao:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Golia - 27 Ottobre 2015, 19:51:32
Ciao
Io uso Postgres da qualche anno e mi trovo molto bene.
Lo installo nel mio sistema ( Mint KDE 17) direttamente col gestore pacchetti, quindi si trova nei repository. installo POSTGRESQL e PGADMIN

Una volta installato devi impostare la password, io faccio così:
da terminale
Citazione
sudo -u postgres psql template1
ALTER USER postgres WITH PASSWORD 'miapassword';
\q

Comunque ho pescato anch'io da quà
https://ilpinguinofurioso.wordpress.com/2007/08/08/installare-postgresql-su-ubuntu-704-feisty-fawn/ (https://ilpinguinofurioso.wordpress.com/2007/08/08/installare-postgresql-su-ubuntu-704-feisty-fawn/)
Ciao
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Golia - 27 Ottobre 2015, 19:58:28
Così mi connetto con gambas

Codice: [Seleziona]

Public $myconn As New Connection

Public Sub Connect()

 $myconn.Close
       With $myconn
          .Type = "postgresql"
          .Host = "127.0.0.1"
          .Name = "MioDatabase"
          .Login = "postgres"
          .Password = "MiaPassword"
          .port = "5432"
       End With 
    Try $myconn.Open()
    If Error Then $myconn.Close()
   
    Catch
 Message.Error("Connessione non riuscita")     
End

Se avete bisogno son quà  :2birre:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: tornu - 27 Ottobre 2015, 22:28:12
Così mi connetto con gambas

Codice: [Seleziona]

Public $myconn As New Connection

Public Sub Connect()

 $myconn.Close
       With $myconn
          .Type = "postgresql"
          .Host = "127.0.0.1"
          .Name = "MioDatabase"
          .Login = "postgres"
          .Password = "MiaPassword"
          .port = "5432"
       End With 
    Try $myconn.Open()
    If Error Then $myconn.Close()
   
    Catch
 Message.Error("Connessione non riuscita")     
End

Se avete bisogno son quà  :2birre:

Ciao Golia,
ben ritrovato, mi fa piacere il tuo intervento, se vuoi salire a bordo di questa...avventura... a me fà molto piacere,
ma son sicuro anche agli altri, visto che se non ricordo male hai sviluppato "tanto tempo fà" un piccolo gestionale
per uso tuo personale che non so se usi ancora condividendo con il Forum la tua esperienza. Guardando il codice
che hai postato per collegare Gambas a PostgreSql o notato che è praticamente identico al sistema che uso io per
MySql, appena installo PgSql lo provo.
Ne approfitto è faccio qui la domanda, in attesa di fare una ricerca, magari qualcuno di voi mi risponde al volo:
posso avere MySql e PostgreSql nello stesso computer, e visto che ho installato PhpMyAdmin per gestire MySql
è compatibile con PgSql.
Golia, grazie per la disponibilità.   :ciao:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: sotema - 27 Ottobre 2015, 22:42:47

Ciao Golia,
ben ritrovato, mi fa piacere il tuo intervento, se vuoi salire a bordo di questa...avventura... a me fà molto piacere,
ma son sicuro anche agli altri, visto che se non ricordo male hai sviluppato "tanto tempo fà" un piccolo gestionale
per uso tuo personale che non so se usi ancora condividendo con il Forum la tua esperienza. Guardando il codice
che hai postato per collegare Gambas a PostgreSql o notato che è praticamente identico al sistema che uso io per
MySql, appena installo PgSql lo provo.
Ne approfitto è faccio qui la domanda, in attesa di fare una ricerca, magari qualcuno di voi mi risponde al volo:
posso avere MySql e PostgreSql nello stesso computer, e visto che ho installato PhpMyAdmin per gestire MySql
è compatibile con PgSql.
Golia, grazie per la disponibilità.   :ciao:

La stessa sintassi per connettere un MySql o PgSQL dipende dal fatto che Gambas crea un layer indipendente dal db in uso, il lavoro sporco viene svolto dal componente gb.db, che carica il driver corretto a seconda del valore di Connection.Type.

puoi avere entrambi i db installati sullo stesso computer ma non puoi gestire PgSQL con PhpMyAdmin. Esiste anche PhpPgAdmin ma non ha e stesse prstazioni del cugino. Solitamente chi gestite server pgsql utilizza PgAdmin III, un tool grafico che ti permette di gestire la quasi totalità delle funzioni di postgresql,

Vorrei però far presente che l'installazione di PostgreSQL, è leggeremente più articolata e richiede alcuni passi supplementari. Se lo scopo è quello di produrre una guida per principianti allora dovremo fornire le indicazioni più esaurienti possibile. Nel fine settimana, non vogliatemene, cercherò di stendere una piccola guida.
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: vuott - 27 Ottobre 2015, 23:52:55
.... cercherò di stendere una piccola guida.

.......magari da inserire anche nella nostra WIKI.    :)
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 28 Ottobre 2015, 00:12:27
Ciao
Io uso Postgres da qualche anno e mi trovo molto bene.
...

Ciao Golia,
scusa il ritardo nella risposta, ma solo adesso rientro e trovo tutto questo ben di Dio  :D
Grazie molte delle precisazioni, domani e dopo purtroppo sono parecchio impegnato ma cercherò comunque di dedicare un po di tempo a PostgreSQL.
Mi accodo a quanto detto da tornu, sarebbe un vero piacere averti a bordo con noi in questa avventura che si preannuncia stimolante.  :2birre:


La stessa sintassi per connettere un MySql o PgSQL dipende dal fatto che Gambas crea un layer indipendente dal db in uso, il lavoro sporco viene svolto dal componente gb.db, che carica il driver corretto a seconda del valore di Connection.Type.

E infatti assomiglia pure a quella per connettermi a SQLite che prevede anche l'attivazione di PRAGMA per le foreing key,  esiste qualcosa di simile in PostgreSQL?

Citazione
Vorrei però far presente che l'installazione di PostgreSQL, è leggeremente più articolata e richiede alcuni passi supplementari. Se lo scopo è quello di produrre una guida per principianti allora dovremo fornire le indicazioni più esaurienti possibile. Nel fine settimana, non vogliatemene, cercherò di stendere una piccola guida.
Va bene allora aspetto la tua guida prima di installarlo, potrei approfittare di questa breve pausa per andare a fare qualche altra domanda al nostro cliente, ti viene in mente qualcosa? Qualche documento interessante oltre alle bolle e le fatture?
Porca miseria mi sono dimenticato di farmi dare i listini, vorrei sapere dove ho la testa ultimamente... :rolleyes:
 :ciao:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: sotema - 28 Ottobre 2015, 00:30:55
ti viene in mente qualcosa? Qualche documento interessante oltre alle bolle e le fatture?
Porca miseria mi sono dimenticato di farmi dare i listini, vorrei sapere dove ho la testa ultimamente... :rolleyes:
 :ciao:
Preventivo
Nota Credito
Ricevuta Fiscale (o il tuo cliente vende solo all'ingrosso?)
Nota d'Ordine
Commessa di lavorazione (se effettua riparazioni di attrezzatura)

se ci penso bene...

Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 28 Ottobre 2015, 17:29:58
Non rammento più dove l'ho letto e a quale proposito, ma dai profondi spazi del mio dimenticato è affiorata questa frase che più o meno recita:
“Il team leader va ricercato fra i meno capaci del gruppo”.

A questo punto, tranquillizzato sulla mia idoneità al compito, vi indico l'attuale priorità:
Occorre raggruppare il maggior numero di informazioni sull'azienda Rubinetto Felice.
Per poter decidere quali dati la nostra applicazione dovrà manipolare occorre sapere tutti i dati trattai dall'azienda, siete quindi pregati di inviare tutte le informazioni in vostro possesso, se avete ritirato documenti dall'azienda siete invitati a postarli, se per caso vi foste dimenticati dite pure a me che ho in agenda una visita a breve.
Non preoccupatevi di eliminare dall'elenco dalle vostre voci le informazioni inviate da altri perché potrebbe anche darsi il caso che un'omonimia sia li a rappresentare informazioni diverse.
Non ci conosciamo profondamente e potrebbe essere che ognuno di noi usi parole diverse per rappresentare la stessa cosa e al contrario la stessa parola con diversi significati, quindi teniamone conto e poi cercheremo di chiarirci.
Questo per ora è tutto in attesa di sincronizzare i nostri PostgreSQL sulle indicazioni di sotema.

@Sotema,
mi hai chiesto di ritirare dal cliente il modulo dei preventivi, intendi le stampe delle offerte che inviano per fax o e-mail?
Quando sono andato l'ultima volta, il titolare era indeciso se vendere anche al dettaglio, potrebbe darsi che decida per il si durante il nostro lavoro cosa consigli ne teniamo già conto?
Invece per le riparazioni non gliel'ho proprio chiesto, se fosse indeciso e mi chiedesse consiglio?
Grazie
 :ciao:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Golia - 28 Ottobre 2015, 19:30:34
@Tornu
Il gestionale che avevo fatto all'epoca l'ho poi rifatto usando Gridbox il componente che aveva fatto Milio.
Comunque il gestionale è fatto in modo che posso scegliere tra 3 tipi di database, Postgres, mysql e sqlite, all'avvio posso connettermi con un database esistente, oppure me lo crea nuovo a scelta tra i 3 db.
Naturalmente in vari punti il gestionale deve vedere che tipo di database si sta usando perchè appunto ci sono delle diversità nelle impostazioni delle query tra i database. Se non ricordo male (saranno un paio d'anni che ho poca voglia di programmare  ;D) c'è pochissima differenza tra sqlite e postgres, di più per mysql.

Citazione
e visto che ho installato PhpMyAdmin per gestire MySql
è compatibile con PgSql.
Sinceramente penso che phpmyadmin non sia compatibile con pg .... però alzo le mani :-\
Per pg uso pgadmin 3.
Ciao Tornu, ha fatto piacere anche a me risentirti  :2birre: :2birre:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: sotema - 28 Ottobre 2015, 23:05:08
@Sotema,
mi hai chiesto di ritirare dal cliente il modulo dei preventivi, intendi le stampe delle offerte che inviano per fax o e-mail?

Intendevo proprio quello, la possibilità di stampare un preventivo di spesa a fronte della richiesta di un cliente.

Quando sono andato l'ultima volta, il titolare era indeciso se vendere anche al dettaglio, potrebbe darsi che decida per il si durante il nostro lavoro cosa consigli ne teniamo già conto?
Invece per le riparazioni non gliel'ho proprio chiesto, se fosse indeciso e mi chiedesse consiglio?
Sarebbe la prima volta che la progettazione di una base dati determina le esigenze e le politiche commerciali di un cliente  ;D

La vendita al dettaglio comporta problematiche aggiuntive quali l'emissione di documenti fiscali al privato (Scontrino Fiscale o Ricevuta Fiscale) e di conseguenza la gestione dei Corrispettivi Giornalieri di Cassa. La gestione del magazzino deve prevedere lo scarico automatico magari tramite lettore di codice a barre del singolo prodotto venduto al banco; inversamente nella vendita all'ingrosso lo scarico può essere effettuato all'atto dell'emissione del documento di trasporto (DDT o Fattura Accompagnatoria).
Ancora, la vendita al privato comporta la presenza di un negozio, magari distaccato dalla sede aziendale, connesso al Server (ulteriori utenti)

Scusa ma se il sig, Manicotto Indeciso, si chiama così il titolare della Rubinetto Felice, non sa cosa fa la sua azienda, come possiamo fornirgli un gestionale?

@Golia
benvenuto a bordo. Servono molti mozzi per condurre a piaggia questa nave.
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 29 Ottobre 2015, 00:39:41

Intendevo proprio quello, la possibilità di stampare un preventivo di spesa a fronte della richiesta di un cliente.
Ok li ritiro appena vado e poi li posto.

Citazione
Sarebbe la prima volta che la progettazione di una base dati determina le esigenze e le politiche commerciali di un cliente  ;D
...
Scusa ma se il sig, Manicotto Indeciso, si chiama così il titolare della Rubinetto Felice, non sa cosa fa la sua azienda, come possiamo fornirgli un gestionale?
Be è anche la prima volta che un hobbit commissiona un gestionale.  :D Sai come sono estrosi e poi lui è particolare vende quasi più agli elfi che agli hobbit e umani.
Geometra Manicotto Indeciso, non signore, mi raccomando che ci tiene dice che sua madre ha fatto tanti sacrifici per fargli prendere quel pezzo di carta.
Se ci mostriamo indecisi finisce che si fa fare il gestionale dagli elfi anche se ammette che le loro finestre di immissione disegnate con tutti quegli orpelli dorati non gli garbano proprio.

Citazione
La vendita al dettaglio comporta problematiche aggiuntive quali l'emissione di documenti fiscali al privato (Scontrino Fiscale o Ricevuta Fiscale) e di conseguenza la gestione dei Corrispettivi Giornalieri di Cassa. La gestione del magazzino deve prevedere lo scarico automatico magari tramite lettore di codice a barre del singolo prodotto venduto al banco; inversamente nella vendita all'ingrosso lo scarico può essere effettuato all'atto dell'emissione del documento di trasporto (DDT o Fattura Accompagnatoria).
Ancora, la vendita al privato comporta la presenza di un negozio, magari distaccato dalla sede aziendale, connesso al Server (ulteriori utenti)

Quindi occorre che decidiamo prima che io ci torni, cosa pensi potrebbe essere utile ai fini didattici aprirgli un negozio e fargli fare riparazioni?
Tieni conto che se decidiamo di aprirglielo a ritirare i documenti del negozio che non c'è ci devi andare tu o se vuoi che lo faccia mi devi istruire molto bene  ;D
 :ciao:

Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Picavbg - 29 Ottobre 2015, 01:03:44
Quindi occorre che decidiamo prima che io ci torni, cosa pensi potrebbe essere utile ai fini didattici aprirgli un negozio e fargli fare riparazioni?

Scusa la mia nuova intromissione, ma non doveva essere un DB minimale?
Attualmente sono previste ben 18 tabelle di DB e, con il negozio al dettaglio e le riparazioni, più o meno,  si raddoppieranno. Mi pare che il concetto di minimale occorrente per scrivere un libro per neofiti sia rimasto solo nel cappuccio della penna. Più che un libro ti stai preparando a scrivere un'Enciclopedia Universale.  ;D ;D ;D

Non vorrei apparire come un opprimente demolitore del grande progetto, ma vorrei solamente farti riflettere sullo scopo del tuo buon intento iniziale.
 :(
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 29 Ottobre 2015, 20:35:30
Scusa tanto Picavbg,
ma io su questo, a precisa domanda di sotema, ho già risposto.
Sono perfettamente d'accordo, c'è stato un cambiamento di rotta deciso, io ho chiesto aiuto per un piccolo problema e sembra che sia sotema che tornu siano propensi a sostenermi nello sforzo di affrontare passo passo un ipotetico gestionale per un altrettanto ipotetico cliente.
Lo si sa già dal tempo dei latini “Ubi maior minor cessat”.
Non vedo come questo possa danneggiare il progetto iniziale, a fronte di un probabile ritardo nell'uscita del libro il lettore otterrà spiegazioni da uno “scrittore” più capace di prima.
Mi stupisce questo tuo essere contrario, sinceramente mi sarei aspettato curiosa ed entusiasta partecipazione.
Non ti piace più il database, non vuoi scoprire cose nuove?
Vista la tua esperienza contavo in un tuo aiuto sul lato della contabilità, la dove io sono completamente digiuno.
 :ciao:
Cari sotema e tornu,
questi giorni ho davvero poco tempo da dedicare al gestionale appena posso posto i nuovi documenti acquisiti, se avete qualche domanda per il Geom. Manicotto fatemele avere prima che vada a trovarlo.
 :ciao:  :ciao:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: sotema - 29 Ottobre 2015, 23:07:23
Prendo le difese di Picavbg, anche se non credo ne abbia bisogno, cui riconosco la sobrietà e l'onestà intellettuale di forzarti a riflettere sul fine che ti eri posto e che invero abbiamo abbandonato. Non credere che ci stia ripensando, le sfide mi hanno da sempre galvanizzato, ma il buon Picavbg ha posto l'attenzione sul vero problema. Il sentiero nel quale ci stiamo addentrando si rivelerà presto un' autostrada a numerose corsie, cosa che non deve certo spaventare (come ci ricorda lo stesso Picavbg) ma che certamente richiederà molte e molte risorse e tempo.

Cari sotema e tornu,
questi giorni ho davvero poco tempo da dedicare al gestionale appena posso posto i nuovi documenti acquisiti, se avete qualche domanda per il Geom. Manicotto fatemele avere prima che vada a trovarlo.
fermati un secondo, ancora non abbiamo abbozzato la struttura del DB e già pensi alle fatture, venale si ma con garbo... 8)

Nel frattempo ti dico che ho steso lo scheletro della guida di installazione di PostgreSQL. Nel fine settimana vedo di completarla, la sottoporro al vaglio del Team e quindi, forse, la pubblichiamo nella WIKI.
 :sleepy:

PS: forse sarebbe il caso di aprire una nuova discussione, magari col titolo Sviluppo Gestionale Rubinetto Felice
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Picavbg - 30 Ottobre 2015, 00:28:52
mi sarei aspettato curiosa ed entusiasta partecipazione.
Non ti piace più il database, non vuoi scoprire cose nuove?
Vista la tua esperienza contavo in un tuo aiuto sul lato della contabilità, la dove io sono completamente digiuno.

Non ho mai detto che non mi piace il DB. Ho sempre detto che SQLite non mi piace. Purtroppo ormai mi sono dedicato ad utilizzare, per le mie necessità contabili di casa, SQLite e sicuramente non andrò a rivedere  o addirittura reimpiantare un DB con una nuova struttura. Il mio programma, già funzionante ed in continua evoluzione ed ampliamento, contiene già qualcosa come oltre 17000 righe di codice. Per me va bene ormai così com'è. Non mi sento di andare a studiare una nuova struttura di DB. Potrei sentirne la necessità qualora dovessi affrontare una realizzazione completamente nuova, grazie a quanto ho  appreso ora da Sotema sulla possibilità  di impiegare un DB nato per un ambiente client/server in un ambiente stand-alone. Quando ho cominciato la mia avventura era il 2008 e nessuno allora mi ha acceso la lampadina come ha fatto ora Sotema, però allora non esistevano le lampadine a led.  ;D

Certo percorrere nuove strade mi interesserebbe, ma in questo momento non ho nè il tempo, nè la voglia. Le mie gomme cerebrali di intraprendenza sono completamente ed irreparabilmente a terra .
Seguo questa discussione perchè non riesco ad abbandonare il Forum, ma non sono in grado di dare apporti significativi. Tu parli della mia esperienza contabile, ma le mie sono solamente vecchie reminiscenze scolastiche, applicate alla pratica gestionale della mia modestissima famiglia, niente di più. Nella mia vita professionale ho lavorato, informaticamente parlando, come operaio specializzato, ma mai come operatore contabile. Non vedo perciò come potrei collaborare per impiantare una contabilità industriale nella tua ipotetica azienda multifunzione.

@ Sotema
Grazie per la tua solidarietà, però credo che i miei sforzi per fare rientrare l'impegno nella logica illustrativa rivolta ad un neofita, sia considerata più come un'azione di disturbo che come un'azione costruttiva su un progetto che secondo me sta andando fuori tema·
Giocare piace a tutti, anche a me, ma illustrare un DB ad una classe di ipotetici neofiti con una piattaforma strutturale di grandissime proporzioni come quella che avete cominciato a studiare appartiene ad un'altra dimensione. Mettere troppo materiale illustrativo è una scelta che diventa, per il lettore in erba assolutamente stancante e, pertanto, controproducente.

Diversa sarebbe la prospettiva di costruire un gestionale che utilizzi il DB per acquisire l'esperienza necessaria per affrontare successivamente la stesura del DB minimale da riversare nel libro di testo pensato originariamente da Gianluigi.

Ciao a tutti.
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 30 Ottobre 2015, 01:19:37
Prendo le difese di Picavbg, anche se non credo ne abbia bisogno, cui riconosco la sobrietà e l'onestà intellettuale di forzarti a riflettere sul fine che ti eri posto e che invero abbiamo abbandonato. Non credere che ci stia ripensando, le sfide mi hanno da sempre galvanizzato, ma il buon Picavbg ha posto l'attenzione sul vero problema. Il sentiero nel quale ci stiamo addentrando si rivelerà presto un' autostrada a numerose corsie, cosa che non deve certo spaventare (come ci ricorda lo stesso Picavbg) ma che certamente richiederà molte e molte risorse e tempo.
Ciao sotema,
hai fatto bene a sostenere le ragioni di Picavbg, e io male ho fatto a rispondergli come se fosse un rimprovero, me ne scuso col vecchio soldato e ribadisco la mia stima all'uomo che tanto a condiviso con tutti noi, da molto prima che io arrivassi.

Caro Picavbg ti chiedo di ripensarci e sostenermi in questa avventura aiutandomi/ci per quello che ti sentirai.

Avete ragione entrambi la cosa si fa spessa e secondo me è proprio questo il lato più bello.
So benissimo di essere inadeguato al ruolo di “capitano” del progetto, ci vorrebbe una persona che almeno sa di cosa stiamo parlando e io non sono quella persona però dalla mia ho il tempo, ne ho anche per gli altri, fatti salvi i canonici contrattempi.
Citazione
fermati un secondo, ancora non abbiamo abbozzato la struttura del DB e già pensi alle fatture, venale si ma con garbo... 8)
No non fraintendere non sto già partendo col progetto, sto solo mettendo insieme le informazioni utili per poter poi ragionare sul database più idoneo per il cliente.
Citazione
Nel frattempo ti dico che ho steso lo scheletro della guida di installazione di PostgreSQL. Nel fine settimana vedo di completarla, la sottoporro al vaglio del Team e quindi, forse, la pubblichiamo nella WIKI.
 :sleepy:
Non vedo l'ora di leggerlo e installare la mia “Ferrari”. In effetti questo nome non è particolarmente azzeccato in quanto leggo che MySQL e MariaDB sarebbero più veloci, io l'ho usato intendendo "cosa ambita."
Citazione
PS: forse sarebbe il caso di aprire una nuova discussione, magari col titolo Sviluppo Gestionale Rubinetto Felice
Hai ragione anche su questo, provvederò ad aprire la nuova discussione, infatti il titolo di questa non rende certo l'idea su quanto ci stiamo accingendo a fare.

...
Diversa sarebbe la prospettiva di costruire un gestionale che utilizzi il DB per acquisire l'esperienza necessaria per affrontare successivamente la stesura del DB minimale da riversare nel libro di testo pensato originariamente da Gianluigi.
Ciao a tutti.

Ed è esattamente questo il mio obiettivo.  :D

 :ciao:  :ciao:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: tornu - 31 Ottobre 2015, 22:17:48
Nota Credito
Ricevuta Fiscale (o il tuo cliente vende solo all'ingrosso?)
Nota d'Ordine
Commessa di lavorazione (se effettua riparazioni di attrezzatura)

se ci penso bene...
Ciao sotema,
ma questo non è più una "Gestione Ordini", di questo passo parliamo di un gestionale "quasi completo" esclusa la contabilità,
a meno che non ci sia qualcuno esperto che si vuole aggregare anche in questo campo e allora abbiamo fatto...bingo  ;D
battute a parte, a me non spaventa, anzi le sfide mi piacciono, però ragazzi se si vuol fare questo passo in modo "serio"
sarà un cammino lungo e doloroso...quindi direi di andare per gradi.

@ Picavbg
Per quanto riguarda le tue osservazioni ricalcano anche se in "tono diverso" ciò che anche io avevo già fatto presente a Gianluigi,
però sono d'accordo anche con lui (già lo avevo detto) che comunque è ovvio che nel libro non potrà mettere tutto ciò che
eventualmente questo progetto produrrà, ma una cosa è certa, di spunti per spiegare certi concetti che vorrà affrontare ne troverà
tanti è calati nella realtà, a differenza di esempi a volte banali che non ti spiegano e non ti fanno capire le potenzialità di un DB.

In attesa delle linee guida di sotema per installare PgSql, vi allego uno screenshot della schermata iniziale di un'idea che avevo
abbozzato tempo fà, ma momentaneamente accontanata. Ciao a tutti  :ciao:
Titolo: Re:Esempio minimale di database ordinativi usando finestre incorporate.
Inserito da: Gianluigi - 31 Ottobre 2015, 23:41:09
Nota Credito
Ricevuta Fiscale (o il tuo cliente vende solo all'ingrosso?)
Nota d'Ordine
Commessa di lavorazione (se effettua riparazioni di attrezzatura)

se ci penso bene...
Ciao sotema,
ma questo non è più una "Gestione Ordini", di questo passo parliamo di un gestionale "quasi completo" esclusa la contabilità,
a meno che non ci sia qualcuno esperto che si vuole aggregare anche in questo campo e allora abbiamo fatto...bingo  ;D
battute a parte, a me non spaventa, anzi le sfide mi piacciono, però ragazzi se si vuol fare questo passo in modo "serio"
sarà un cammino lungo e doloroso...quindi direi di andare per gradi.

Perché quasi? Io opterei per "Completo".
Ho aperto la discussione (http://www.gambas-it.org/smf/index.php?topic=4547.msg37286#msg37286) sul Database Gestionale.
Parlo anche di step ditemi cosa ne pensate.
Direi di aggiornarci li.
 :ciao:

Citazione
@ Picavbg
Per quanto riguarda le tue osservazioni ricalcano anche se in "tono diverso" ciò che anche io avevo già fatto presente a Gianluigi,
però sono d'accordo anche con lui (già lo avevo detto) che comunque è ovvio che nel libro non potrà mettere tutto ciò che
eventualmente questo progetto produrrà, ma una cosa è certa, di spunti per spiegare certi concetti che vorrà affrontare ne troverà
tanti è calati nella realtà, a differenza di esempi a volte banali che non ti spiegano e non ti fanno capire le potenzialità di un DB.

In attesa delle linee guida di sotema per installare PgSql, vi allego uno screenshot della schermata iniziale di un'idea che avevo
abbozzato tempo fà, ma momentaneamente accontanata. Ciao a tutti  :ciao:

 :ok:  :ok:  :ok:  :D  :D  :D