Newsgroup: it.comp.appl.access
Titolo: esiste un modo di stabilire una relazione fra singoli record?

Buonasera, mi capita di ricorrere a questo gruppo grazie al quale ho 
potuto spesso risolvere dei problemi relativamente al mio database access.
 
Ho una maschera che si basa su una query. Questa maschera mi consente di 
fare un po' di contabilità nella mia attività (clienti, fornitori, 
movimenti di cassa e di conto corrente).
 
Adesso mi chiedo se esista un modo per correlare dei record in base non 
tanto alla categoria (per esempio spese per hosting o cancellerìa) ma in 
base ad un classificazione personale.
 
Per esempio se io verso in cassa 10 euro (e questo è un record) e poi 
verso in conto corrente questi 10 euro (un altro record), esiste un modo 
di "taggare" questi due movimenti in modo che con un rapido filtro io 
possa visualizzarli entrambi?
Spero di essermi spiegato.
 
Grazie
Gianni

giannirusso formulated the question :

Ti sei spiegato... e coi tempi che corrono è già molto!
 
Un qualsiasi programma di contabilità generale soddisfarebbe alle tue 
esigenze, ma così alla buona... potresti mettere uno stesso codice 
(valore numerico) nei campi [Codice] dei due record (dovresti pertanto 
aggiungere un nuovo campo alla tua tabella).
Quando poi andassi a cercare i movimenti della banca (per esempio con 
un ComboBox) ti verrebbe mostrato anche il codice, e con altro ComboBox 
ti verrebbero mostrati ambedue i record (meglio sarebbe se quest'ultima 
operazione la eseguissi con VBA in AfterUpdate del ComboBox).
 
Ma chissà che qualcun altro non abbia a proporre miglior soluzione.
 
Bruno

Scrisse giannirusso martedì 18/02/2014 alle 20:05:17:

Io ho fatto un piccolo db per la gestione degli incassi del nostro 
Studio.
Gli incassi sono collegati alle fatture, quindi quando ho un record 
d'incasso devo collegarlo al record fattura relativo (cosa ha pagato il 
cliente?).
Sviluppare il tutto è stato abbastanza arduo, ma ora funziona.
 
Purtroppo però non c'è nessun automatismo. Ci vuole una seconda 
tabella.
Quando registro un record d'incasso (che il db riconosce perché la 
causale è di tipo "incasso") mi si apre una maschera con sottostante 
tabella temporanea (creata da una query*) che contiene i movimenti 
ancora "aperti" delle fatture di quel cliente. Io seleziono quali 
movimenti chiudere con l'incasso e se gli importi quadrano, 
arrotondamenti inclusi, posso confermare. In una tabella a parte 
vengono codificati (id) in abbinamento incasso e pagamento, così nella 
scheda cliente oltre al saldo posso, con questa seconda tabella, 
esporre le sole fatture scoperte...
 
Ciao
 
-- 
---
/'davide/

 sole fatture scoperte...
È la procedura delle partite collegate che qualunque buon sistema di 
contabilità prevede.
Consente anche di controllare che non vadano in prescrizione i crediti 
derivanti dalle fatture più vecchie.
 
Bruno

 contabilità prevede.
 
He he, in realtà ne avrei fatto volentieri a meno, ma la prima cosa che 
mi disse chi seguiva gli incassi fu: "ma come faccio ad abbinarlo alla 
fattura?"..
 
-- 
---
/'davide/

 cliente?).
 
In questo modo hai trovato un elemento comune ai record che vuoi correlare.
A me invece spesso capitano movimenti interni non legati ad alcuna 
fattura come per esempio versamenti o prelevamenti dal fondo cassa.
A questo punto mi viene in mente un comando che genera un numero casuale 
e univoco che alla fine sarà l'identificativo di quel gruppo di 
movimenti che poi possono essere richiamti.
 
Grazie
Gianni
 
 
 
 

 ha scritto:

ma in realtà l'utilizzo della seconda tabella di cui ti dicevo
 rende inutile il cosiddetto elemento identificativo comune. nel
 mio db fattura e incasso non sono collegati tra loro dal numero
 fattura, ma dalla seconda tabella.
se nella tabella principale
 dei movimenti ho la fattura con id=10 e i due incassi acconto
 id=70 e saldo id=120, nella seconda tabella (id,idmov,idmovchiu)
 ho (1,10,70;2,10,120) con ovviamente un controllo degli importi
 fatto in sede di registrazione degli incassi.
ciao
-- 
--
/'davide/
 
 
 
----Android NewsGroup Reader----
http://www.piaohong.tk/newsgroup
 

Il 20/02/2014 23:22, Dàvide ha scritto:> ma in realtà l'utilizzo della 
seconda tabella di cui ti dicevo
 >   rende inutile il cosiddetto elemento identificativo comune. nel
 >   mio db fattura e incasso non sono collegati tra loro dal numero
 >   fattura, ma dalla seconda tabella.
 > se nella tabella principale
 >   dei movimenti ho la fattura con id=10 e i due incassi acconto
 >   id=70 e saldo id=120, nella seconda tabella (id,idmov,idmovchiu)
 >   ho (1,10,70;2,10,120) con ovviamente un controllo degli importi
 >   fatto in sede di registrazione degli incassi.
 > ciao
 >
Non sono esperto, ma temo che dovrò sbatterci la testa perchè è l'unica 
soluzione. Se non ho capito male tu hai creato una tabella i cui record 
contengono gli identificativi di quei movimenti. A parte la 
realizzazione del tutto io avrei il problema che non è detto che siano 3 
al massimo i movimenti da collegare. Potrebbero anche essere di più.
E poi con una query richiami quei movimenti nella maschera principale?
Grazie
Gianni
 

Scrisse giannirusso venerdì 21/02/2014 alle 21:06:04:

Ho detto 2 per sintesi, potevano essere anche 200.
Comunque come ti dicevo è stata una cosa lunga e non riesco nemmeno ad 
estrapolare dal db la parte che ti interessa perché ci vorrebbe troppo 
tempo. Però non è complicata, solo laboriosa..
Ripeto, il concetto base è la seconda tabella, dove crei dei record che 
associano il movimento principale a quello secondario. Una volta che 
hai quelle informazioni, puoi creare delle query che rispondano alle 
tue domande.
Tab1(Id,Data,Causale,Importo)(...,100,28/02/2014,INCASSO,500.00;150,01/03/2014,VERSCC,300.00;180,02/03/2014,VERSCC,190.00)
Tab2(Id,Id1;Id2)(1,100,150;2,100,180)
Poi ad esempio una query ti dirà che il resto dell'incasso 100 è 10.00, 
o che è stato versato in due volte con resto, ecc. ecc.


Il 22/02/2014 10:01, Dàvide ha scritto:
 > Ho detto 2 per sintesi, potevano essere anche 200.
 > Comunque come ti dicevo è stata una cosa lunga e non riesco nemmeno ad
 > estrapolare dal db la parte che ti interessa perché ci vorrebbe troppo
 > tempo. Però non è complicata, solo laboriosa..
 > Ripeto, il concetto base è la seconda tabella, dove crei dei record che
 > associano il movimento principale a quello secondario. Una volta che hai
 > quelle informazioni, puoi creare delle query che rispondano alle tue
 > domande.
 > 
Tab1(Id,Data,Causale,Importo)(...,100,28/02/2014,INCASSO,500.00;150,01/03/2014,VERSCC,300.00;180,02/03/2014,VERSCC,190.00) 
 
 >
 > Tab2(Id,Id1;Id2)(1,100,150;2,100,180)
 > Poi ad esempio una query ti dirà che il resto dell'incasso 100 è 10.00,
 > o che è stato versato in due volte con resto, ecc. ecc.
 > Ciao
 >
 
Ho creato la tabella2 con Idtabella2, Idmovimento1, Idmovimento2, 
Idmovimento3....
 
Adesso però non so come far ad ottenere che la maschera mi visualizzi 
solo i record i cui Id corrispondano a Idmovimento1, Idmovimento2, 
Idmovimento3.
 
Penso occorra farlo con il vba e non so da dove iniziare.
Grazie
Gianni
 
 

Scrisse giannirusso lunedì 24/02/2014 alle 10:05:35:

Non ho capito Idmovimento3... ne bastano due! Se un movimento è 
collegato a più movimenti avrai più record nella tabella due che hanno 
lo stesso Idmovimento2 (o Idmovimento1 come ti pare...).


 Ciao
 
Nella seconda tabella Tab2 metto i campi: IdTab2 (chiave primaria), 
Movimentobase e Movimentocorrelato.
La relazione fra la tabella principale (sulla quale si appoggia la 
maschera) e la Tab2 è, rispettivamente, uno a molti (anche se non ne 
capisco bene il senso).
 
In sostanza alla fine nella Tab2 avrò un record dove metterò in 
relazione il movimento base con un primo record correlato. Un secondo 
record dove la relazione sarà tra quello stesso movimento base e un 
terzo record correlato e così via.
Alla fine a quell'id della tabella (maschera) principale 
corrisponderanno diversi record con in comune proprio quell'id.
 
Se fin qui ho capito bene, come faccio ad inserire nel campo 
corrispondente nella tab2 l'id del movimento base presente nella 
maschera? Copiandolo con codice vba da pulsante oppure partendo dalla 
relazioni tra le varie tabelle? E qui mi perdo....
 
Grazie per la pazienza
Gianni
 
 
 
 
 

Scrisse giannirusso martedì 25/02/2014 alle 19:12:42:

Se come me non mastichi il codice (sono un ragioniere prestato ad 
Access) usa le macro...
Fai una query di accodamento e richiamala con una macro.
Ovvio che devi accodare anche l'id movimento "base", per questo ti 
occorre che, in registrazione del movimento "correlato", si apra una 
maschera che elenchi i movimenti "base" correlabili, così che nel 
momento in cui eseguirai la query di accodamento, disporrai di entrambi 
gli id da correlare.
 
-- 
---
/'davide/