Newsgroup: it.comp.appl.access
Titolo: Integrità referenziale e casella combinata

Ciao a tutti.
Premetto che sono un principiante...ho cercato in giro: faq e risorse
varie ma senza successo...
Sto creando (beh...ci sto provando...) un database per l'archiviazione
delle quantità di scarti prodotte da diversi turni di produzione.
La struttura è molto semplice:
tabella Capiturno (con un solo campo "nome" contenente i nomi dei tre
capiturno) in relazione uno-a-molti con la tabella Dati (casella
combinata per la scelta dei capiturno associata alla tabella capiturno
ed altri campi, tra i quali quantità di scarto, tipo di prodotto,
linea di produzione etc)
Se applicassi l'integrità referenziale alla relazione sopra descritta,
nel caso di licenziamento di un capoturno cancellando il suo nome
perderei tutti i record correlati e quindi i dati relativi agli scarti
prodotti nel suo turno, dati che mi occorrono per una valutazione a
lungo termine del loro andamento.
Se non la applicassi,cancellando il nome del capoturno i dati
resterebbero, ma sparirebbe il nome del capoturno uscente dalla
casella combinata, creando problemi nel calcolo degli scarti per
capoturno fatto utilizzando una query. Inoltre i record rimasti
contenenti i dati, avrebbero la casella combinata indicante il nome
del capoturno vuota.
La domanda è: come posso evitare che questo accada?
La seconda questione riguarda la possibilità di intercettare via
codice i parametri richiesti da una query parametrica. In altre
parole, ho creato una query parametrica che visualizza lo scarto
effettuato da ciascun capoturno in un intervallo di date: la query
richiede all'utente di inserire da "quando a quando" si vuole
calcolare lo scarto riferito a ciscun capoturno, dopodiché viene
generato un report. Vorrei fare in modo che sul report comparissero le
date inserite dall'utente e corrispondenti quindi al periodo
esaminato, ma nonostante le numerose funzioni a disposizione per la
gestione delle date, non sono riuscito a trovarne una adatta allo
scopo.
Vi ringrazio anticipatamente per l'attenzione e sperando di non essere
OT (in questo caso mi scuso), vi auguro una buona giornata/serata.
S.

 scopo.
La soluzione più semplice è quella di partire da una form per la selezione
delle date, senza delegarla a parametri "aperti" della query. In questo caso
puoi fare riferimento ai controlli della form di selezione sia per i
parametri di query, sia per le informazioni da riportare su Report
(forms!NomeForm!NomeControllo).
Marco

(forms!NomeForm!NomeControllo).
Questo invece sono riuscito a portarlo a termine...beh, uno su due!
:-) Ma io non mi arrendo ed allora eccomi qui!
Sperando di non avere sconvolto nessuno con il mio (pseudo)^n codice
da programmatore della domenica...ringrazio per l'attenzione!
S.

 tra quelli attivi.
Il valore Null va controllato con una sintassi precisa e la funzione
IsNull().
Completerei la routine come segue per evitare grane navigando tra un record
e l'altro ...
If IsNull(Me.CasellaCombinata.Value) Then
    Me.CasellaCombinata.RowSource = "CapiturnoAttivi"
Else
    Me.CasellaCombinata.RowSource = ""
End If
Presuppongo che i capiturno nell'ambito del record non debbano/possano
essere aggiornati. Perchè in caso contrario i valori ce li dovresti digitare
direttamente (la casella combinata non funziona se c'è già un valore).
In alternativa potresti optare per mantenere fisso il RowSource e giocare
invece sulla proprieta "non in elenco" (LimitToList) che blocca/sblocca la
possibilità di inserire valori non previsti.
Ciao
Marco

direttamente (la casella combinata non funziona se c'è già un valore).
Ora il mio obiettivo è fare in modo che chi inserisce i dati possa
modificare in caso di necessità solo i record che ha modificato il
giorno stesso; i precedenti devono essere bloccati.
Utilizzando l'evento Su Corrente della maschera di inserimento,
pensavo ad una cosa del tipo:
If (Data di ultima modifica della tabella associata alla maschera) <
Data Attuale Then
	Impedisci Modifica della maschera
	Impedisci modifica della sottomaschera
End If
Domanda: come faccio a risalire alla data di ultima modifica della
tabella in questione? La guida di Access riporta l'uso funzioni
supermegagalattiche per le mie (scarse) conoscenze...
Un'altra domanda: è possibile generare tramite Access un foglio di
Excel, o anche solo riempire dei campi in un foglio di calcolo
predisposto?
Grazie per l'aiuto...(ormai sono stremato...:-))
S.

 Grazie per l'aiuto...(ormai sono stremato...:-))
Resisti ... ;-)
Marco