Newsgroup: it.comp.appl.access
Titolo: limite per DMax

Ringrazio prima di tutto chi mi ha aiutato nel mio msg precedente, ma devo
ancora ricorrere al vostro aiuto (comunque sto studiando intensamente
access).
Sto utilizzando (come mi avete suggerito) la funzione DMax per ottenere
l'ultimo numero di ordine, ma la funzione mi ritorna sempre solo 99 come
numero max, mentre se controllo con DCount mi ritorna il numero corretto
dell'ultimo record.
Ho provato ad utilizzare una tabella di prova e tutto funziona
regolarmente, per cui sembrerebbe esserci una limitazione nella tabella
Ordini.
Dove puo' essere sistemata questa limitazione (ricordo a chi non avesse
letto il msg precedene che sto mettendo le mani in un lavoro fatto da un
collega che si licenziato, per cui non ho motlo a disposizione se non
guardare il codice).
Grazie
              Laura Pezzolli
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

              Laura Pezzolli
DCount e DMax fanno cose differenti come puoi notare leggendo l'help in linea; quindi devi decidere se vuoi ottenere (contare) il 
numero dei record inseriti (DCount) oppure vuoi ottenere il numero massimo inserito in un campo (DMax)... A te la scelta...
Ciao.
-- 
Sergio MAZZA 

 Ciao.
Non mi sono spiegata bene, 
io vorrei ottenere il Massimo valore inserito in un campo, ma utilizzando
quella determinata tabella (Ordini) il valore che ottengo è sempre 99 se i
record sono piu' di 100, il valore esatto se i record sono meno di 100.
Funziona regolarmente con altre tabelle compresa una di prova che ho fatto
io
Quello che non riesco a trovare è dove intervenire per correggere visto
che non sembra che ci siano limitazioni di sorta.
Ho utilizzato DCount per controllare se questa funzione ritorna il numero
di record esatto della tabella e questo funziona.


 di record esatto della tabella e questo funziona.
Dcount non ti serve per questo.
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG


DMax("NomeCampoNumerico","Ordini") ti da il massimo valore del campo 
numerico della tabella Ordini.
Dmax funziona benissimo da sempre, ma forse vuoi fare un'altra cosa o al 
limite è rovinata
la tabella Ordini. Prova a fare compatta e ripristina.
Ciao.

 Ciao.
Ho provato a fare compatta e ripristina ma il valore ritornato è sempre
99, sono invece presenti 253 record che rispondono ai criteri e ovviamente
il valore max è 253.
A me serve mettere in automatico il valore dell'ultimo ordine+1 nella
maschera per un nuovo ordine.
Ciao e grazie



E' un campo contatore?
E' un campo numerico normale?
Mi puoi postare il codice che scrivi?
Questa riga deve funzionare
DMax("NomeCampoNumerico","Ordini")
altrimenti postami solo la tabella ordini del database e vediamo dove è 
l'errore
Ciao ;-) 

 @Alex
Forse ho trovato l'inghippo nella tabella Ordini il campo
NumeroOrdineAcquisto è un campo di tipo testo e non numerico, solo che è
collegato con molte altre tabelle.
Comunque la funzione Dmax che ho scritto è:
DMax("[NumeroOrdineAcquisto]", "Ordini", "year(DataOrdine) = 2005" & " AND
[IDCasa] = 42 ")
dove i parametri year e IDCasa li ho messi per fare una selezione di
prova.                  


 prova.
BINGO.
Che dire, se è testo non c'azzecca nulla con i numeri, quindi
il criterio applicato non soddisferà mai quello numerico.


 Ciao ;-)
Ho provato ad esportare la tabella in un db nuovo per provarla e l'errore
si ripete per cui è qualcosa legato alla tabella.
Il campo NumeroOrdineAcquisto è un campo testo e non me lo fa cambiare con
numerico in quanto "Impossibile modificare questa proprietà in tabelle
collegate", anche se il campo non è direttamente collegato a nessuna
tabella e la tabella è la sola presente nel db di prova.
Struttura della tabella Ordini:
IDOrdine: contatore (chiave primaria)
IDCliente: numerico
IDCasa: numerico
Data:: data/ora
NumeroOrdineAcquisto: testo
poi tutti i campi di descrizione dell'ordine tipo dati e indirizzo di
fattturazione e di consegna 


 prova.
Se il campo IDCasa è quello testuale puoi provare con la funzione CInt (vedi help):
DMax("[NumeroOrdineAcquisto]", "Ordini", "year(DataOrdine) = 2005" & " AND CInt([IDCasa]) = 42 ")
Se però hai dei campi vuoti dovrai gestire anche quelli con la funzione Nz (vedi help):
DMax("[NumeroOrdineAcquisto]", "Ordini", "year(DataOrdine) = 2005" & " AND CInt(Nz([IDCasa];0)) = 42 ")
Ciao.
-- 
Sergio MAZZA 


non te lo fa cambiare perche apri il db sbagliato, tu apri quello con i 
collegamenti al vero db.
Ciao ;-) 

Scusa mi spiego meglio sulla tabella ordini, vicino a sinistra dovresti 
avere una piccola freccia.
Tasto destro su Tabella Ordini poi Gestione Tabelle Collegate e vedi il 
percorso del vero
Database.
Ciao. 

 Ciao.
Non c'e' la voce Gestione tabelle collegate nel menu' contestuale del dx
sulla tabella ordini ma ho comunque trovato il vero db.
è per questo motivo che mi visualizza sempre 99 come valore di Dmax nella
mia interrogazione?
come faccio a bypassare il tutto?
Grazie per il disturbo che vi arreco, ma mi state insegnando molte cose
che se imparate sui libri non sono la stessa cosa



decisamente nessun disturbo, se siamo qui è perchè tutti abbiamo da imparare 
;-)