Newsgroup: it.comp.appl.access
Titolo: Valorizzare controllo maschera continua

Mi sto impantanando....
Devo assegnare in automatico un punteggio da 1 a 10 ad alcuni record
in base ad un certo valore.
Maschera continua ..... origine controllo di Punteggio = iif(bla bla
bla;10;iif(ble ble ble;9;iif(.......)))))))
E tutto funziona ma se la graduatoria non è più da 1 a 10 devo
tagliare o aggiungere il lunghissimo iif. Cerco il salto di qualità.
Provo allora a mettere insieme un po' di codice e mixando un po' di
querydef, Do Until e If ...then riesco (non senza fatica) ad ottenere
il valore di punteggio.
Ma adesso come e dove lo assegno al controllo punteggio nella maschera
continua???
Mi è venuto il dubbio che non sia possibile!
Come ne esco ? Come posso risolvere un problema di questo tipo?
Mi potete indicare qualche riga di esempio?

On 23 Lug, 10:50, Classe Quarta B 5° Circolo Didattico Bologna

così a occhio e croce da mero smanettone quale sono, ti basta creare
in un modulo una function (vedi help in linea)
e poi nella maschera in origne controllo la richiami scrivendoci:
= miafunzionechecalcolapunteggio(mioparametro)
Esempio:
Public Function CheckPIvaDoppie(Piva As String) As Boolean
CheckPIvaDoppie=False
   Dim MyConteggioPIVA As Integer ' controlla eventuali duplicati
        MyConteggioPIVA = DCount("[P_IVA]", "T_Anagrafica", "[P_IVA]=
'" & Piva & "'")
        If MyConteggioPIVA > 0 Then CheckPIvaDoppie = True
End Function
in una maschera potrtesti far vedere il risultaot della funzione (vero
o falso) in un controllo assegnandogli come origine = CheckPIvaDoppie
([NomeCampochecontinePIva])
F.

 = miafunzionechecalcolapunteggio(mioparametro)
E infatti avevo pensato prorio di fare cos�
ho creato la function, ho tagliaincollato il codice che avevo inserito nella
maschera ma mi sembrava che mi saltassero fuori tutta una serie di problemi
sulla creazione del recordset ....
boh ... adesso riprovo un po'
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha 
scritto nel messaggio 
news:5f61ab7a-28bd-4fcf...@26g2000yqk.googlegroups.com...
Mi sto impantanando....
Devo assegnare in automatico un punteggio da 1 a 10 ad alcuni record
in base ad un certo valore.
Maschera continua ..... origine controllo di Punteggio = iif(bla bla
bla;10;iif(ble ble ble;9;iif(.......)))))))
E tutto funziona ma se la graduatoria non � pi� da 1 a 10 devo
tagliare o aggiungere il lunghissimo iif. Cerco il salto di qualit�.
Provo allora a mettere insieme un po' di codice e mixando un po' di
querydef, Do Until e If ...then riesco (non senza fatica) ad ottenere
il valore di punteggio.
Ma adesso come e dove lo assegno al controllo punteggio nella maschera
continua???
Mi � venuto il dubbio che non sia possibile!
Come ne esco ? Come posso risolvere un problema di questo tipo?
Mi potete indicare qualche riga di esempio?
----------------------------------
Crea una funzione...
Private Function Punteggio(MioValore As Integer)
Select Case MioValore
Case 1
  Punteggio="quello che ti pare"
Case 2
  Punteggio="quello che ti pare"
Case 3
    Punteggio="quello che ti pare"
Case Else    ' Altri valori.
    Punteggio="quello che ti pare"
End Select
End Function
poi nella maschera continua metti nell'origine del campo
=Punteggio(tuovalore)
chiaro? 

Allora:
Public Function punti(punteggio As Integer)
N = 1
CONT = 1
PENALE = 0
punteggio = 0
Set db = CurrentDb
Set qdf = db.QueryDefs("economicità - conteggio")
qdf.Parameters......
Set rst = qdf.OpenRecordset()
If rst.EOF Then
    MsgBox "Nessun dato"
    Exit Function
End If
rst.MoveFirst
Do Until CONT = Forms!economicità!Maxpunt
    Do Until punteggio > 0
        If Forms!economicità![sottomaschera punteggio]![cop] <= Forms!
economicità!MinCop + Forms!economicità!Passo * N Then
            punteggio = Forms!economicità!Maxpunt - PENALE
            'Forms!economicità![sottomaschera punteggio]!punteggio =
punteggio & " - " & rst!rif_pa
            rst.MoveNext
            punteggio = 0
            PENALE = 0
            N = 1
        Else
            PENALE = PENALE + 1
            N = N + 1
        End If
    Loop
    rst.MoveNext
    CONT = CONT + 1
    punteggio = 0
Loop

 punteggio = 0
non sono andato oltre perch� gi� qu� hai commesso un errore... se
"punteggio" � la variabile della funzione (punteggio As Integer) che passi
sul singolo record della tua form (=punti(tuovalore)), non devi azzerarlo
come hai fatto qu�... altrimenti fino a PENALE=0 manterr� il valore
ottenuto dal record del Form, e subito dopo sar� 0, bypassando in questo
modo tutti i tuoi controlli successivi rispetto a valori diversi da 0
non s� se ho reso l'idea.
-- 
Ciao
Pablitomf
----------------------------
http://www.accessgroup.it/
----------------------------
Non mi fido molto delle statistiche, perch� un uomo con la testa nel forno
acceso e i piedi nel congelatore statisticamente ha una temperatura media.
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Allora questa è la mia situazione   :
Public Function punti(punteggio As Integer)
...
    Do Until punteggio > 0
        If Forms!MiaSottomaschera![cop] <= Forms!MiaMaschera!MinCop +
Forms!MiaMaschera!Passo * N Then
            punteggio = Forms!MiaMaschera!Maxpunt - PENALE
 ------>      vorrei veder assegnato in MiaSottomaschera!punteggio il
valore del punteggio calcolato
            rst.MoveNext
            punteggio = 0
            PENALE = 0
            N = 1
        Else
            PENALE = PENALE + 1
            N = N + 1
        End If
    Loop
....
Se non si capisse è la prima volta che provo a creare e ad assegnare
un valore da funzione.

 un valore da funzione.
si si � capito non temere... ma hai un p� di confusione eccessiva a
riguardo...
una funzione � un elenco di istruzioni che ti restituisce in nome della
funzione stessa un valore...
LEGGI questo Esempio.
Private Function MiaFunzione(MioValore As Integer)
  If MioValore = 1 then
     MiaFunzione=0
     Exit Function
  End If
  If MioValore = 2 then
     MiaFunzione=1
     Exit Function
  End If
End Function
guarda la distinzione tra nome funzione che � "MiaFunzione" e il parametro
che la funzione si aspetta per procedere ad eseguire le sue istruzioni
"MioValore" (tu gi� in questa distinzione hai fatto casino)...
come richiamo la funzione?
nel campo dell'SQL su cui baso la form pongo un campo a : 
CAMPOCONTROLLO : MiaFunzione([CampoValoreParametro])
in questo modo ad ogni record, verr� attivata la funzione, e verr� passata
alla variabile MioValore, il contenuto del campo "CampoValoreParametro"...
mettiamo il caso che il "CampoValoreParametro" sia 1, la funzione (quindi
il CAMPOCONTROLLO, ti ritornerebbe il valore 0, perch� vedrebbe la
variabile = 1, farebbe la if, e assegnerebbe cos� a MiaFunzione il valore
0 come impostato nella funzione stessa alla riga sotto...
  If MioValore = 1 then
     MiaFunzione=0
     Exit Function
  End If
chiaro?


 non sò se ho reso l'idea.
ok penso di aver capito .... ho modificato il codice sostituendo a
PUNTEGGIO un variabile PUNTO e soltanto nel  ... punto chiave ho
inserito che PUNTEGGIO = PUNTO
ma anche così mi segnala errore.
Scusa una cosa ... quando dici =punti(tuovalore)  intendi =punti
([punteggio]) o sbaglio anche qui?
Scusate il doppio invio ma ultimamente ho problemi ad inviare
messaggi... sarà il caldo

 non s� se ho reso l'idea.
ok penso di aver capito .... ho modificato il codice sostituendo a
PUNTEGGIO un variabile PUNTO e soltanto nel  ... punto chiave ho
inserito che PUNTEGGIO = PUNTO
ma anche cos� mi segnala errore.
Scusa una cosa ... quando dici =punti(tuovalore)  intendi =punti
([punteggio]) o sbaglio anche qui?
Scusate il doppio invio ma ultimamente ho problemi ad inviare
messaggi... sar� il caldo
[risposta] ogni tanto non mi funzionano i rientri
Punteggio � il campo x della tua "tabella??" da cui proviene questo valore:
...
Devo assegnare in automatico un punteggio da 1 a 10 ad alcuni record
***in base ad un certo valore***.
...
quindi come ti ha scritto Maurizio nella tua "query??" o dove inserici la 
funzione sar� il nome di quel campo, mentre nella tua funzione sar� la 
variabile con il valore che ti serve per calcolare il risultato di punti che 
ti sar� poi ritornato nella tua "query??".
Ciao, Valerio.