|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
[ACCESS] limitare controllo ciclo if
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... |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Mar 2003
Città: Provincia di Como
Messaggi: 223
|
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. |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
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)
|
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Mar 2003
Città: Provincia di Como
Messaggi: 223
|
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)
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
Praticamente c'è un'etichetta che visualizza il totale delle donazioni...questo totale se lo calcola tramite una query che ho scritto...
|
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Mar 2003
Città: Provincia di Como
Messaggi: 223
|
Prova con DCount invece che con la query.
|
![]() |
![]() |
![]() |
#7 |
Junior Member
Iscritto dal: Jan 2006
Città: Messina
Messaggi: 5
|
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 |
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: Feb 2005
Messaggi: 295
|
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... |
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Mar 2003
Città: Provincia di Como
Messaggi: 223
|
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 |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:46.