Newsgroup: it.comp.appl.access
Titolo: Piccolo db per gestire un condominio

Buongiorno a tutti,
vorrei riuscir a creare un db in access per gestire delle piccole
informazioni riguardanti la gestione di un  condominio.
Le funzioni che dovrà gestire sono poche, o meglio: tenere il conteggio
delle entrate e delle uscite di 5 scale suddivise 3 in 6 famiglie e 2 in tre
famiglie.
Vorrei impostare tutto correttamente, quindi ora vorrei sapere da voi più
esperti se il database così impostato può andar bene:
TABELLE:
CONDOMINI (famiglie)
Id_Condomini - Contatore
Nome - Testo
Cognome - Testo
Scala_n - Numerico
ENTRATE
Id_Entrate - Contatore
Entrata -  Valuta
Data - Data/Ora
TipoEntrata - Testo
Nota - Memo
SALDOINIZIALE
Id_saldo - Contatore
Saldo - Valuta
Data - Data/Ora
SCALE
Id_Scala - Contatore
NScala - Testo
TIPOSPESA
Id_Tipospesa - Contatore
Tipologia - Testo
USCITE
Id_Uscite - Contatore
Uscite - Valuta
Data - Data/ora
TipoSpesa - Numerico (poichè legato alla tabella Tipospesa)
Scala - Numerico (poichè legato alla tabella scale)
Nota - Testo
Questa è la struttura che ho preparato ora.. Piano piano vedrò di farla
funzionare.. Per ora mi preme di capire se così impostato il database è
corretto!!!
Ora sto cercando di ottenere il Saldo Attuale attraverso una query, ho
creato la query
SALDO ATTUALE, per sapere qual'è il saldo della disponibilità attuale in sql
è così:
SELECT Last(SaldoIniziale.Saldo+Entrate.Entrata-Uscite.Uscite) AS
SaldoAttuale
FROM SaldoIniziale, Entrate, Uscite;
(solo che a video mi arrotonda al centesimo superiore.. come mai ?)
Attendo un vostro commento ..
Grazie Marco

 ha scritto nel messaggio
news:dfjsd.253697$b5.12...@news3.tin.it...

L'errore che subito eviterei di fare è quello di dividere ENTRATE ed USCITE.
La tabella MOVIMENTI nella quale mettere il tutto deve essere solo una,
nella
quale inserirai un campo chiamato TipoMovimento e Causale..!
La tabella MOVIMENTI deve essere relazionata Molti Molti con Scale e
TipoSpesa
in questo modo ti sarà estremamente semplice gestire Filtri calcoli e
raggruppamenti.
Sbagliare l'impostazione iniziale significa dover riprendere in mano il DB
per rifarlo
perchè andando avanti ti accorgi che molte operazioni si complicano in modo
esponenziale.
La tabella SaldoIniziale io non la trovo necessaria, ti basterò inserire una
Voce di Entrata
con la Causale Saldo Iniziale, in quanto è un dato che serve solo per tener
conto del Fondo
cassa di partenza, ma chepoi viene riassorbito nel bilancio.
Io se fossi in te renderei anche la Tabella CONDOMINI più Flessibile,
facendola
diventare una tabella ANAGRAFICHE con una Colonna dedicata alla TIPOLOGIA,
in questo
modo userai la stessa tabella per inserire i Nomi delle ditte di
Manutenzione o i riferimenti
a Persone Fisiche e/o aziende...!!
Una cosa particolarmente importante è curare la Tabella TIPOSPESA dalla
quale dipende tutta
la Contabilità, non lesinare sulle voci di spesa, tieni po presente che la
chiusura contabile
dell'anno genererà un Record di Movimento(Fittizio simile al SaldoIniziale)
per farti tornare i conti e non dover
effettuare i conteggi con tutti gli anni precedenti....!!!
Sono solo alcune idee.... poi vedi tu come tenerle in considerazione.
Ciao
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.mantuanet.it/alessandro.baraldi/
---------------------------------------------------------------------------


Prima di tutto ti ringrazio della risposta così celere.. e dei consigli che
mi hai fornito..
Dunque.. per ora ho seguito i tuoi consigli.. ho ricnfigurato il database
secondo le tue indicazioni..
Così su due piedi .. analizzandolo per quel poco che riesco a capire..
sembra "gestibile" in modo più corretto!
Dunque ora come ora devo solamente effettuare la gestione dei conteggi tra
entrate ed uscite.
Con la disposizione da te consigliatami sai che però non sono in grado di
farlo? O meglio devo capire come utilizzare i comandi..
In pratica creo una query che selezioni all'interno della tabella MOVIMENTI
il campo che in MOVIMENTO contiene Saldo Iniziale. e da qui dovrei in teoria
far scalare il valore di tutte le USCITE e sommare tutte le ENTRATE per
ottenere così il saldo attuale.
Solo che non capisco come impostare la query?
Esiste qualche guida che spiega come creare un procedimento simile online ?
Grazie Marco

 Grazie Marco
Teoria:
Contabilità relativa=
    IMPORTO_ENTRATE - IMPORTO_USCITE + IMPORTO_SALDOINIZIALE
Nel tuo caso dovrai tner conto dell'Importo del Campo
Impoto relativo al campo TipoMovimento nella Tabella Movimenti, non
dimenticare che nella Tabella Movimenti
hai anche il campo relazionato a SCALA....!
Allora Marco la cosa più semplice è usare una Query con SubQuery o Sub
Select.
Supponi di voler effettuare la contabilità delle varie SCALE
Ipotesi iniziale:
Tbl_Scala            è la Tabella con i dati delle varie scale
Tbl_Movimenti     è la Tabella Movimenti relazionata a Tbl_Scala
SELECT IdScala, _
(SELECT SUM(Importo) As ENT_1 FROM Tbl_Movimenti WHERE
Tbl_Scala.IdScala=Tbl_Movimenti.IdScala AND
Tbl_Movimenti.TipoMovimento="ENTRATA") AS ENTRATE,
(SELECT SUM(Importo) As OUT_1 FROM Tbl_Movimenti WHERE
Tbl_Scala.IdScala=Tbl_Movimenti.IdScala AND
Tbl_Movimenti.TipoMovimento="USCITA") AS USCITE,
(SELECT SUM(Importo) As OUT_1 FROM Tbl_Movimenti WHERE
Tbl_Scala.IdScala=Tbl_Movimenti.IdScala AND
Tbl_Movimenti.TipoMovimento="SALDOINIZIALE") AS SALDOINIZIALE
FROM Tbl_Scala
Ora a meno di errori di scrittura aprendo la Query dovresti avere 4 Campi:
1°    SCALA(o ID_SCALA)
2°    Somma di ENTRATE per Scala
3°    Somma di USCITE PER SCALA
4°    Somma di SALDOINIZIALE per Scala
Ore cosa ti manca per fare il Bilancio.....!!
Un campo nel quale scrivi BILANCIO=[ENTRATE]-[USCITE]+[SALDOINIZIALE]
Se questo campo lo aggiungi alla Query che ti ho impostato risulteranno 5
campi
con i dettagli ed il TOTALE di Bilancio.
Se poi vuoi il metodo per estrarre solo quello della Scala interrogata
aggiungi un
Parametro(CRITERIO) nella riga del Primo campo ed ottieni il Filtro del
Bilancio
della Scala passata come parametro.
Ciao
-- 
@Alex (Alessandro Baraldi)



Ciao Alessandro !
Nuovamente grazie per l'esauriente risposta !! Woww..
Dunque ho adeguato la query che mi hai passato tu .. con i campi del mio
db.. ma mi da errore..
Sicuramente ho sbagliato qualcosa io..
Forse a creare le relazioni Molti a Molti ? (io nelle relazioni affianco
alle singole finestrelle non ho ne il simbolo dell'infinito, ne un 1... così
va bene ? Ho solo la lineetta che relaziona i singoli campi).
Ho sicuramente fatto qualche Caos.. dunque..
la tabella MOVIMENTI così va bene ?
- Id_Movimenti - contatore
-Movimento - numerico (legato alla tabella TipoMovimento che è composta da
Id_Movimento e Movimento: Qui ho impostato 3 valori Entrata, Uscita, Saldo
Iniziale)
- Casuale - Testo
- Euro - Valuta
- Scala - Numerico (legato alla tabella Scale formata da Id_scala e da
NScala)
- Data - Data/Ora
- Nota - Testo
Ho provato a creare una query contenente solo questo
Id_scala
ENTRATE: (SELECT SUM(Euro) As Entrata FROM Movimenti WHERE
Scale.Id_Scala=Movimenti.Scala  AND
Movimenti.Movimento="Entata")
Solo che fino a quando non inserisco l'ultimo AND tutto va.. mentre se
utilizzo l'AND mi dice
Tipi di dati non corrispondenti nell'espressione criterio
Mmm ho riprovato e riprovato a capire cosa c'è che non va.. ma non riesco a
capirlo..
Caspita sono forte eh !Sono in alto mare con un db così semplice WOOWW !!
Alex se puoi darmi un piccolo aiutino.. ;))
Grazie !
Marco

 Marco
L'errore deriva dall'impostazione del TipoMovimento.
Tu hai impostato cosě:
-Movimento - numerico (legato alla tabella TipoMovimento che č composta da
Id_Movimento e Movimento: Qui ho impostato 3 valori Entrata, Uscita, Saldo
Iniziale)
Nella Relazione che ti ho passato č usato un campo STRINGA ESPLICITO non
la riconversione all'indice della tabella TipoMovimento, pertanto hai 2
strade:
1)Se preferisci la Tabella TipoMovimento indicizzata su un Id Contatore devi
modificare le Queries ed inserire gli INDICI e non il Testo al posto di
"ENTRATE"
ENTRATE: (SELECT SUM(Euro) As Entrata FROM Movimenti WHERE
 Scale.Id_Scala=Movimenti.Scala  AND
 Movimenti.Movimento=1)
2)Elimina Id e lascia solo ENTRATA/USCITA/ECC....  io userei questo secondo
metodo.
ENTRATE: (SELECT SUM(Euro) As Entrata FROM Movimenti WHERE
 Scale.Id_Scala=Movimenti.Scala  AND
 Movimenti.Movimento="Entata")
Bada bene che questa non č LA REGOLA, č solo un'ottimizzazione che in questo
specifico caso č decisamente comoda....!!
Dai che ci sei quasi.....!!
Ciao
-- 
@Alex (Alessandro Baraldi)



Ale.. pian pianino sono riuscito a farlo funzionare.. (almeno cosě sembra
!!)
Ho eliminato la colonna Saldo Iniziale all'interno dei movimenti, poichč
tutte e 4 le scale fanno riferimento ad un solo saldo inizale e non devono
mantenere una diversificazione di conto.
Quindi ora faccio prendere il dato da una tabella SaldoIniziale
Dovrebbe andar ugualmente bene !?
Poi giusto perchč le cose non vengono sepre perfette.. mi stavo chiedendo..
per quale motivo nella querri che ottengo con il cd che mi hai suggerito,
nelle somme di Valuta (che sono in euro) ottendo i risultati con la scritta
L. ?? Esiste un modo per ovviare a tale problema !?!?!?
Grazie ancora per l'aiuto !;)
Ciao Marco

 Ciao Marco
Ciao
-- 
@Alex (Alessandro Baraldi)



Dunque Ale.. qui mi sa che sto facendo un casotto... ;PP
Sono un pessimo alievo eheh lo so !!
Allora prima di continuare provo a focalizzarti un attimo quello che voglio
ottenere.. (così mi dici se sto proseguendo per il verso giusto!!)
Dunque il condominio di 4 scale fa riferimento (tutto) su un unico conto
corrente, quidni le spese e le entrate fanno riferimento tutte ad un unico
conto ! (per questo avevo messo il valore Saldo iniziale da solo in una
singola tabella!)
Or bene, quello che vorrei avere alla fine di tutto questo ambaradam ;))))
eheh
E' L'elenco delle entrate e delle uscite, accanto ad ogni operazione il
Saldo Attuale, la possibilità di avere la visione per scala delle spese
mensili ed effettuare la gestione per anni.. poi sviluppare il bilancio
annuo... (poi tutte le altre funzioni minori come la stampa dei resoconti
mensili per i singoli coinquilini e altre cose la svilupperò in seguito!!).
Or dunque.. come è progettato il db attualmente.. mi chiedo.. sono sula
strada giusta !?
Il tutto per ora lo gestisco con Excel con più fogli .. volevo vedere se si
riusciva a creare qualcosa di più carino in Access.. ma l'impresa inizia ad
essere un po' ardua !!! ;(((
Dunque ricapitolando
1° Passo Creo Tabella Anagrafe (che conterrà tutti i dati degli Abitanti
delle 4 scale + Le eventuali ditte con la quale avrò a che fare !
la TABELLA ANAGRAFE è così comopsta
Id_Condomini - Contatore
Nome - Testo
Cognome - Testo
Scala - Numerico (legato alla tabella scale)
Tipologia - Testo (qui inserisco se è un condomine o una ditta ecc)
La TABELLA MOVIMENTI (quella dove gestisco tutte le entrate e uscite)
Id_Movimenti - Contatore
Movimento - Testo (legato con testo alla tabella TipoMovimento)
Casuale - Testo
Euro - Valuta (in Euro)
Scala - Numerico (legato alla tabella Scale)
Data - Data/Ora
Nota - Testo
TABELLA SCALE
Id_Scala - Contatore
NScala - Testo (esempi scala 1, scala 2, scala3...)
TABELLA TIPOMOVIMENTO
Movimento - Testo (qui ho inserito Entrata, Uscita , Sald Iniziale)
TABELLA TIPOSPESA
ID_TipoSpesa - Contatore
Tipologia - Testo (Pulizia Scale.. Luce.. ecc..)
Le relazioni create sono così formate:
Ho aperto in Relazioni le Tabelle
Movimenti
TipoSpesa
Scale
Movimenti.Movimento legato a TipoSpesa.Id_TipoSpesa
Movimenti.Scala legato a Scale.Is_scale
Per concludere Tra le query troviamo la query Calcolo Dati così formata
SELECT Scale.Id_scala, (SELECT SUM(Euro) As Entrata FROM Movimenti WHERE
Scale.Id_Scala=Movimenti.Scala AND
Movimenti.Movimento="Entrata") AS ENTRATE, (SELECT SUM(Euro) As Uscita FROM
Movimenti WHERE
Scale.Id_Scala=Movimenti.Scala AND
Movimenti.Movimento="Uscita") AS USCITE,
[ENTRATE]-[USCITE]+[SaldoIniziale]![Saldo] AS BILANCIO
FROM Scale, SaldoIniziale;
Questa coem puoi vedere prende ancora i dati dalla Tabella Saldo Iniziale !!
Woww.. ecco qui tutto quello che fino ad ora ho fatto..
Secondo te la composizione attuale... ha le basi per arrivare a fare quello
che mi sono prefisso ?
Oppure sto sbagliando tutto e devo risistemare il database ?
Mi trovo un po' incasinato.. ;))  Ma ci riuscirò... c'a fo da sssolo ;PP
eheh (o quasi ;PP)
PS: Come puoi vedere la funzione Valuta Euro è impostata nella Tabella.. ma
nella query mi da es. L. 233  mah !
Grazie davvero
Marco

 Marco
Ciao
Buon lavoro.
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG