Newsgroup: it.comp.appl.access
Titolo: Rilevare valore da una tabella da maschera

Ciao a tutti.
Ho una maschera con i dati relativi agli articoli in listino
che va a prendere dalla tabella Listino.
Per rilevare quando un determinato articolo e' arrivato
l'ultima volta faccio un DMAX da Magazzino:
=DMax("Dataarrivo";"Magazzino";"articolo='" & [Form]!Articolo & "'")
In Magazzino, nel record dell' Articolo di cui faccio il dmax della data
vorrei rilevare la relativa quantita' di arrivo (qta). Come posso fare?
Ciao e grazie :)

 ha
scritto nel messaggio
news:09OEc.399874$hc5.17...@news3.tin.it...

Io userei un dlast con la stessa istruzione e con
il seguente filtro
"articolo = '" & forms!tuamaschera!Articolo
MAssimiliano

 Ciao e grazie :)
DLast
-- 
Pablitomf
Lentamente muore chi abbandona un progetto prima di iniziarlo, chi non fa
domande sugli argomenti che non conosce, chi non risponde quando gli
chiedono qualcosa che conosce. (P.Neruda)
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 MAssimiliano
Si, ma a me il problema e' la qta

 DLast
Vedi sopra (sotto), ho risposto a MAssimo

Spider ha scritto:




Estrai la quantitŕ con una Dlookup che abbia come criterio Articolo='...'
And data=#...# dove la data viene restituita dalla Dmax:
=Dlookup("Quantitŕ";"Magazzino";"articolo='" & [Form]!Articolo & "' And
Dataarrivo=" & format(DMax("Dataarrivo";"Magazzino";"articolo='" &
[Form]!Articolo & "'");"\#mm/dd/yyyy\#"))
Namor
-- 
namor at inwind punto it


 ha
scritto nel messaggio
news:LXOEc.399980$hc5.17...@news3.tin.it...

Allora il dmax lo devi fare su qtà e dlast
dataarrivo è un criterio
MAssimiliano

 > DLast

Come mi ha ricordato il buon Karl, è SCHENGEN che mi frega :-) ... la
sincronizzazione non è proprio in tempo reale, spiacente.


 Namor
Perfetto, grazie :)

 MAssimiliano
Eviterei l'uso di un Dlast perchè, come c'è scritto nell'help, restituisce
un valore casuale e non il più grande o l'ultimo (ultimo non si sa in base
a cosa), quindi il risultato non è garantito.
Non capisco perchè le abbiano chiamate Dlast e Dfirst se restituiscono un
valore casuale, e perchè ne abbiano fatte due, potevano farne una sola e
chiamarla Drnd. Forse ti danno il primo o l'ultimo record in ordine di
inserimento? O in ordine di chiave primaria, se c'è? Boh!
Se qualcuno gentilmente ci posta il codice sorgente del vba di access
magari riusciamo a svelare il mistero!
Namor
-- 
namor at inwind punto it
questo articolo e` stato inviato via web dal servizio gratuito 


 Namor
Guarda nella mail personale.
Il file di testo è il sorgente, quello grande
invece è il compilatore.
MAssimiliano

 Allavi ragione!


Shhht! Non spargere troppo la voce, che poi lo vogliono tutti! Lo
distribuiremo al prossimo raduno, per incentivare le adesioni.


 mi compare alcun risultato.
Il mistero si infittisce: tutto funziona se le date che popolano il campo
Dataarrivo
sono 2*/**/** oppure 3*/**/**.
Non funziona invece in presenza di date: 0*/**/** e 1*/**/**  :(
Mentre:
=DMax("Dataarrivo";"Magazzino";"articolo='" & [Form]!Articolo & "'")
funziona perfettamente.
In effetti Namor mi aveva suggerito il codice:
=Dlookup("Quantitŕ";"Magazzino";"articolo='" & [Form]!Articolo & "' And
Dataarrivo=" & format(DMax("Dataarrivo";"Magazzino";"articolo='" &
[Form]!Articolo & "'");"\#mm/dd/yyyy\#"))
L'impressione che ho e' che il problema sia proprio in  \#gg/mm/aaaa\#,
d'altra parte, con \#mm/dd/yyyy\# non funziona affatto.
Mah.....

 Mah.....
Ho dei dubbi su questo: [Form]!Articolo
che invece dovrebbe essere nella forma [Forms]![NomeForm]![NomeControllo]
Sicuro che il primo Dmax funzioni con quel criterio, o ti dà sempre la
data più grande in tabella senza tenere conto dell'articolo?
Per il format la stringa non è "#gg/mm/aaaa#" ma "\#gg/mm/aaaa\#" (con i
backslash) altrimenti genera una schifezza, se ti dà problemi prova ad
invertire gg e mm: "\#mm/gg/aaaa\#".


 invertire gg e mm: "\#mm/gg/aaaa\#".
Non fischia.
Mi suicido? :(

 Mi suicido? :(
Non ancora, proviamo prima ancora un paio di post...


 ha scritto nel messaggio
news:cc38p6$dru$1...@news.newsland.it...

Scusa namor, e sostituendo il format con il CDate?
Ciao.
-- 
Sergio MAZZA

 > Come le leggi queste: "\#dd/mm/yyyy\#" "#dd/mm/yyyy#"?


 Ciao.
Uff... ODIO quando scrivo un post e IE se lo perde!
Dicevo che cdate() non offre controllo sul formato restituito ma visto che
dà esattamente il formato richiesto dalla dlookup(), qui si può benissimo
sostituire al format() semplificando l'espressione.
Rimane valida la mia considerzione sulla sintassi [Form]!Articolo che
secondo me non ha nessuna chance di funzionare!
=DLookUp("Qta";"Magazzino";"articolo='" & [Forms]![Articoli]![Articolo] & 
"' And Dataarrivo=#"& Cdate(DMax("Dataarrivo";"Magazzino"; "articolo='" &
[Forms]![Articoli]![Articolo] & "'") & "#"))
E invece affrontando il problema alla radice... se si estraggono le
quantità già nella query origine dati in modo da averle disponibili come
campo invece di calcolarle di volta in volta con complicate dmax() è
dlookup()? L'unica cosa da verificare è se l'origine dati si aggiorna in
automatico nel caso in cui, a maschera già aperta, un altro utente
inserisca un nuovo movimento di magazzino.


 Non ancora, proviamo prima ancora un paio di post...
Preparo la Katana.

 Preparo la Katana.
La formula sembra corretta, ci dev'essere qualche altro inghippo, puoi
fare il debug della formula estraendo il valore da vba sull'evento
form_current e articolo_afterupdate, usando variabili per memorizzare gli
step intermedi, cioè la data restituita dalla dmax() e il criterio
completo della dlookup(), se c'è qualcosa che non va lo vedi subito
ispezionando il contenuto delle variabili durante l'esecuzione.
Altrimenti prova a calcolare la quantità nella query origine dati della
maschera invece che nel controllo.


 > > M[cut]
AAAAAAAAAAALT!
Ho cambiato:
gg/mm/aaaa
in
mm/gg/aaaa
Me lo avevi detto nel post piu' sopra e lo avevo provato...
Mi era sembrata una buona idea.
Solo che prima non funzionava.
Ora funziona.
Ora dimmi che non lo avevo provato.
[- Hey, quel tipo si sta sentendo male!!!]
E invece me lo avevi detto e lo avevo provato.
[- Chiamate un dottore!!! C'e' un uomo con lo sguardo vitreo,
con la bava alla bocca e in preda alle convulsioni!!!]
Cazzo, lo *AVEVO* provato...
[- Che schifo!!!]
Appena mi riprendo depongo la katana e mi vado a impiccare. :-|
THX ;)

 mm/gg/aaaa
Non sarà mica finito qua il divertimento, no?
Già che ci sei prova a sostituire tutto il format(...) con "#" & Cdate() &
"#", che è anche più semplice, e vedi se va, così la prossima volta ne sai
due di sistemi per usare le date.
(prima copia-incolla da qualche parte la formula che funziona!)
Ciao.


 (prima copia-incolla da qualche parte la formula che funziona!)
Eccola:
=DLookUp("Qta";"Magazzino";"articolo='" & [Form]!Articolo & "' And
Dataarrivo=" & Format(DMax("Dataarrivo";"Magazzino";"articolo='" &
[Form]!Articolo & "'");"\#mm/gg/aaaa\#"))
Ciao ;)


Prova con:
=DLookUp("Qta";"Magazzino";"articolo='" & Articolo & "' And
Dataarrivo=CDate('" & DMax("Dataarrivo";"Magazzino";"articolo='" & Articolo
& "'") & "')")
La funzione CDate inseriscila dentro la stringa della condizione Where
perché deve trasformare la stringa di ritorno dalla DMax in data per il
confronto con DataArrivo;
dovrebbe risultare:
=DLookUp("Qta";"Magazzino";"articolo='" & Articolo & "' And
Dataarrivo=CDate('01/12/2004')")
Ciao.
-- 
Sergio MAZZA

 & "'") & "')")
Copincollato. Non gira.

 Ma non va (errore di sintassi).
"' And Dataarrivo=" "#" & Cdate(
Non puoi mettere vicine due stringhe così senza un'operatore di unione.
O metti un & tra "dataarrivo=" e "#"
"' And Dataarrivo=" & "#" & Cdate(
o più semplicemente, dato che sono due stringhe fisse, le unisci
"' And Dataarrivo=#" & Cdate(


 ha scritto nel messaggio
news:Uq6Gc.577528$rM4.24...@news4.tin.it...

"Non gira" è generico e fuorviante; dovresti descrivere meglio cos'è che non
va. Per esempio sei sicuro che entrambi i paramentri (Articoli e DataArrivo)
siano presenti (non Null)?
Ciao.
--
Sergio MAZZA