Newsgroup: it.comp.appl.access
Titolo: Dlookup con due criteri concatenata con DMax

Salve a tutti,
sono nuovissimo nel NG.
E anche con nessuna conoscenza di Access.
Mi sono messo di buona lena e ho fatto il mio bel DB studiando
parecchio e cercando spiegazioni in rete (quante ne ho trovate qua!).
Ora il mio problema:
la parte interessata del DB è composta da 3 tabelle (prodotti, prezzi
e ordini).
Tab prodotti:
IdProdotto contatore chiave
CodProdotto
NomeProdotto testo
Tab prezzi:
IdDecorrenza contatore chiave
CodProdotto testo
Prezzo valuta
decorrenza data
Tab ordini:
IdOrdine contatore chiave
DataConsegna data
CodProdotto testo
prodotto testo
prezzo valuta
pezzi numerico
gni volta che aumenta un prezzo inserisco un nuovo record nella tab
prezzi con la relativa decorrenza. Vorrei che nella maschera Ordini
aggiornando il prodotto mi inserisca in automatico il prezzo di quel
prodotto in vigore in quel periodo.
Avevo pensato ad un Lookup con Dmax però non mi funziona bene.
Scrivendoli separati
Me!Prezzo=DLookup("[Prezzo]","Prezzi","[CodProdotto]=Forms![Ordini]![CodProdotto]")
Me!Prezzo=Dmax("[Prezzo]","Prezzi","[Decorrenza]=Forms!Ordini!DataConsegna")
presi singolarmente funzionano, insieme così come sono no. (da
considerare che ora ho modificato i campi data in numerico per
verificare dove era il problema, ma i campi devono ritornare data)
devo unire in una sola stringa con la sintassi giusta (mi sta facendo
uscire di testa).
Grazie infinite. Mauro.

Avevo pensato ad un Lookup con Dmax perň non mi funziona bene.
------------------------------------
Meglio usare due query: la prima estrae solo i prodotti della tab prezzi in 
base al prodotto impiegato; la seconda estrae il dlast del prezzo dalla 
prima query. Questo č valido se il prezzo applicato č sempre l'ultimo. Puoi 
usare anche una sola query che abbia nei criteri l'id Articolo e il dlast 
del prezzo.
------------------------
cut
Grazie infinite. Mauro.
Dimmi se fino ad ora ci siamo.
Ciao, Carlo

 Ciao, Carlo
Ciao carlo, caspita che velocità!
Dunque ho modificato le tab come hai detto.
non ho capito come fare le query per fare in maniera che inserendo in
un campo maschera il codProdotto mi compili automaticamente il campo
prezzo. sono caduto miseramente sulla sintassi, anche se c'è il
generatore di espressione che dovrebbe aiutarmi...
ciao, Mauro

Mauro ha scritto:

Inoltre come posso creare una query con i parametri giusti per
selezionare un determinato IdProdotto quando questo viene digitato
solamente nella maschera in caricamento dati? non lo posso sapere in
anticipo per preparare la query.

 Ciao, Carlo
Ciao carlo, caspita che velocità!
Dunque ho modificato le tab come hai detto.
non ho capito come fare le query per fare in maniera che inserendo in
un campo maschera il codProdotto mi compili automaticamente il campo
prezzo. sono caduto miseramente sulla sintassi, anche se c'è il
generatore di espressione che dovrebbe aiutarmi...
ciao, Mauro
-----------------------------------
Usa l'evento su deselezionato o prima di aggiornare del controllo. L'utente 
ha già scelto il prodotto e quindi è disponibile.
La query, se ne usi una, sarà composta dalla sola tabella Prezzi e sarebbe 
simile a questa:
SELECT Last(TabPrezzi.IDPrezzo) AS IDPrezzo, Last(TabPrezzi.Prezzo) AS 
UltimoPrezzo
FROM TabPrezzi
WHERE 
(((TabPrezzi.IDProdotto)=Forms!TuoNomeMaschera!TuoControlloIDProdotto))
ORDER BY Last(TabPrezzi.IDPrezzo);
Supponiamo che salvi la qry con il nome di SQDimmiUltimoPrezzo, nell'evento 
su deselezionato del controllo Prodotto, puoi scrivere:
Me.NomeControlloPrezzo = dlookup("UltimoPrezzo","SQDimmiUltimoPrezzo")
Tieni presente che se hai ben strutturato la maschera Ordini e fatto le 
modifiche consigliate, il controllo IDProdotto sarà l'ID del prodotto ma 
visualizzerai il nome del prodotto perchè avrai impostato il campo, nella 
tabella, nella ricerca, su "casella combinata" e alimentato questa combo con 
una query proveniente da tabProdotti e che contiene due campi: IDProdotto e 
NomeProdotto. Nella tabella la colonna associata sarà la 1, il numero di 
colonne sarà 2 e la larghezza delle colonne sarà 0;5. In questo modo ti 
assicuri che il valore riportato sarà sempre l'idProdotto ma quello 
visualizzato sarà il nome del prodotto (molto più comprensibile). Se ancora 
non hai provveduto a questa importante modifica, fallo ora; poi torna in 
struttura della maschera ed elimina il controllo IDProdotto e rimettilo. 
Vedrai la combo al posto della casella di testo. Ricorda di rifare la giusta 
tabulazione (ordine di tabulazione).
Ritornando alla nostra procedura ora dovrebbe essere chiaro perchè nella 
query abbiamo usato il criterio Forms!TuoNomeMaschera!TuoControlloIDProdotto 
nel campo IDProdotto: l'ID del prodotto appunto, mascherato dal nome del 
prodotto stesso.
Dovrebbe funzionare.
Ciao, Carlo

 ha scritto nel messaggio 
news:1165179321.6...@f1g2000cwa.googlegroups.com...
cut
Inoltre come posso creare una query con i parametri giusti per
selezionare un determinato IdProdotto quando questo viene digitato
solamente nella maschera in caricamento dati? non lo posso sapere in
anticipo per preparare la query.
----------------------
Leggi la risposta precedente.
Ciao, Carlo 

Carlo Costarella ha scritto:

Per capire e in seguito fare un nuovo DB strutturato correttamente
dall'inizio sto facendo alcune prove seguendo passo passo i tuoi
consigli però mi stai portando su una strada molto complicata per le
mie conoscenze:
ho creato 3 tab:
Prodotti:
     CodProdotto
     NomeProdotto
Prezzi:
     CodProdotto
     Prezzo
     Data
     IdPrezzo
Ordini:
     IdOrdine
     DataConsegna
     CodProdotto
     Prezzo
     IdPrezzo
ho fatto la query come hai detto tu ma quando faccio la maschera esce
in maniera che non posso inserire dati.
se vado in proprieta maschera in origine controllo è venuto questo
codice:
SELECT ordini.DataConsegna, ordini.CodProdotto, ordini.Pezzi,
Prezzi.Prezzo FROM (Prodotti INNER JOIN Prezzi ON
Prodotti.CodProdotto=Prezzi.CodProdotto) INNER JOIN ordini ON
Prodotti.CodProdotto=ordini.CodProdotto;
Che succede?
Ciao, Mauro.

Ciao, Mauro.
-------------------------------------
Cosa c'entra questa qry...?
Nel mio esempio usavo la sola tabella Prezzi. Tu hai interesse a prendere 
solo l'ultimo prezzo inserito nella tab Prezzi e questo in base 
all'IDProdotto inserito.
Cosa vuol dire quando scrivi "è venuto questo codice"?
Mauro, capisco la tua difficoltà ma purtroppo bisogna seguire certe regole 
che, all'inizio, possono sembrare ostiche ma poi diventano routine e le 
seguirai ad occhi chiusi.
Ciao, Carlo

Carlo Costarella ha scritto:

La tab clienti era nel vecchio Db. ho creato 3 tab in uno nuovo
prerchè cerco di capire quello che faccio altrimenti i tuoi
insegnamenti sono inutili. ora volevo provare il meccanismo del prezzo.
quella qry non l'ho scritta io, la maschera l'ho creata e cancellata
più volte e quella qry esce in automatico per questo non capisco il
motivo.
le tabelle le ho collegate tramit il codProdotto perchè se non ho
capito male per avere u colegamento devo avere uno stesso campo in
entrambe le tabelle.
Giusto?
ciao.

ciao.
Giusto.
Ricapitoliamo le cose più importanti:
Tab Clienti
IDCliente (indice univoco)
Cognome o Ditta
...quello che vuoi
TabProdotti
IDProdotto (indice univoco)
NomeProdotto
...quello che vuoi ma non dati ridondanti
TabPrezzi
IDPrezzo (indice univoco)
Prodotto (stesso tipo di dati...numerico lungo della TabProdotti)
DataPrezzo
Prezzo
TabOrdini
IDOrdine (indice univoco)
Cliente (stesso tipo di dati...numerico lungo della TabClienti)
DataOrdine
Prodotto (stesso tipo di dati...numerico lungo della TabProdotti)
IDPrezzo (stesso tipo di dati...numerico lungo della TabPrezzi)
Quantità
IVA ecc.
Relazioni:
IDCliente (TabClienti) e Cliente (TabOrdini) = uno a molti referenziale
IDProdotto (TabProdotti) e Prodotto (TabPrezzi) = uno a molti referenziale
IDProdotto (TabProdotti) e Prodotto (TabOrdini) = uno a molti referenziale
IDPrezzo (TabPrezzo) e IDPrezzo (TabOrdini) = uno a molti
Con questa struttura puoi fare tutto.
Ciao, Carlo 

Carlo Costarella ha scritto:

Non c'è verso adesso ricominciando da capo non riesco più a impostare
nemmeno le tabelle, dice che mancano campi correlati, ma non capisco
quali.
Pensare che l'altro mi funziona bene se tralasciamo il problema
dell'aggiornamento prezzo.
Ho deciso che getto la spugna.
Ti ringrazio infinitamente per la cortesia e la disponibilità.
Ciao, Mauro.

 ha scritto nel messaggio 
news:1165255059....@16g2000cwy.googlegroups.com...
Cut
Non c'è verso adesso ricominciando da capo non riesco più a impostare
nemmeno le tabelle, dice che mancano campi correlati, ma non capisco
quali.
Pensare che l'altro mi funziona bene se tralasciamo il problema
dell'aggiornamento prezzo.
Ho deciso che getto la spugna.
Ti ringrazio infinitamente per la cortesia e la disponibilità.
Ciao, Mauro.
------------------
Facciamo una cosa, mandami il db zippato, che vedo cosa posso fare e ti 
scrivo due note di spiegazione.
Ciao, Carlo 

Carlo Costarella ha scritto:

Ho già provveduto. 
non so come ringraziarti.
ciao, Mauro.

 ha scritto nel messaggio 
news:1165256875.4...@80g2000cwy.googlegroups.com...
cut
Ho già provveduto.
non so come ringraziarti.
ciao, Mauro.
---------------------------------------
Ho provveduto a rispedirtelo con le correzioni.
Speriamo bene!
Ciao, Carlo