Newsgroup: it.comp.appl.access
Titolo: SQL, Date e compagnia bella...

La situazione è grave. Pensavo di avere scritto codice funzionante ma devo
ricredermi.
Vi sottopongo delle righe che ho messo nel 'Form_Load', che dovrebbe fare le
seguenti cose.
Sapendo che:
- nella tabella 'tblScadenze' sono memorizzate Data, Descrizione della
scadenza, due campi si/no (relativi a un 'OK' e 'Old', rispettivamente per
sapere se la scadenza è stata rispettata e se è vecchia rispetta alla data
odierna)
- il codice è caricato con la finalità di verificare tutte le scadenze
memorizzate e con campo 'Ok=0' (scadenza non soddisfatta)
- per tutti i record trovati il codice verifica se la 'Data' è antecedente
ad oggi
- in tal caso il campo 'Old' viene impostato=-1 (così la volta successiva
non viene analizzata la data)
- i record vecchi vengono messi in coda all'elenco delle scadenze (maschera
continua) (la maschera si appoggia su una query che ordina inizialmente per
il campo'Old', e poi per 'Data'.... non sapevo come farlo da codice così ho
dovuto adottare il sistema della query!)
Problema: qualcosa non funge!
- Tutti i record sono impostati con 'Old' =-1 anche se non è vero (a parte
l'ultimo caricato...)
- L'ordinamento non funzica
Segue il codice: se riuscite a dargli un'occhiata, mi date qualche dritta?
'*********************
Dim scad, Crit, Oggi 'rispettivamente cosa voglio aprire e quali criteri
valuto e la data di oggi
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb()
scad = "SELECT * FROM tblScadenze WHERE tblScadenze.Old=0;"
Set rs = db.OpenRecordset(scad)
Oggi = Now()
Oggi = Format(Oggi, "short date")
Crit = "DataScadenza < #" & Oggi & "#"
rs.FindFirst Crit 'cerchiamo il primo record che soddisfa i criteri
    Do Until rs.NoMatch 'e proseguiamo fintanto che ce ne sono!
        With rs
            .Edit
            !Old = -1
            .Update
            .FindNext Crit
        End With
    Loop
rs.Close 'chiudiamo il recordset
Set db = Nothing
Me.Requery
'*********************



secondo me è sbagliata la teoria alle spalle.
non vedo il modivo di usare questa procedura....
puoi risolvere il tutto tramite query
su ok metti se il pagamento è stato effettuato?
se si puoi fare una query dove ordinerai nell'ordine per ok e per
datascadenza 
per sapere quelli con la data di scadenza minore di quella di oggi
puoi crearti un ulteriore campo calcolato con la data inferiore o
maggiore a date()
Saluti.
Emanuele.

 dovuto adottare il sistema della query!)
Perche' incasinarsi col codice quando si puo' utilizzare una bella stringa SQL? 
UPDATE tblScadenze SET Old=-1 WHERE Old=0 AND Ok=0 AND Data<now()
La lanci con Docmd.Runsql prima di aprire la maschera. 
Cia' 
"Roccia" Max De Poli

 La situazione è grave. Pensavo di avere scritto codice funzionante ma devo
Ma perche' non aspetti un po' le risposte prima di postare di nuovo la
domanda?
Sib

"Sib" <si...@SPAMiol.it> ha scritto nel messaggio
news:C1Nh8.45758$Ns4.1...@news2.tin.it...

Disguido: ho usato OE offline per 5 giorni e ho pasticciato un po'.
Spero di non avere dato fastidio, starò più attento. Haloa

 Spero di non avere dato fastidio, starň piů attento. Haloa
Sai com'e', ogni volta che mi collego devo scaricare 300 messaggi che
potrebbero essere meno se si evitassero ripetizioni (almeno a breve)
messaggi di prova (del tutto inutili dato che esistono appositi gruppi) ecc
ecc.
Sib