Newsgroup: it.comp.appl.access
Titolo: DCount non applica il parametro Like

Salve a tutti
Non riesco a fare un Dcount che mi sembrava facilissimo
Sovrastanti alle tabelle Modulo "unoamolti" con Flight, ho
Forms!Modulo![IDModulo]
SubForm!Flight![IDModulo]
Devo contare SOLO i record della subform "Flight" che sono legati
dall' IDModulo.
Orbene, in un controlo non associato ( nella sub) scrivo:
=DCount("[IDModulo]";"Flight";[IDModulo] Like [Maschere]![Modulo]!
[IDModulo])
La risposta è : " nessun record corrente" , ma mi da comunque un
risultato, cioè TUTTI i record.
Non riesce a fare filtro tra i due IDModulo
Come mai ?
Un consiglio per favore..cerco in giro da un po' ma non trovo nulla
Grazie mille
Ed.

 Non riesce a fare filtro tra i due IDModulo
perche' e' sbagliata la sintassi
=dcount("idModulo";"flight";"idmodulo like '*" & 
[Maschere]![Modulo]!idModulo & "*'")
sempre che sia un dato alfanumerico e comunque non conti i record della 
subform mai i record di tabella (presumo che siano uguali, lo affermo 
per "pedanteria")
Il "nessun record corrente" potrebbe riferirsi ad altra cosa
--
ac


Ciao Alessandro,
devo contare i record della subform Flight, che sottostà alla tabella
Flight ( sono uguali, si )
La struttura è così :
Maschera Modulo, campi IDModulo( contatore), Budget, Campagna
SottoMaschera Flight, campi ID Flight, IDModulo(numerico), canale,
periodo
Devo dirgli , contami i record dove l'idmodulo della subform sia lo
stesso della form
Al momento ho 2 record di test :
1) Modulo IDModulo 1 (un record)
    Flight   Id Modulo 1 (tre record)
2) Modulo IDModulo 2 (un record)
    Flight   Id Modulo 2 (un record)
E lui infatti mi restituisce 4, che sono esattamente i record che ho
nell'intera tabella Flight.
Ho corretto come dici tu , ma nisba....sich ( ps. Quest è la
formattazione che restituisce proprietà del controllo, quando aggiorni
"Origine Controllo")
=DCount("[IDModulo]";"Flight";[IDModulo] Like "*" & Maschere!Modulo!
IDModulo & "*")
Altre idee?
Grazie Alessandro
Ed.

Eddie ha scritto:

se e' questo non e' esattamente quello che ho scritto,mancano gli apici 
e le vigolette sono messe in modo errato. SCritta cosi'  non dovrebbe 
accettarla sulla proprieta'.
E comunque ho visto che idModulo e' numerico, la like non ha senso.
=DCount("[IDModulo]";"Flight";"[IDModulo] =" & Maschere!Modulo!
IDModulo
E non avrebbe senso comunque perche' devi contare quelli con lo "stesso" 
idModulo e quindi e' una eguaglianza
--
ac


uhmmm...forse il fatto che ho settato il monitor a definizione alta e
il leggere i post su googlegroup, mi impasta
un po' alcuni caratteri e delle cose non si notano ( non avevo
letteralmente visto gli apici) .
Sta di fatto che Il codice che mi hai postato tu del quale ho fatto
copia/incolla, mi dava comunque " operatore mancante" .
Non è che ci sono delle differenze tra i vari Access?  Mi capita
spesso di trovare degli esempi sul ng che a detta di chi li posta
funzionano , ma io devo in qualche modo " arrangiarli" . Io uso A03
+Sp3+ Patch (combo non funzionanti)
Ho trovato comunque tre soluzioni
La prima è la tua , ma inserita su "corrente" della Sub . Funziona;
per ogni record della form A mi restituisce il numero dei record della
Sub B.
Sintassi corretta: " Me.NumRcd = DCount("[IDModulo]", "Flight",
"[IDModulo] =" & Forms!Modulo![IDModulo])
Se l'ultimo , che è il campo , non ha le quadre, non viene
riconosciuto come tale.
Mi sembra di ricordare che in A97 fosse diverso e forse per questo mi
confondevo.
Anche la seconda è la tua ma inserita come origine controllo:
=DCount("[IDModulo]";"Flight";"[IDModulo] =" & ' Maschere!Modulo!
IDModulo')
Come puoi notare, il riferimento alla maschera funziona SOLO se ci
sono gli apici e in questo caso il campo IDModulo NON deve essere tra
quadre.
Come mi fa incavolare questa disomogeneità!! :-)
Lo stesso risultato lo ottieni con un semplice txtbox sulla sub:
Me.NumRcd=Conteggio([IDModulo])  che è slegato dal riferimento alla
form principale, ma ti restituisce i soli record della sub ( solo ora
mi sono dimenticato di specificare che la sub è a maschere continue)
La terza non mi piace. Forse è psicologico , ma l'idea di non avere
alcun riferimento al record principale mi infastidisce.
Tra le altre due quella più performante è quella in Vba su corrente
della subform. Immediata.
Mentre quella col DCount sul controllo ha un delay fastidioso di quasi
un secondo rispetto al primo.
Vado a studiarmi meglio queste maledette virgolette.
Grazie Alessandro e ciao
Ed.

 Come mi fa incavolare questa disomogeneità!! :-)
1)
Le parentesi quadre sono *obbligatorie* quando nel nome controllo/campo 
c'e' qualche carattere speciale (i.e. lo spazio) altrimenti non sono 
obbligatorie. Se non ti accetta "idModulo" senza quadre c'e' un errore 
da qualche altra parte.
2)
=DCount("[IDModulo]";"Flight";"[IDModulo] =" & ' Maschere!Modulo!
IDModulo')
questa e' arisbagliata
dovrebbe essere cosi'
=DCount("[IDModulo]";"Flight";"[IDModulo] =" & Maschere!Modulo!
IDModulo)
...senza gli apici
3)
A me non e' mai capitato di prendere cose dal sitocomune che non 
funzionassero. E se non funzionavano c'era sempre una bella nota di 
"warning" che chiariva le cose da fare.
4)
Io sconsiglierei di usare la forma
Maschere!nomeForm!nomecontrollo
se il dato da ricercare e' su form diversa dalla corrente preferisco
Forms!nomeForm!nomecontrollo
altrimenti un banale [nomecontrollo] che equivale a [me]![nomecontrollo] 
che equivale a [Forms]![menomeform]![nomecontrollo]
--
ac


1)Che caratteri speciali possono esserci in un CampoContatore-
CampoNumerico ? Direi nessuno
Comunque adesso per magia....il controllo funziona anche senza gli
apici
E il codice Vba , dal quale ho tolto le quadre al campo IDModulo ,
funziona senza.
Per quanto riguarda invece la voce Maschere! ...Io ho sempre usato
Forms! fin dal lontano A97, ma a volte, anzi spesso, il controllo
caloclato, mi tramuta la voce Forms! in Maschere! Perchè?
Per i problemi precedenti ( cose che non funzionano e poi funzionano)
ho un sospetto. Non so quanto possa essere vero ma devo capire il
perchè di certi strani funzionamenti.
Mi succede a volte che con codici particolarmente complessi, per
verificarne l'effettiva funzionalità devo chiudere e riavviare Access.
Potrebbe essere che essendo in virtualizzazione, Mac-Parallel Desktop-
WinXpSp2-Access ci siano delle "latenze" nella memorizzazione dei
cambiamenti e questo mi porti a pensare che sbaglio anche quando
potrebbe essere corretto?
Che ne pensi ?
Ciao
Ed.

 potrebbe essere corretto?
In un ambiente non "pulito" puo' succedere di tutto. E' da un po' che ho 
una situazione "maledetta" utilizzando l'ocx videolan a cui ancora non 
sono riuscito a trovare rimedio.
--
ac


Grazie mille di tutto :-)
Mi sa che per prima cosa pulisco la 1° macchina virtuale dove c'è
Access,  togliendo Vb6 e Vb8 che andrò a mettere soli soletti nella
seconda :)
Buona giornata
Ed.