PDA

View Full Version : [ACCESS] limitare controllo ciclo if


pumppkin
07-01-2006, 15:08
Praticamente ho una maschera in cui sono contenuti i campi ID,NOME,COGNOME,DATA DI NASCITA, TOTALE DONAZIONI e DATA DONAZIONE; quello che gli devo far fare è un controllo sul TOTALE DONAZIONI in modo che non appena il totale arriva a 8 mi salva in una tabella il nome, cognome e data di nascita della persona.
Praticamente il codice per fare questo controllo l'ho già scritto e funziona (è stato scritto su Form_current)...solo che ogni volta che riapro la maschera mi dà un errore in quanto c'è un tentativo di duplicazione di un record, questo perchè ogni volta che apro la maschera lui effettua di nuovo il controllo del ciclo if e vede il totale ad 8.
C'è un modo per risolvere questo problema? cioè una volta che è stato salvato il record nella tabella non viene più eseguito il ciclo if...

Minelab
08-01-2006, 09:39
Se nella tabella di destinazione c'è già quel nome, cognome e data di nascita ignora il comando.
Soluzione forse più elegante:
esegiure il controllo al momento dell'inserimento della donazione.
Se n°donazione per quel nome, cognome, ecc.. = 8 aggiungi all' altra tabella altrimenti no. In questo modo non devi ripetere tutti i cicli ogni volta che apri la maschera.

pumppkin
08-01-2006, 16:54
Ho provato a mettere il controllo all'inserimento della data ma non mi funziona perchè non riesce a prendere il totale delle donazioni dalla maschera principale (l'inserimento della data donazione avviene in una seconda maschera)

Minelab
09-01-2006, 17:19
Ma il conteggio lo esegui con DCount? Questo dipende dalla tabella quindi di problemi non dovresti averne. Ricordati che non conta i record non salvati (tipicamente quello che stati inserendo)

pumppkin
09-01-2006, 19:48
Praticamente c'è un'etichetta che visualizza il totale delle donazioni...questo totale se lo calcola tramite una query che ho scritto...

Minelab
09-01-2006, 20:22
Prova con DCount invece che con la query.

pietro s.
10-01-2006, 15:05
Ciao, innanzitutto ti consiglio di non usare access, ma di imparare ad usare Oracle. Potrebbe esserti di aiuto in futuro.
Puoi scaricare la versione Express appena uscita (beta).
Ti consiglio di scriverti un bel programma in pl-sql.

ciao

pumppkin
14-01-2006, 12:32
Scusate se rispondo solo adesso ma per ora ero fuori casa...allora...ho provato ad utilizzare Dcount ma, quando inserisco una nuova data che fa arrivare il conteggio ad 8, mi dà come errore <Impossibile trovare il campo "Forms" a cui si fa riferimento nell'espressione>...
...io avevo scritto così:
If DCount("*", "Forms!donazioni", [ID] = DLookup("trovaid", "id")) = 8 then ....

(la funzione dlookup mi serve per trovare l'id della persona che ho appena inserito)

...
per pietro s.

Come puoi vedere non sono molto esperto di database, sto imparando un'pò alla volta...oracle lo so utilizzare solo per scrivere codice sql e non pl/sql (anche se mi piacerebbe imparare)...e infine questo piccolo database che sto facendo lo devo dare ad alcune persone che di computer ne capisco poco quindi mi serviva un programma con interfaccia semplice e chiara da gestire...

Minelab
14-01-2006, 15:42
Se fosse per me farei in questo modo:
Dim x As String
Dim y As String
Dim z As Variant
x= [Nome]
y=[Cognome]
z=[Data di Nascita]
If DCount("[Nome campo che voglio contare]*", "Nome tabella in cui è contenuto","[Nome]=x And [Cognome]=y And [Data di nascita]=z")+1=8 Then
salva nell'altra tabella
End If
*puoi usare indifferentemente uno dei tre campi usati nelle condizioni perchè sono proprio questi che stabiliscono i criteri per avere il conteggio richiesto.
Il +1 serve perchè il record sul quale stai lavorando attualmente non viene considerato da Dcount perchè non ancora salvato