con libreoffice base 6.3 e ubuntu 18.0 Ho una tabella con le colonne FORNITORE , COSTO CONTANTI , COSTO BANCA , INCASSO , INCASSO BANCA . non c’è modo di fare una query che faccia i totali delle COLONNE : costo contanti , costo banca / incasso , incasso banca e che poi sommi i totali delle spese , i totali degli incassi e mi dia come risultato il saldo facendomi vedere tutti i dati in un formulario ?
quello che sono riuscito a fare è stato fare una query che faccia le somme delle righe e poi in report ho ottenuto gli altri risultati che mi interessano ma non è così che voglio strutturare il mio db
ringrazio per l aiuto
Puoi usare le funzione di aggregazione di Base SOMMA e GRUPPO. Me è difficile risponderti senza un tuo database di esempio. Ti assegno un punteggio perché tu possa inserirlo come allegato.
Se la mia riposta ti ha aiutato, votala con (qui a sinistra)
Edit:
nuovo database Nuovo database1.odb
Edit2:
codice macro:
Sub CANCELLA (oEvent As Object) 'Pulsante > Eventi > Eseguire l'azione
IF msgbox ("Cancello tutti i dati? L'operazione è irreversibile," + CHR$(13) + "non si potranno più recuperare.",36, "Conferma")= 6 Then
oForm = oEvent.Source.Model.Parent 'MainForm from Button
oStatement = oForm.ActiveConnection.createStatement() 'Create an SQL statement object
sSQL = "DELETE FROM ""Tabella generale""" ' Cancella
oStatement.executeUpdate( sSQL ) 'Execute the SQL command
sSQL = "CHECKPOINT DEFRAG" ' Compatta
oStatement.executeUpdate( sSQL ) 'Execute the SQL command
sSQL = "ALTER TABLE ""Tabella generale"" ALTER COLUMN ""ID"" RESTART with 0" 'Azzera indice ID
oStatement.executeUpdate( sSQL ) 'Execute the SQL command
oForm.reload
ELSE Exit sub
END IF
End Sub
Incremento automatico
:
Aggiungi formulario
:
ecco il database che ho creato , sono riuscito a formulare la query correttamente adesso devo rifinirlo , abbellirlo graficamente e togliere le cose che non servono. è corretto così ? vorrei aggiungere in tabella una funzione che calcoli e assegni in automatico l id fornitore , un pulsante per poter cancellare i dati inseriti magari per sbaglio e un pulsante che tenga conto del mese corrente .ben vengano suggerimenti e aiutiNuovo database.odbNuovo database ultimissima versione.odb
L’ID di una tabella si può impostare ad incremento automatico quando si crea la tabella stessa.
Per le funzioni di inserimento e cancellazione record basta inserire nel formulario una barra di navigazione che ha al suo interno tutto il necessario.
per l id ci ho provato più di una volta senza risultati ok la barra di navigazione , altra domanda ho visto che il formulario puo contenere solo un altro sub formulario ma io devo importare i dati da tre query che devono aggiornarsi al variare del database . come rislovo questo problema ?
Incremento automatico: vedi immagine allegata alla mia risposta.
Un formulario può avere più subformulari, è solo la procedura guidata che ne prevede uno. Puoi aggiungere gli altri in un secondo momento.
scusa l ignoranza ma una volta creato il nuovo sub formulario come lo vedo e come ci inserisco i dati ?
Tenendolo selezionato, apri la finestra delle Proprietà, Dati ed imposti la tabella o la query da cui prelevare i dati. Ricordati di collegare il subform al form principale tramite Collega da
e Collega per
.Poi:
o trascini una griglia dalla barra laterale dei Controlli del formulario
, Altri campi di controllo
e segui la procedura guidata successiva;
oppure apri la finestra Aggiungi campo
(icona in basso a sinistra) ed inserisci uno ad uno i campi che ti interessano
ho aggiunto il campo "saldo "al formulario, non so come ma dopo vari tentativi ci sono riuscito . altro problema quando inserisco i dati nel formulario principale per poter visualizzare i totali devo tornare indietro all ultima riga inserita mentre io vorrei che non funzionasse così, mi piacerebbe che i totali rimanessero anche se vado in una riga vuota, poi non c’è verso di fare l ID automatico e ultimo tocco vorrei aggiungere un campo mese dove poter , digitando il mese accedere alla tabella richiesta. si puo fare ?
Per l’ID automatico devi ripartire con una nuova tabella. Non è possibile su una tabella già esistente.
Se hai fatto delle modifiche fammele vedere allegando un nuovo file.
mi piacerebbe mandarti il nuovo file ma mi spieghi come fare ?
Come hai fatto la prima volta, aggiungendolo alla tua prima risposta, non è possibile farlo in questi commenti.
Questo sito non è per niente pratico …
non so se sono riuscito ma dovrei averlo allegato in coda al primo
Ho sistemato il database:
- Ho trasferito tutto da Firebird a HSQLDB. Non so che versione tu abbia, quando apri il database, se L.O. ti chiede di migrare a Firebird, rispondi di NO.
- Ho sistemato le tabelle con ID ad incremento automatico.
- Ho fatto comparire l’ID in tutte le Query.
- Ho collegato i due subformulari al formulario principale tramite i campi ID. In tal modo, quando ti sposti di record sul formulario principale, le informazioni dei due subformulari si aggiornano automaticamente.
Prova intanto così, poi fai le tue richieste precise.
Allego il nuovo database alla mia prima risposta.
così è pefetto . Al punto 1 quando ho aperto il db libreoffice non mi ha chiesto nulla , l ha aperto e basta.
2 sole richieste anzi 3 : un pulsante che svuoti il database , un pulsante che mi consenta di assegnare il nome di un mese al database in modo da potermi spostare da un mese all altro per 12 mesi ( si puo fare ?)in quest ultimo caso possono essere anche database indipendenti. Poi mi piacerebbe che i dati inseriti si vedessero nei campi senza bisogno di tornare indietro col cursore e se mi spieghi anche come si fa .non mi piace la pappa pronta voglio imparare.grazie charlie
- Non è possibile mettere un pulsante che svuoti il database, puoi metterne uno che cancelli i record uno a uno. In alternativa puoi usare il codice SQL
DELETE FROM "nomeTabella"
da usare in “modo diretto”, cioè andando inmenu > Strumenti > SQL
. - Idem per il pulsante mese. Si fa una query ed un formulario che permetta di digitare il mese e ricavare i dati corrispondenti.
- Non capisco la terza domanda
In realtà si può mettere un pulsante che svuota il database ma si deve usare una “macro” che, per il tuo livello di conoscenza, non so se è il caso di usare.
intanto ti ringrazio davvero di cuore per le sollecite e precise risposte .Per quanto riguarda la cancellazione dei record , ho visto che dal formulario in effetti si possono cancellare i record riga per riga ma questo non azzera il contatore automatico dell ID , al problema del mese posso ovviare copiando banalmente il file del db e rinominandolo ma rimane sempre il problema di di dover svuotare il database. La terza domanda verteva sul fatto che quando inserisco una riga di dati nel db , arrivato all ultimo campo digito invio e il cursore si posiziona sulla riga successiva ma nei campi dei sub form i dati spariscono e per farli ricomparire devo riposizionare il cursore sull ultima riga compilata.
Mi piacerebbe proprio mettere un pulsante che svuoti il db anche con una macro … questo piccolo programmino deve usarlo una persona che di computer ne capisce meno di me e vorrei automatizzare il maggior numero di operazioni possibili e renderlo impermeabile a possibili errori…
tempo fa ho seguito un corso di excel dove abbiamo creato delle macro … posso provarci
- Ti allego il codice di una macro che cancella tutti i dati da
Tabella generale
, la compatta e azzera l’indice ID. L’operazione sarà irreversibile, quindi ho messo un messaggio di conferma. - Devi aggiungere un pulsante al formulario
Tabella generale
e collegare la macro all’eventoEsegui l'azione del pulsante
.
Il codice lo trovi nella mia prima risposta.