[Risolto] Compilazione tabella con caselle di riepilogo

Discussioni sulle caratteristiche di database
Rispondi
GTbg
Messaggi: 10
Iscritto il: sabato 2 gennaio 2021, 15:41

[Risolto] Compilazione tabella con caselle di riepilogo

Messaggio da GTbg »

Salve a tutti,
sono nuovo di questo forum e di questo mondo. Premetto che non mi sono mai approcciato a DB sino ad ora e nel campo lavorativo soltanto da due anni che mi interfaccio da utente e da collaboratore (soltanto per test e verifiche problematiche, non scrittura codice SQL) col nostro IT per lo sviluppo delle varie richieste che vengono avanti.

Mi è venuta la brillante idea di trasformare un semplicissimo file Calc con due fogli, uno ogni veicolo, in cui scrivevo la manutenzione che eseguivo. In un primo momento, per imparare Base, ho unito i due fogli in una tabella in cui scrivevo DataIntervento, kmIntervento, Veicolo (auto o moto), Intervento, Fornitore e Base con una query mi calcolava anche il Richiamo dato dal kmIntervento+FrequenzaIntervento. Strutturato così con sole tre tabelle, ad esempio l'olio motore, lo potevo inserire soltanto su un veicolo poichè la terza tabella FREQUENZA avevo inserito come chiave primaria Intervento.

Presa un po' di dimestichezza ho riscritto il DB con diverse tabelle: tbVEICOLI, tbFLOTTA, tbINTERVENTI, tbFORNITORI e tbFREQUENZA anche in ottica di allargare gli orizzonti (nel senso che posso rottamare l'auto, comprare una seconda moto ecc). Ho scritto diverse query che mi servono e il tutto sembra funzionare (non so se ho fatto la cosa corretta). Le relazioni che ho sono quelle nel file allegato. Ora il problema è come inserire i dati nella tabella principale tbINTERVENTI, come colui che ha pensato al DB apro tutte le tabelle e capisco che id_frequenza corrisponde id_veicolo e con la targa posso compilare i restanti campi (DataIntervento kmIntervento CostoIntervento Fornitore) ma lato utente non io è un macello. Per cui avevo pensato ad una serie di caselle combinate in cui per inserire un intervento (questo discorso è anche valido per inserire un nuovo Intervento nella tbFREQUENZA o un nuovo veicolo nella tbFLOTTA) seleziono il Modello, da lì su due caselle a discesa vengono filtrate le Targa (veicolo su cui sto effettuando manutenzione, in teoria potrei avere più veicoli dello stesso modello pensando esempio a una flotta) e l'Intervento (p.e. olio motore, inversione gomme, gomma ant. ecc, p.e. gomma ant. non comparirebbe se ho selezionato un auto e non una moto). Ho seguito la discussione viewtopic.php?f=13&t=6495&hilit=Listbox ... a&start=30 in cui si fa una cosa del genere e anche un'altra discussione che fa uso di macro che per il momento eviterei per non complicarmi la vita https://forum-test.openoffice.org/it/fo ... e&start=30.
Innanzitutto non so se sono sulla strada giusta perchè io, una volta filtrato i campi che mi interessanto dovrei scrivere sulla tbINTERVENTI la Data il Costo e il Fornitore.
Dall'esempio della combobox c'è scritto espressamente che la tbASSEGNAZIONE serve proprio a creare una relazione molti-molti tra Modelli e Prodotti, nel mio caso ho solo relazioni uno-molti e quindi non servirebbe? Nelle mie tabelle ho già l'id e quindi dovrebbe essere più semplice?
Per sommi capi dovrei fare:
- Formulario (Scelta Modello)
- SubFormulario1 (Scelta Intervento)
- SubFormulario2 (Scelta Targa)
- SubFormulario3 (inserimento nuovo record con Data Costo Fornitore ecc)
E' possibile una cosa del genere?
Grazie per i vostri validissimi consigli e aiuti
Allegati
Cattura1.JPG
Ultima modifica di GTbg il martedì 12 gennaio 2021, 18:06, modificato 1 volta in totale.
Apache OpenOffice 4.1.8 on Windows Vista
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Compilazione tabella con caselle combinate

Messaggio da charlie »

Ciao e benvenuto/a sul forum.
Se intanto ti vuoi presentare, farai cosa gradita. Puoi farlo in questa sezione -> viewforum.php?f=16

L’utente che apre un quesito si impegna: In caso di inosservanza saremo costretti ad azioni di “richiamo”, sospensione o chiusura del profilo utente.

Buon proseguimento.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Compilazione tabella con caselle combinate

Messaggio da charlie »

Ciao, il tuo post è piuttosto lungo e, in ogni caso, dovresti postare anche il database per avere una risposta.
Se i dati sono riservati, fai una copia con dati fittizi.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
GTbg
Messaggi: 10
Iscritto il: sabato 2 gennaio 2021, 15:41

Re: Compilazione tabella con caselle combinate

Messaggio da GTbg »

Posto il DB "pulito" inventando le targhe automobilistiche.

Come richiesto allego il DB.

Descrizione:
Le tabelle ASSEGNAZIONE e FILTRO PRODOTTI MODELLI servono per la combobox creata e copiata dalla discussione linkata precedentemente (e funziona) su cui lavora la "ListboxInCascata" e quindi non servono.

Tutte le altre tabelle nominate tb-NomeTabella effettivamente servono. Quello che non capisco è come replicare il sistema della combobox con quello che servirebbe a me, sempre che sia possibile.

Avevo provato a inserire anche le macro, ma vista la mia inesperienza penso di abbandonare l'idea per il momento. Vorrei provare a farlo funzionare con dei semplici pulsanti di aggiornamento e poi in futuro boh..

Una volta capito il funzionamento della lista a 3 cascata: modello-flotta/frequenza-intervento lo posso replicare semplicemente a due livelli per l'inserimento di un nuovo veicolo in flotta o un nuovo intervento in frequenza.

Grazie
Allegati
TEST - Copia.odb
(84.94 KiB) Scaricato 140 volte
Apache OpenOffice 4.1.8 on Windows Vista
nicolaalfredo

Compilazione tabella con caselle combinate

Messaggio da nicolaalfredo »

Ciao,

Scusa se ti disturbo. Se posso dire la mia, occorrerebbe fare un passo indietro, ripassando un pochino di grammatica SQL. Ma visto che Open Office ha una interfaccia GUI, tutto diventa più semplice, cioè si finisce per adottare le linee guida dell'applicazione.

Il database relazionale, grazie alle relazioni tra campo PK di una tabella e campo FK della correlata (campo con lo stesso nome), consente, in fase di inserimento dati, di selezionare la voce della chiave primaria (PK) che vuoi inserire nel campo di compilazione grazie alla casella combinata.

Alla luce di quanto sopra, occorre quindi creare una tabella secondaria che contenga tutte le Foreign Keys (campi con lo stesso nome) di ogni tabella con chiave primaria (PK) e procedere con i collegamenti uno-a-molti (a cascata) rispettando quindi i vincoli di integrità referenziale.

Per quanto riguarda invece il formulario di consultazione, la procedura guidata consente di creare una relazione fra un campo del formulario principale con uno di una tabella subordinata scelta dall'utente. Fatto questo, la consultazione avviene pagina per pagina, selezionando il triangolino di avanzamento.

Ti prego quindi di fare esperienza con le procedure guidate, e aspettare il parere di uno che ne sa molto più di me.

:D
 Editato: @nicolaalfredo ha chiesto ed ottenuto di disattivare il suo account sul forum 
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Compilazione tabella con caselle combinate

Messaggio da charlie »

Ciao, non ho capito la necessità di usare il db con le listbox in cascata trovato sul forum.
In linea di massima mi pare che le tabelle e le relazioni possano andare.
Ho riportato tutto il necessario su un nuovo db e "aggiustato" il formulario m.tb-interventi.
Riparti da qui e valuta se quel formulario va bene. Indica eventualmente cosa non fa che cosa vorresti facesse.
Solo dopo indica qual è il passo successivo.
Allegati
Gestione_Auto.odb
(40.32 KiB) Scaricato 146 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
GTbg
Messaggi: 10
Iscritto il: sabato 2 gennaio 2021, 15:41

Re: Compilazione tabella con caselle combinate

Messaggio da GTbg »

Grazie Charlie del tuo tempo dedicato.
Per rispondere alla tua domanda legittima, perchè penso che se usassi le SELECT FROM tabella le informazioni non sono legate univocamente. Mi spiego meglio Modello1 è legato a Targa1 e Targa2 ma non a Targa3 che è legata a Modello2, se nella prima lista scelta modello mi farebbe comparire [Modello1 Modello2] e nella successiva lista scelta targa [Targa1 Targa2 Targa3] ma io potrei selezionare Modello1-Targa3 che non esiste. Così come per l'intervento che spiego successivamente. Il formulario che ho in mente è di scrittura non di visualizzazione dati.

Vorrei che l'utente generico, x semplificare l'utilizzo, partisse dalla scelta del modello dalla tb-veicoli (sarebbe possibile far vedere solo quelli ancora vivi? Possedevo un Alfa Romeo 156 ma poi è stata rottamata e non possedendola più è come se fosse Modello non più vivo e mi dovrebbe far comparire soltanto Grande Punto e GSR 750; queste informazioni sono nella tb-flotta in cui c'è Immatricolazione e Rottamazione. Se questo è difficile o complicato realizzarlo fa niente).
Poi dalla scelta del modello sopracitato si scegli l'automezzo su cui si effettua manutenzione (cioè scelgo la Targa dalla tb-flotta) e parallelamente dalla scelta del modello in altra casella riepilogativa mi filtra soltanto gli interventi legati a quel veicolo dalla tb-frequenza (p.e. selezionando GSR 750 che è una moto mi compare lubrificazione catena ogni 1000km, controllo pignone ogni 50000km e analogamente scegliendo Grande Punto c'è la cinghia distribuzione ogni 90000km) tutto questo per non sbagliare ad assegnare un intervento di una moto su un auto e viceversa.
Alla fine ci saranno le caselline in cui dovrò scrivere la Data il Costo e il Fornitore e registrare il tutto nella tb-interventi.

Riepilogando ci sarà il primo Form (scelta Modello) che "attiverà/filtrerà" nel secondo livello i due SubForm1 (scelta veicolo-Targa) e SubForm2 (scelta Intervento) che mi permetterà di registrare un intervento (Data Costo Fornitore ecc) che salverà il record nella tb-interventi.

Spero sia stato più chiaro adesso, altrimenti farò un immagine esemplificativa.

Grazie nuovamente
Apache OpenOffice 4.1.8 on Windows Vista
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Compilazione tabella con caselle combinate

Messaggio da charlie »

GTbg ha scritto:Riepilogando ci sarà il primo Form (scelta Modello) che "attiverà/filtrerà" nel secondo livello i due SubForm1 (scelta veicolo-Targa) .....
Perché tanto spreco di risorse? Scegli un veicolo e dalla sua "anagrafica" individui fabbrica, modello, targa, accessori, ... , quello che vuoi. Nel subForm degli interventi in forma "tabellare" vedi gli interventi fatti e nella versione "modulo" fai modifiche e inserimenti.
Ti prego di rispondere con non più di tre righe :D .
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
GTbg
Messaggi: 10
Iscritto il: sabato 2 gennaio 2021, 15:41

Re: Compilazione tabella con caselle combinate

Messaggio da GTbg »

Perchè creando un form tb-veicoli il secondario proposto è tb-flotta/tb-frequenza come da img01; partendo invece da tb-flotta il secondario proposto è tb-interventi che ho provato a fare e ottengo img03. Posso completare la tabella sottostante ma devo ricordare l'id_frequenza, il nome fornitore lo posso scrivere una volta Rota altra volta rota oppure Rota snc ecc. Vorrei che l'utente potesse essere "vincolato". A me tutta la lista degli interventi del veicolo Fiat-Grande Punto AA123BB non mi interessa visualizzarlo perchè intendo questo formulario di inserimento di un singolo intervento. Per vedere utilizzo i report... 4,5 righe :D
Allegati
img03.JPG
img02.JPG
img01.JPG
Apache OpenOffice 4.1.8 on Windows Vista
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Compilazione tabella con caselle combinate

Messaggio da charlie »

Secondo me ti basta un normale formulario tipo quello che ho inserito nel nuovo file.
Allegati
Gestione_Auto_2.odb
(51.1 KiB) Scaricato 117 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
GTbg
Messaggi: 10
Iscritto il: sabato 2 gennaio 2021, 15:41

Re: Compilazione tabella con caselle combinate

Messaggio da GTbg »

Grazie Charlie delle dritte. Da quanto ho capito hai "unito" le due tabelle tb-veicoli e tb-flotta, basta che aggiungessi i campi Immatricolazione Rottamazione Cilindrata ecc alla tua tb-modelli e il gioco è fatto eliminando le mie vecchie tb-veicoli e tb-flotta. Per visualizzare solo i veicoli "vivi" basterebbe che nel comando SQL aggiungessi WHERE "Rottamazione" IS NULL.
Va quasi bene, nel senso che io al secondo comando listbox vorrei che fossero "filtrati" solo gli interventi del modello selezionato al passo precedente. Ora mi compare 20000 olio motore, 15000 olio motore, 6000 olio motore ma come faccio a capire quale modello si riferiscono? Nel comando SQL

Codice: Seleziona tutto

SELECT  "Frequenza" || ' ' || "ClasseIntervento" || ' ' || "Intervento", "id_frequenza" FROM "tb-frequenze"
del "Contenuto elenco" nelle proprietà se facessi INNER JOIN tb-modelli ON id_veicolo=ID_m dovrebbe funzionare al mio obiettivo? mi da errore dicendo colonna non trovata. Forse perché c'è una concatenazione?
Nelle proprietà campo collegato si riferisce al comando SQL o alla posizione in tabella richiamata? Perché è sempre 1?
Ultima domanda: per il mio uso personale così va benissimo, ma se dovesse utilizzarlo un'azienda che ha 5 automobili uguali dovrebbe scrivere 5 volte gli interventi nella tb-frequenza? Per quello che avevo splittato in due tabelle le info sul veicolo (Marca Modello e caratteristiche in una tabella e Immatricolazione Rottamazione con Targa chiave primaria nell'altra legate da ID_veicolo)
Grazie ancora (in 3 righe è impossibile che ci stia :knock: )
Apache OpenOffice 4.1.8 on Windows Vista
GTbg
Messaggi: 10
Iscritto il: sabato 2 gennaio 2021, 15:41

Re: Compilazione tabella con caselle combinate

Messaggio da GTbg »

Ho quasi risolto con la listbox a 3 livelli precedentemente postato.

In questa versione beta ho utilizzato tabelle con nomi maiuscoli eccetto la tb-interventi e tb-fornitori da cui pesca il formulario FILTRO.
1) L'unica cosa che non funziona è nel Form2 del formulario FILTRO in cui alla voce Fornitore se lascio Casella di Testo posso scrivere ciò che voglio ma se sostituisco con Casella di Riepilogo allacciandomi alla tb-fornitori pesco solo ciò che è scritto ma non scrive nulla nella tb MANUTENZIONE. Potete darci un occhio e dirmi dove sbaglio?
2) la tabella ASSEGNAZIONE è la cugina della mia tb-flotta del DB precedentemente postato in cui c'era la tb-veicoli [Marca, Modello (PK)] e la tb-flotta [Targa (PK), Modello (FK), Immatricolazione, Acquisto, Vendita]?
3) si possono far eseguire due comandi al pulsante Puls2 (Aggiorna e Nuovo record) per avere i campi puliti e non sovrascrivere?
4) in ottica di rendere più gestibile sarebbe possibile inibire la Marca, Modello in cui TARGA.Cessione IS NULL?
Se ottengo risposta e risolvo il punto 1, il più impattante nell'andare avanti, posso chiudere e risolvere il post. Dopo posterò la versione rilasciata con i pulsanti.

Prossimo step le macro, ma non ora.

Grazie mille.

3 righe IS IMPOSSIBLE!! :knock: :crazy:
Allegati
Gestione_Auto_3 - BK.odb
(83.68 KiB) Scaricato 96 volte
Apache OpenOffice 4.1.8 on Windows Vista
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Compilazione tabella con caselle combinate

Messaggio da charlie »

Ciao, prima di tutto (ma me ne accorgo solo ora) il titolo non va bene perché quelle che stai usando sono caselle di riepilogo e non combinate.
  1. Basta usare Sql: SELECT "NOME", "NOME" FROM "tb-fornitori"
  2. Quale è la domanda, non ho capito?
  3. Solo con una macro.
  4. Non ho capito dove, ma puoi usare una query al posto di una tabella con "WHERE TARGA.Cessione IS NULL" (ma forse vorrai il contrario TRUE).
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
GTbg
Messaggi: 10
Iscritto il: sabato 2 gennaio 2021, 15:41

Re: Compilazione tabella con caselle combinate

Messaggio da GTbg »

1. Grazie mille. Dopo metto risolto. Ma a cosa serve l'opzione che ho usato io di prendere i dati da tabella se non in questo caso? Mi sembrava la cosa più logica e semplice..
2. Intendo così come è adesso la parte funzionante ASSEGNAZIONE lega le tre tabelle indipendenti MARCA MODELLO TARGA, invece nella precedente versione c'erano due tabelle in cui la seconda era già legata alla prima tb-modelli:[Modello(PK), Marca] e tb-veicoli:[Targa(PK),Modello]. Funziona se sostituisco la ASSEGNAZIONE con tb-veicoli così com'è oppure devo aggiungere una chiave ID primaria o non funzionerà mai proprio perchè la logica funziona con le tabelle indipendenti legate tra loro con altra tabella?
3. Ok
4. vedi foto. Intendo nel menù a tendina (considera solo due livelli), selezionando il modello vorrei che mi visualizzasse solo i modelli in cui ho DataCessione IS NULL ma questa si trova in altra tabella. Come avevi consigliato tu settimana scorsa, avevo in tabella unica Modello, Targa, Cessione e io facevo SELECT Modello || Targa, Targa WHERE Cessione IS NULL ma qui ho più tabelle da legare.

Grazie della pazienza
Allegati
immagine01.JPG
Apache OpenOffice 4.1.8 on Windows Vista
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: [Risolto] Compilazione tabella con caselle di riepilogo

Messaggio da charlie »

  1. Anche il codice sql prende i dati dalla tabella. Come vorresti fare tu potrebbe funzionare se cambi "campo collegato" da 1 a 0.
  2. Non so, fai una prova
  3. prova ad aggiungere la tabella mancante dopo FROM.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
GTbg
Messaggi: 10
Iscritto il: sabato 2 gennaio 2021, 15:41

Re: [Risolto] Compilazione tabella con caselle di riepilogo

Messaggio da GTbg »

1. Ok ha funzionato, era proprio lo 0
2. Funziona, forse perché le due tabelle sono legate dalle chiavi
4. Funziona con la JOIN della tabella "figlia", ora visualizzo solo le marche le cui targhe sono vive (veicoli non rottamati/venduti)
Apache OpenOffice 4.1.8 on Windows Vista
GTbg
Messaggi: 10
Iscritto il: sabato 2 gennaio 2021, 15:41

Re: [Risolto] Compilazione tabella con caselle di riepilogo

Messaggio da GTbg »

Ciao a tutti,
come promesso (e per correttezza professionale) allego il mio DB completo di query, report, maschere ecc ecc

Ma ora ho un dubbio, ho fatto correttamente una query per il calcolo della differenza tra i km dell'intervento tra l'attuale e l'ultimo, ma pensando al cambio gomme vorrei scriverlo non sul record attuale ma su quello precedente. Es 45000km cambio gomma ant e post Dunlop, 52000 cambio gomma post Pirelli DIablo, 57000 cambio gomma ant Michelin. Ora nel campo DIFF al record 52000 scrive 7000 e nelle note avrò scritto la gomma sostituita Pirelli Diablo Rosso che ho sostituito ma i 7000km sono della gomma precedente Dunlop non quella attuale Pirelli!!! Idem al 57000 DIFF sarà 12000 note è Michelin ma i km sono della Dunlop. Si può calcolare DIFF al record precedente?
Allego codice fatto con SELF JOIN

Codice: Seleziona tutto

( "kmIntervento" - ( SELECT top( 1 ) "kmIntervento" FROM "tb-manutenzione" AS "r1" WHERE "r1"."kmIntervento" < "tb-manutenzione"."kmIntervento" AND "r1"."id_intervento" = "tb-manutenzione"."id_intervento" ORDER BY "kmIntervento" DESC ) ) AS "DIFF km"


Grazie
Allegati
gestione manutenzione veicoli.odb
(129.74 KiB) Scaricato 103 volte
Apache OpenOffice 4.1.8 on Windows Vista
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: [Risolto] Compilazione tabella con caselle di riepilogo

Messaggio da charlie »

Pur non entrando nel merito della tua domanda, ti fornisco uno spunto di riflessione nel piccolo database allegato ;) .
Da una tabella ricavo una query che ha gli stessi dati ma ID = ID +1.
Poi in una seconda query faccio la differenza dei record (tabella - query) aventi ID uguale.
Allegati
Idea.odb
(4.16 KiB) Scaricato 93 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Rispondi