Newsgroup: it.comp.appl.access
Titolo: AIUTO per contare

Ciao a tutti, ho un problema che non riesco a risolvere non essendo molto
ferrato.
Ho fatto molte prove ma ormai ho perso le speranze. Ora vi spiego.
Sostanzialmente devo aggiungere un record con un numero progressivo.
Ho un DB che tra le varie tabelle ne contiene una chiamata PROGETTI che
contiene i campi ANNO e NUMERO (es 2002 e 001, 2002 e 002, 2002 e 003 ecc) e
una chiamata ANNI che contiene il campo ANNO (es 2002,2003,2004 ecc)
Io da un form, cliccando un pulsante ottengo l'apertura di un secondo form
con una casella combinata che contiene un elenco degli anni e scegliendo un
valore ottenere quanti record sono già presenti nella tabella progetti
corrispondenti allo stesso anno.
Il numero ottenuto devo incrementarlo ed inserirlo nella tabella PROGETTI
come un nuovo record con NUMERO corrispondente a quanto calcolato e ANNO
scelto in precedenza.
grazie, Dario

 ha scritto nel messaggio
news:%8pK9.14835$ab2.4...@news1.tin.it...

Beh, ci sono diverse cosette da sistemare nel tuo database.
Per prima cosa non devi contare quanti record hai nella tabella per un
determinato anno, per poi sommarci 1 ed attribuire il risultato ad un nuovo
record progetto per quell'anno; facendo così possono crearsi dei numeri
doppi: se per un anno ci sono 9 progetti numerati fa 1 a 9, se devi
cancellare il record del progetto numero 5 e poi inserire un nuovo progetto,
contando i record ti risulteranno 8, per cui assegnerai al nuovo record il
numero 9 che già esiste; per ovviare a tale problema non devi contare i
record già presenti in tabella per un determinato anno, ma ricavarti il
numero più alto per quell'anno e sommare uno ad esso: nell'esempio che
stavamo discutendo il numero massimo risulterà 9, al quale sommerai 1,
ottenendo 10 che è il numero giusto per il nuovo progetto per quell'anno.
Eviterei poi di crearmi una tabella chiamata ANNI, che mi sembra che esista
solamente per servire da origine riga alla casella combinata con la quale
scegli l'anno.
Se la casella combinata in questione si chiama ANNO, fai in modo che abbia
una sola colonna; imposta a Elenco valori la proprietà Tipo origine riga
della casella combinata (invece che a Tabella/query, come penso tu abbia
fatto); nell'origine riga della casella combinata scrivi:
2002;2003;2004;2005;2006
Così facendo eviti una tabella.
Infine non capisco per quale motivo devi crearti ed aprire una maschera che
serve solo a scegliere con una casella combinata l'anno da inserire nel
controllo della maschera associato al campo ANNO della tabella PROGETTI.
Inserisci la casella combinata (con le caratteristiche sopra scritte) nella
maschera principale ed associa ad essa il campo ANNO della tabella PROGETTI:
ed il gioco, ai fini della scelta dell'anno, è fatto.
Passiamo ora a risolvere il problema del numero progressivo nell'ambito
dell'anno scelto con la casella combinata.
Se il controllo che è associato al campo NUMERO della tabella PROGETTI si
chiama anche lui NUMERO, per ottenere il giusto numero progressivo da
assegnare al campo NUMERO per l'anno scelto, a fronte dell'evento "Dopo
aggiornamento" della casella combinata ANNO genera il seguente codice VBA:
Private Sub ANNO_AfterUpdate()
Me!NUMERO = DMax("NUMERO", "PROGETTI", _
"ANNO=" & Me!ANNO) + 1
End Sub
Dovrebbe funzionare; facci sapere.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 grazie, Dario
Saluti

 ha scritto nel messaggio
news:0WpK9.11484$TC5.3...@twister1.libero.it...

Viste lemie scarse capacità naturalmente non funziona!
ottengo Errore di Run-time 3464 - tipi di dati non corrispondenti
nell'espressione criterio
Perchè?
ciao
Dario

 Perchè?
Perchè probabilmente Roberto intende anno un vaore numerico tu testuale: se
è così o cambi il formato oppure il criterio è "anno =" & "'" & Me![anno] &
"'"
fammi sapere se c'ho imbroccato
ciao MAssimiliano
--------------------------------
Inviato via 
http://usenet.libero.it

 ha scritto nel messaggio
news:atdave$7cf$1...@atlantis.cu.mi.it...

IO HO SCRITTO
Dim rst1 As Recordset
Dim db As Database
Set db = OpenDatabase("C:\WINDOWS\Desktop\lavorazioni giornaliere.mdb",
True)
Set rst1 = db.OpenRecordset("SELECT Count(progetti.NUM) AS ConteggioDiNUM" &
_
"FROM progetti" & _
"GROUP BY progetti.ANNO" & _
"HAVING (((progetti.ANNO) = [Forms]![nuovo progetto]![Elenco16]))" & _
";", dbOpenDynaset)
rst1.MoveFirst
numprogr = Val(rst1.Fields("NUM")) + 1
QUI SI GENERA UN ERRORE DI RUN-TIME 3141"L'istruzione SELECT include una
parola riservata o un argomento scritto in modo errato o mancante oppure la
punteggiatura non è corretta"
Il problema è che a me sembra giusta.
ciao Dario



forse e' meglio numprogr = Val(rst1.Fields("ConteggioDiNUM")) + 1
vado a naso perche' non ho ora il tempo di soffermarmi
Saluti
Giuliano

 Inviato via 
http://usenet.libero.it
Si c'hai imbroccato!
nella tabella l'anno l'avevo impostato come testo.
Ti ringrazio e a questo punto tenderi ad approfittare.............
Se in un form ho una serie di radiobottoni che corrispondono ai vari anni,
come faccio a far riempire una combo con solo i progetti che corrispondono
all'anno scelto?
Grazie se puoi aiutarmi
ciao Dario


Se i radiobottoni li hai raggruppati all'interno di un Gruppo di opzioni
chiamato Paperino.
Se la maschera si chiama Maschera1.
Se la combo si chiama Minnie.
Imposta il Valore predefinito del Gruppo di opzioni con:
= Year(Date())
Come Valore opzione di ogni radiobottone scrivi il valore dell'anno che
rappresenta il radiobottone (2000, 2001, 2002 ecc.)
Nella query che è origine riga della combo, nei criteri del campo che
contiene l'anno scrivi:
Forms!Maschera1!Paperino
A fronte dell'evento "Dopo aggiornamento" del gruppo di opzioni genera il
seguente codice VBA:
Private Sub Paperino_AfterUpdate()
Me!Minnie.Requery
End Sub
Buon Natale e felice Anno Nuovo.
