Newsgroup: it.comp.appl.access
Titolo: problema legato all'utilizzo di FC

ciao a tutti
Ho un problema legato all'utilizzo di FC.
La condizione è legata ad una casella di controllo 0/-1
con origine da
=IIf(IsNull(DLookUp("nCol";"Q_Carichi";"IdCarico=" & 
[IdCarico]));0;DLookUp("nCol";"Q_Carichi";"IdCarico=" & [IdCarico]))
Con questa espressione la casella di controllo è instabile (cioè traballa)e 
di conseguenza i controlli si colorano in fasi successive.
 
Come possso risolvere?
 
 
 

 Come possso risolvere?
 
Invece di usare quest'espressione come origine controllo sarebbe
meglio per la prestazione di includere Q_Carichi nella query che fa
l'origine record della maschera (magari con un Left/Right Join).
 
Se veramente non sia possibile almeno non fa il DLookUp due
volte ma usa:
 
=nz(DLookUp("nCol";"Q_Carichi";"IdCarico=" & [IdCarico]);0)
 
Se non altro forse traballi pi� veloce. ;-)
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 
 


griazie Karl
Ho provato ad includere la query ma per quanto ho provato, la sottomaschera
non mi mostra piu' il record contatore cioè non mi fa piu' aggiundere
nuovi record 
 
 

 piu' aggiundere nuovi record
 
Senza conoscere l'SQL della query e gli indici e relazioni delle tabelle
non si puo dire molto. Controlla se la query � aggiornabile.


 non si puo dire molto. Controlla se la query è aggiornabile.
 
come la verifico se è aggiornabile?
 
ciao Karl
queste sono le 2 query:
QryCarichi_Fo:
SELECT TbCarichi.IDCarico, TbCarichi.IDOrdine, TbCarichi.IdFornitore, 
TbCarichi.IdTrasportatori, TbCarichi.DataCarico, TbCarichi.DataChiusura, 
TbCarichi.ConfermaC
FROM TbCarichi
ORDER BY TbCarichi.IDCarico;
 
Q_Carichi
SELECT TbCarichi.IDCarico, Max(IIf(IsNull([DataCarico]) Or  [N° Colli]=0) Or 
IsNull([IdProdotto]),0,-1)) AS nCol
FROM TbCarichi LEFT JOIN [Dettagli] ON TbCarichi.IDCarico = 
[Dettagli].IDCarico
GROUP BY TbCarichi.IDCarico;
 
 
 

 GROUP BY TbCarichi.IDCarico;
 
Una query di raggruppamento non � mai aggiornabile e rende
anche non aggiornabile delle query dove fa parte.
 
Se capisco bene cosa fai nella seconda query e perch�,
sarebbe un po' complesso di combinare le due query.
 
Hai gi� provato l'espressione con nz() e una sola volta DLookUp
per traballare pi� veloce?
 
-- 
:-)


 ha scritto nel messaggio 
news:b8eo66...@mid.individual.net...

Ciao Karl
con la seconda query spunto o meno una casella di controllo
in base alle varie condizioni.
 
Max(IIf(IsNull([DataCarico]) Or  [N�Colli]=0) Or IsNull([IdProdotto]),0,-1))
 
ho provato l'espressione con nz() una sola volta
ma non va bene
 
 

 IsNull([IdProdotto]),0,-1)) ...
 
Certo, il problema ï¿œ il raggruppamento/Max().
Tutti e tre campi sono dalla tabella Dettagli?
 
-- 
Ciao


 -- 
ciao Karl
no! per DataCarico ho TbCarichi il resto è nella
tabella Dettagli 
 
 

> ...
 
Come mai ci sono 4 parentesi che si apertano e 5 che
si chiudono? Cosï¿œ non puo funzionare.
Non hai incollato la stringa dalla vis. SQL?


 tabella Dettagli
 
Prova di aggiungere un nuovo campo alla QryCarichi_Fo
(tutto in 1 riga):
 
iif(DLookUp("IdCarico";"Dettagli";"([Nï¿œ Colli]=0 OR
 IdProdotto Is Null) And IDCarico =" & [IdCarico]);0;-1)
And Not IsNull([DataCarico])
 
Controlla se ti dï¿œ i risulti desiderati per la casella di controllo
e come peggiora la prestazione della query.
Se va bene, usa il campo come origine di controllo della casella.



hai ragione qui ho pasticciato 
 
 


non c'è alcuna possiilità di includerla alla query dell'origine record? 
 
 

 record?
 
Non direttamente perchï¿œ vuoi una query aggiornabile.
Restano i modi indiretti come delle sottoquery (di solito lente)
o dei DLookUp in un campo calcolato come descritto.


 Perché non scrivi niente sul risultato della proposta?
ciao Karl
traballa
;-) 
 
 

 traballa
 
Se questa funzionalitï¿œ ï¿œ importante sarebbe un candidato
per la violazione consapevole delle regole, cioï¿œ di salvare un
valore calcolato a causa di prestazione.
 
Forse c'ï¿œ una maschera che controlla ogni carico e dove con
un po' di codice puoi riempire un campo Sï¿œ/No nel TbCarichi.
Un'altra via sarebbe di riempirlo su apertura della maschera
dove hai bisogno del valore. Tutto dipende dalle circostanze,
numero di record ecc., e dal design dell'applicazione.



Grazie Karl
bella idea